Re: [firebase-br] Estou migrando dados do Fb3.0 para Fb4.0

Gladiston Santana via lista <[email protected]>
Newsgroups gmane.comp.db.firebase.portuguese
Message-ID <CALv8-NNTJ7xiDYgCGfXqEmoMTA=dDEnrx969KOKTwavnU2BN-Q@mail.gmail.com>
O que você parece desejar é fazer uma replicação. Sim, você pode. No
entanto, os dados a serem transferidos, em especial, os nomes dos campos já
são conhecidos então não vejo porque tentar descobrir os nomes deles via
código (o que também seria possível), apenas expressamos tais nomes e segue
o jogo.
Você não precisa de que seja uma stored, pode ser simplesmente um script
rodando periodicamente via agendador de tarefas ou via triggers na tabela
que desejo replicar.

Um abraço

Em seg., 18 de mar. de 2024, 17:27, Mário Reis <[email protected]>
escreveu:

> Enquanto os colegas continuam carregando dados na minha aplicação FB3.0
> que vou lendo para carregar novos registos no fb4.0 surgiu a necessidade de
> algumas vezes em vez de fazer Insert into
> table_xpto fazer um UpDate Table_Xpto.
> Contudo, só quero atualizar os campos com dados diferentes (mais
> atualizados, porque guardo as datas das atualizações dos campos mais
> relevantes. Então preciso fazer algo como fazemos
> no fazemos no Delphi, como se exemplifica
> do FB30
>    sSql= TRIM(
>    ' SELECT '||
>
>    ' P.PESSOA_ID, P.TITULO_ID, P.APELIDO, P.NOME, P.TIPO_ID, P.NOBI,
> P.ARQIDENT, P.DATEMIBI, P.SEXO)
>    ' FROM PESSOAS P '||
>    ' INNER JOIN SOCIOS S ON S.SOCIOS_ID=P.PESSOA_ID '||
>    ' WHERE S.NOSOC_ID >= '||TRIM(CAST( IN_ID AS VARCHAR(15)) )
>    );
>   FOR
>    EXECUTE STATEMENT
>       ( :sSql )
>       ON EXTERNAL DATA SOURCE :sDB
>       AS USER :IN_USER PASSWORD :IN_PWD -- just for example
>       WITH COMMON TRANSACTION -- note autonomous transaction
>       INTO
>      :PESSOA_ID, :TITULO_ID, :APELIDO, :NOME, :TIPO_ID, :NOBI, :ARQIDENT,
> :DATEMIBI, :SEXO);
> -- Agora vai inserir na FB4
> If row_count()=0 then
>    EXECUTE PROCEDURE PESSOAS_INS(
>       :PESSOA_ID,
>       :TITULO_ID,
>       :APELIDO,
>       :NOME,
>       :TIPO_ID,
>       :NOBI,
>       :ARQIDENT,
>       :DATEMIBI,
>       :SEXO)
> Else
> if row_count()=1 Then
>  begin
>
> For i:=o To FieldCount(()-1 Do   (* Favor ver abaixo a ideia*)
>    if field[i].type= FKData then
>     Set ( delphi_Field[i].Old_Data =delphi_Field[i].NewData
> esta mais antiga vem do FB4:=>      PESSOA_ID=:PESSOA_ID  (onde esta mais
> atual vem do FB3)
>      EXECUTE PROCEDURE PESSOAS_UPD(
>       :PESSOA_ID,
>       :TITULO_ID,
>       :APELIDO,
>       :NOME,
>       :TIPO_ID,
>       :NOBI,
>       :ARQIDENT,
>       :DATEMIBI,
>       :SEXO)
>    Tem como na Stored Procedure de Firebird fazer aquele automático que
> fazemos no delphi
> Alguém tem como ajudar?
>
> Com os meus melhores cumprimentos
> Mário Agostinho Reis
> 919262146
> Procedure AppendCurrent(Dataset:Tdataset);
> VAR
>   aField : Variant ;
>   i      : Integer ;
> BEGIN
>   // create a variant Array
>   aField := VarArrayCreate([0,DataSet.Fieldcount-1],VarVariant);
>
>   // read values into the array
>   for i := 0 to (DataSet.Fieldcount-1) do
>    if (DataSet.fields[i].FieldKind=fkData) then // Exclusivamente campo de
> dados
>      aField[i] := DataSet.fields[i].Value ;
>
>   DataSet.Append ;
>
>   // put array values into new the record
>   for i := 0 to (DataSet.Fieldcount-1) do
>     if (DataSet.fields[i].FieldKind=fkData) then // Exclusivamente campo
> de dados
>      DataSet.fields[i].Value := aField[i] ;
>
> end;
> Esta mensagem contém informação de natureza confidencial e é
> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
> receber este email agradecemos que não o copie nem o reenvie e que nos
> notifique do ocorrido através do email de resposta.
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.