José.
Nunca passei por isso...
Aliás... ainda nunca precisei.
Mas obrigado pela pergunta...
Sua necessidade me despertou o interese de pesquisar o assunto...
Olha só o que eu descobri:
A diferença de um atributo (dentro do Oracle) do tipo Date/DateTime para um TimeStamp é que o TimeStamp armazena os "milisegundos" além da Data e da Hora.
Certo?
Olha só o teste que eu fiz dentro do Oracle:
- Criei uma tabela que tivesse um campo desses:
create table teste
(id1 Number(9) Not Null
,tincl Date Null
,sincl Timestamp null
,obs VarChar2(50) null
);
alter table teste
add constraint teste_pk
primary key (id1);
-Criei uma Sequence e uma Trigger para alimentar essa tabela:
create sequence teste_an;
create or replace trigger teste_an1
before insert on teste for each row
begin
select teste_an.nextval into :new.id1 from dual;
:new.tincl := sysdate;
:new.sincl := systimestamp;
end;
/
Alimentei essa tabela:
insert into teste (obs) values ('Valor 1...')
insert into teste (obs) values ('Valor 2...')
insert into teste (obs) values ('Valor 3...')
Depois... fui ver o que tinha dentro dela:
select * from teste t
Viu??
Dentro do Oracle é tudo muito fácil....
hehehehe
Só até aqui também...
Pelo que eu entendi da sua pergunta...
Você precisa em Genexus, ler uma Tabela em Oracle e gravar as informações em uma base Postgress...
Bom... independente de como você vai acessar a base Postgress... você precisa primeiro fazer uma DataView para a tabela em Oracle, certo??
Eu costumo criar DataViews "na mão", pq além de ser mais rápido (pelo menos pra mim), eu seleciono só os campos que eu preciso...
Mas como nesse caso, não sei que tipo de dados no Genexus é equivalente ao TimeStamp do Oracle... vamos usar o DBRET do Genexus para isso, ok?
Veja só isso:
Tá vendo o aviso???
O Genexus não aceita campos do Oracle do tipo TimeStamp...
Como resolver isso??
Bom... se você não precisa da informação MILISEGUNDO que está armazenada nesse campo, sugiro a você, antes de criar a DataView, alterar o seu campo para DateTime...
Agora...
Se você realmente precisa dessa informação...
Faça o seguinte:
- Crie uma VIEW dentro do Oracle, separando a Data/Hora dos Milisegundos do campo TimeStamp que você precisa acessar:
create or replace view teste_view as
select t.id1, t.tincl, to_date(to_char(t.sincl,'dd/mm/rrrr hh:mi:ss'),'dd/mm/rrrr hh:mi:ss') datahora, to_char(t.sincl,'FF') mili, t.obs
from teste t
- Crie uma Transação no Genexus semelhante a sua VIEW criada:
- Crie uma DataView no Genexus, e associe-a com a Transação criada acima:
- No seu modelo de protótipo/produção configure o DataStore:
- Faça o Impacto da Base:
- Especifique... gere... compile... execute...
Ou como diriam os franceses:
VOILAT!!!
Vladimir Perche Cruz
Analista Senior GENEXUS 9.0
Tecnologia da Informação
A.W. Faber-Castell S.A.
São Carlos - São Paulo
+55 [16] 2106-1399
vladimir.cruz@faber-castell.com.br
| "Jose Vieira" <josesouzavieira@uol.com.br> 16/04/2010 15:59 |
|
Vladimir boa tarde,
Peguei seu e-mail no site de usuários genexus.
Veja se pode me ajudar, desde já muito obrigado.
Preciso acessar uma base Oracle para alimentar uma base postgre,e no Oracle tem um atributo timestamp, você sabe como acessar este atributo.
obrigado
Jose Vieira
CDS Informatica
(91) 8869-0223
(91) 3230-1010
--
Has recibido este mensaje porque estás suscrito al grupo "GeneXus" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a genexus@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a genexus+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/genexus?hl=es.
0 Response to "[csharp-l] Re: Genexus"
Publicar un comentario