Fórum Como criar SQL Inserts a partir de uma Query no Delphi #294789
08/09/2005
0
Estou criando um módulo de sistema onde o usuário executa uma query com dados de um Database. Eu preciso fazer com que os dados selecionados sejam inseridos em outra tabela com a mesma estrutura só que em outro database. Acontece que são muitas tabelas com muitos campos, o que tornaria trabalhoso conhecer todos os campos das tabelas, selecionar os dados da query gerada no DataBase1 e gravar no Database2.
Gostaria de saber se alguem conhece alguma forma de criar SQl Inserts a partir de uma Query gerada pela aplicação.
grato
Obs. Delphi 6 + Oracle 9i usando BDE.
Outl@w
Curtir tópico
+ 0Posts
08/09/2005
Outl@w
Gostei + 0
08/09/2005
Outl@w
Gostei + 0
08/09/2005
Xanatos
function RetornaNomeTabela(Sql: string):string; var i: integer; NomeTab: string; PosFrom: integer; Str: string[1]; begin Nometab:= ´´; PosFrom:= Pos(´FROM´,UpperCase(Sql)); Str:= ´ ´; for i:=PosFrom+4 to length(Sql) do begin if (Sql[i] <> ´ ´) then begin Nometab:= Nometab+ Sql[i]; Str:= ´.´; end else if Str= ´.´ then break; end; RetornaNomeTabela:= NomeTab; end; procedure TfrmGeraSql.sbSqlClick(Sender: TObject); var i: integer; CaminhoArq: string; Arq_Saida: TStringList; VetCampos: array [1..50] of string; ContCampos: integer; Valores: string; begin Arq_Saida:= TStringList.Create; SaveDialog1.InitialDir:= ExtractFilePath(Application.ExeName); SaveDialog1.Execute; CaminhoArq:= SaveDialog1.FileName; pbSql.Min:= 0; pbSql.Max:= Query1.RecordCount; pbSql.Position:= 0; ContCampos:= DBGrid1.Columns.Count; for i:= 0 to DBGrid1.Columns.Count-1 do begin VetCampos[i+1]:= DBGrid1.Columns.Items[i].FieldName; end; Query1.First; while not Query1.Eof do begin pbSql.Position:= pbSql.Position+1; Valores:= ´(´; for i:= 1 to ContCampos do begin if (Query1.Fields[i-1].DataType = ftString) then Valores:= Valores + ´´´´+ Query1.Fields[i-1].AsString + ´´´´ else Valores:= Valores + Query1.Fields[i-1].AsString; if i+1 <= ContCampos then Valores:= Valores + ´,´; end; Valores:= Valores + ´)´; Arq_Saida.Add(´Insert into ´+RetornaNomeTabela(SqlExec)+ ´ Values ´+ Valores); query1.Next; end; Arq_Saida.SaveToFile(CaminhoArq); Arq_Saida.Free; end;
Gostei + 0
08/09/2005
Outl@w
thanks
Gostei + 0
08/09/2005
Outl@w
Funcionou direitinho! Valeu!
Gostei + 0
08/09/2005
Xanatos
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)