Gravar conteúdo de um array via SQL
Olá!
A minha dúvida é a seguinte.
Eu tenho uma lista (array) e preciso, após o click em um botão, transferir o conteúdo deste array para uma tabela via SQL. Qual a melhor maneira de fazer isso?
Eu tentei executar essa tarefa utilizando um DataSet do meu Datamodule, simplesmente fazendo um loop, e em cada volta do loop, alterando o valor da propriedade InsertSQL, e em seguida chamando os métodos OPEN, INSERT, POST e CLOSE. Mas não deu certo.
Alguma idéia?
A minha dúvida é a seguinte.
Eu tenho uma lista (array) e preciso, após o click em um botão, transferir o conteúdo deste array para uma tabela via SQL. Qual a melhor maneira de fazer isso?
Eu tentei executar essa tarefa utilizando um DataSet do meu Datamodule, simplesmente fazendo um loop, e em cada volta do loop, alterando o valor da propriedade InsertSQL, e em seguida chamando os métodos OPEN, INSERT, POST e CLOSE. Mas não deu certo.
Alguma idéia?
Yankleber
Curtidas 0
Respostas
Cabelo
13/05/2004
Caro colega
Os campos deste vetor na tabela são fixos, isto é, sempre será inserido os dados do vetor nos mesmos campos da tabela, se forem, é simples..
primeiro dê um select na tabela que será inserido os campo..
query.sql.add(´select <campos> from <tabela>´);
query.open;
for v_i := 0 to length(<vetor>) - 1 do
begin
query1.sql.clear;
query1.sql.add(´insert into <table>(<campos>) values (<valor do campo 1 no array>, <valor do campo 2 no vetor>, ... , <valor do campo n no vetor>)´;
query1.execsql;
end;
//Não se esuqeça que vc deve utilizar dois DataSets distintos, um vc
//dá um select e outro vc executa os comando de inserção..
sem mais
Cabelo
Os campos deste vetor na tabela são fixos, isto é, sempre será inserido os dados do vetor nos mesmos campos da tabela, se forem, é simples..
primeiro dê um select na tabela que será inserido os campo..
query.sql.add(´select <campos> from <tabela>´);
query.open;
for v_i := 0 to length(<vetor>) - 1 do
begin
query1.sql.clear;
query1.sql.add(´insert into <table>(<campos>) values (<valor do campo 1 no array>, <valor do campo 2 no vetor>, ... , <valor do campo n no vetor>)´;
query1.execsql;
end;
//Não se esuqeça que vc deve utilizar dois DataSets distintos, um vc
//dá um select e outro vc executa os comando de inserção..
sem mais
Cabelo
GOSTEI 0
Yankleber
13/05/2004
Oi cabelo!
Obrigado pela resposta!
Estou contudo, passando por um probleminha ainda a respeito da mesma situação. Quando eu rodo o procedimento pela primeira vez, funciona perfeitamente, mas se eu rodá-lo novamente em seguida ocorre um erro bem na linha onde é executado o open no primeiro dataset. Veja abaixo o fonte:
Obrigado pela atenção!
Obrigado pela resposta!
Estou contudo, passando por um probleminha ainda a respeito da mesma situação. Quando eu rodo o procedimento pela primeira vez, funciona perfeitamente, mas se eu rodá-lo novamente em seguida ocorre um erro bem na linha onde é executado o open no primeiro dataset. Veja abaixo o fonte:
procedure TFITaxas.BtnGraClick(Sender: TObject); var z, zz : integer; begin // Deleta todos as taxas referentes ao item selecionado DadosSistema.IQryITaxas.SQL.Add(´select * from ITENSTAXAS´); DadosSistema.IQryITaxas.Open; ´O erro ocorre aqui, na segunda vez with DadosSistema.IQryGen.SQL do begin Clear; Add(´delete from ´); Add(´ITENSTAXAS ´); Add(´where ORCAMENTO_ID = ´´´ + EdSeq1.Text + ´´´ ´); Add(´and ITMITEM_ID = ´´´ + EdSeq2.Text + ´´´ ´); Add(´ ´); end; DadosSistema.IQryGen.ExecSQL; if lstSelec.Items.Count <> 0 then begin for z := 0 to lstSelec.items.count-1 do begin for zz := 0 to lstDisp.items.count-1 do begin if lstDisp.items[zz] = lstSelec.items[z] then begin with DadosSistema.IQryGen.SQL do begin Clear; Add(´insert into ´); Add(´ITENSTAXAS ´); Add(´(ORCAMENTO_ID,ITMITEM_ID,TIPOTAXA_ID) ´); Add(´values (´´´ + EdSeq1.Text + ´´´´ + ´, ´); Add(´´´´ + EdSeq2.Text + ´´´´ + ´, ´); Add(´´´´ + aDisp[zz] + ´´´´ + ´)´); Add(´ ´); end; DadosSistema.IQryGen.ExecSQL; end; end; end; DadosSistema.IBTransaction1.CommitRetaining; close; end else close; end;
Obrigado pela atenção!
GOSTEI 0
Yankleber
13/05/2004
Oi, sou eu de novo!
Esqueça, já encontrei o erro... é que faltou a seguinte linha antes da mesma onde está dando o erro:
Valeu!!!
Esqueça, já encontrei o erro... é que faltou a seguinte linha antes da mesma onde está dando o erro:
DadosSistema.IQryITaxas.SQL.Clear;
Valeu!!!
GOSTEI 0