Fórum DBGrid: Gravação no Banco de Dados #395687
14/02/2011
0
Como faço para gravar as informações alimentadas em dbGrid por um clientdataset diferente.
Exemplo:
Pelo dbnavigator, ao gravar ele vai inserir as informações de alguns campos no cds01.
Ó dbGrid é alimentado com a query do cds02, porém, quero gravar o que foi exibido no dbGrid no cds01.
It's possible?
Obrigado!
Elton Ésqui
Curtir tópico
+ 0Posts
14/02/2011
Diego Cavalca
Como faço para gravar as informações alimentadas em dbGrid por um clientdataset diferente.
Exemplo:
Pelo dbnavigator, ao gravar ele vai inserir as informações de alguns campos no cds01.
Ó dbGrid é alimentado com a query do cds02, porém, quero gravar o que foi exibido no dbGrid no cds01.
It's possible?
Obrigado!
No caso se quiser 'jogar' informações no cds01, com base nos dados do cds02, faz o seguinte...
//cds02 já carregado cds02.First; cds01.Close; cds01.CreateDataSet; //Percorre os valores alimentados do cds02 while not cds02.eof do begin //Aqui pode colocar algum filtro... cds01.insert; cds01CAMPO_1.value := cds02CAMPO_1.value; cds01CAMPO_2.value := cds02CAMPO_2.value; cds01.append; cds02.next; end;
[]'s
Gostei + 0
14/02/2011
Alison Bissoli
cds01.first;while not cds01.eof dobegin cds02.append; for i := 0 to cds02.fields.count begin cds02.fields(i).value := cds01.fields(i).value; end cds02.applyupdates(0);end;
--------------------------------------------http://garotodesktop.blogspot.com
Gostei + 0
14/02/2011
Alison Bissoli
cds01.first;while not cds01.eof dobegin cds02.append; for i := 0 to cds02.fields.count - 1; begin cds02.fields(i).value := cds01.fields(i).value; end cds02.applyupdates(0); cds01.next;end;
Gostei + 0
14/02/2011
Elton Ésqui
Gostei + 0
14/02/2011
Diego Cavalca
No caso, quer fazer por dbnavigator né?!
Se o dbnavigator estiver linkado no cds01, coloque no evento 'AfterPost' do cds01...
Se quiser colocar no 'click' do dbNavigator, vai ter que programar na mão...
if DBNavigator1.DataSource.DataSet.State in [dsInsert,dsEdit] then //Chama o código para gravar;
[]'s
Gostei + 0
14/02/2011
Marco Salles
Gostei + 0
15/02/2011
Elton Ésqui
Joguei no Google e veio: cds da novela o cloneBLAHHHHH
E então descobri que o correto seria: CloneClientDataSet...rsrs
Gostei + 0
15/02/2011
Marco Salles
Joguei no Google e veio: cds da novela o cloneBLAHHHHH
E então descobri que o correto seria: CloneClientDataSet...rsrs
Gostei + 0
15/02/2011
Elton Ésqui
Como faço agora para clonar de um DBGRID para o outro?
O código abaixo clona dentro do próprio DBGRID.
procedure TForm1.btnClonarRegistroClick(Sender: TObject); var varCdsClne : TClientDataSet; varI : Integer; begin varCdsClne := TClientDataSet.Create(Self); try varCdsClne.CloneCursor(TClientDataSet(cds1), True); cds1.Append; for varI := 0 to cds1.FieldCount - 1 do begin if (cds1.Fields[varI].FieldKind = fkData) then cds1.Fields[varI].Value := varCdsClne.FieldByName(cds1.Fields[varI].FieldName).Value; end; finally varCdsClne.Close; varCdsClne.Free; end; end;
PS: Ainda não toda essa intimidade...rsrs
Gostei + 0
15/02/2011
Marco Salles
Como faço para gravar as informações alimentadas em dbGrid por um clientdataset diferente.
Exemplo:
Pelo dbnavigator, ao gravar ele vai inserir as informações de alguns campos no cds01.
Ó dbGrid é alimentado com a query do cds02, porém, quero gravar o que foi exibido no dbGrid no cds01.
It's possible?
Obrigado!
Gostei + 0
15/02/2011
Elton Ésqui
Não é bem isso.
Eu tô fazendo uma coisa, que talvez tenha um caminho mais simples.
A parada é assim:
Tenho lá doi DBEdits, por exemplo
[edtNumero] [edtData] <--- Cds01
Então abaixo o DBGRID
[dataini] até [datafin] [OK] <--- Filtro
No DBGrid tenho o Cds02, porque tenho duas tabelas. Uma vou gravar as informações dos dois DBEdits incluindo algumas informações da outra tabela que é carregado do Cds02.
Se eu fizer assim:
Colocar no DBGrid o Cds01 e incluir dados na mão, grava de boa, mas o que eu preciso é gravar o resultado do DBgrid na tabela do Cds01.
Ai meu Deus, será que fui claro?...rsrs
Gostei + 0
15/02/2011
Marco Salles
Gostei + 0
15/02/2011
Elton Ésqui
Eu tentei implementar as dicas anteriores, mas não rolou.
Gostei + 0
15/02/2011
Diego Cavalca
Eu tentei implementar as dicas anteriores, mas não rolou.
Qual erro foi reportado no bloco de código 'WHILE'?
Gostei + 0
15/02/2011
Elton Ésqui
É como se não estivesse lendo.
Field 'NOTA' have a must value.
Esse erro da com ou sem o While, pois de fato não existe um campo com esses valores, os valores estão no DBGrid, que são carregado de outra tabela.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)