DBGrid: Gravação no Banco de Dados
Amigos,
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!
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
Curtidas 0
Respostas
Diego Cavalca
14/02/2011
Amigos,
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!
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
Alison Bissoli
14/02/2011
Mande gravar manualmente no seu cds02, algo como abaixo, nao estou seguro do codigo pois esetou sem a IDE mas dá para ter uma idéia espero.
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
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
Alison Bissoli
14/02/2011
correção...
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;
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
Elton Ésqui
14/02/2011
Desculpe minha inexperiência, mas em qual evento coloco isso?
GOSTEI 0
Diego Cavalca
14/02/2011
Desculpe minha inexperiência, mas em qual evento coloco isso?
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
Marco Salles
14/02/2011
Ó dbGrid é alimentado com a query do cds02, porém, quero gravar o que foi exibido no dbGrid no cds01
Mas para que vc quer isto????
O CloneCds não resolve ????
GOSTEI 0
Elton Ésqui
14/02/2011
E o que seria o CloneCds?
Joguei no Google e veio: cds da novela o cloneBLAHHHHH
E então descobri que o correto seria: CloneClientDataSet...rsrs
Joguei no Google e veio: cds da novela o cloneBLAHHHHH
E então descobri que o correto seria: CloneClientDataSet...rsrs
GOSTEI 0
Marco Salles
14/02/2011
E o que seria o CloneCds?
Joguei no Google e veio: cds da novela o cloneBLAHHHHH
E então descobri que o correto seria: CloneClientDataSet...rsrs
cloneCds para os intimos ... Para os demais é CloneClientDataSet
Joguei no Google e veio: cds da novela o cloneBLAHHHHH
E então descobri que o correto seria: CloneClientDataSet...rsrs
GOSTEI 0
Elton Ésqui
14/02/2011
Não consegui pensar direito :(
Como faço agora para clonar de um DBGRID para o outro?
O código abaixo clona dentro do próprio DBGRID.
PS: Ainda não toda essa intimidade...rsrs
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
Marco Salles
14/02/2011
Amigos,
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 deixa eu entender ..
Veja se é isto que vc quer ??
Vc tem um dbgrid alimentado por um ClientDataSet ()
Vc tem (1000) N_esimos registros neste ClientDatSet , mas o DbGrid visualiza uma quantidade de cada vez (correto)
Ai neste momento , vc insere mais um Registro , Mais outro , mais Outro .. Totalizado 1000+3 = 1003 Regustro
O que vc quer é esses Gravar esse Tres Registros ????
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
Elton Ésqui
14/02/2011
Oi Marco.
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
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
Marco Salles
14/02/2011
Mas esses clientDataSet tem estruturas diferentes .. Ou vc quer valores soemente de alguns Campo ???
Porque no inicio do seu post ja foi reportado estrutura de bloco com While
Não gosto muito , mas a principio resolve .
GOSTEI 0
Elton Ésqui
14/02/2011
Somente de alguns campos (chave).
Eu tentei implementar as dicas anteriores, mas não rolou.
Eu tentei implementar as dicas anteriores, mas não rolou.
GOSTEI 0
Diego Cavalca
14/02/2011
Somente de alguns campos (chave).
Eu tentei implementar as dicas anteriores, mas não rolou.
Eu tentei implementar as dicas anteriores, mas não rolou.
Qual erro foi reportado no bloco de código 'WHILE'?
GOSTEI 0
Elton Ésqui
14/02/2011
D. Cavalca
É 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.
É 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
Diego Cavalca
14/02/2011
D. Cavalca
É 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.
É 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.
Esse erro se dá devido ao campo NOTA ser requerido na tabela do Banco de dados (primary key ou coisa do tipo)...
Posta a estrutura da sua tabela e o código que está usando pra gravar...
GOSTEI 0
Elton Ésqui
14/02/2011
D. Cavalca
Alguma coisa errada pra copiar as informações, pois se eu faço um DBGRid com o CDS01 e inserir manualmente "célula" por "célula", a gravação vai de boa. Quando o DBGRid está ligado ao CDS02 que quebra a rocha.
Alguma coisa errada pra copiar as informações, pois se eu faço um DBGRid com o CDS01 e inserir manualmente "célula" por "célula", a gravação vai de boa. Quando o DBGRid está ligado ao CDS02 que quebra a rocha.
GOSTEI 0
Diego Cavalca
14/02/2011
Élton...
Verifique se o Cds02 não possui o campo 'NOTA' no seu FieldDefs
(Dois clique nos CDS e 'FieldDefs' no ObjectInspector). Pode ter ficado 'sujeira' no seu cds...
Verifique se o Cds02 não possui o campo 'NOTA' no seu FieldDefs
(Dois clique nos CDS e 'FieldDefs' no ObjectInspector). Pode ter ficado 'sujeira' no seu cds...
GOSTEI 0
Elton Ésqui
14/02/2011
Acabei por usar da forma abaixo no finally da QUERY que eu estava a usar.
Infelizmente não pude implementar da maneira que eu necessitava, mas isto deve me ajudar por hora.
Obrigado aos companheiros que dispuseram de seu tempo a me ajudar.
DMForm.cdsColeta.FieldByName('CAMPO').AsFloat := StrToFloat(dbgColeta.Fields[1].Value);
Infelizmente não pude implementar da maneira que eu necessitava, mas isto deve me ajudar por hora.
Obrigado aos companheiros que dispuseram de seu tempo a me ajudar.
GOSTEI 0
Elton Ésqui
14/02/2011
Amigos.
Retomando ao assunto.
Meu código ficou assim, com base na dica do D. Cavalca.
O que tá comentado está sendo realizado em outro momento da alpicação.
O problema é que so grava a primeira linha do DBGrid, não gravou todas as linhas.
Deveria funcionar assim:
DBGrid:
01213 | 2000 | ...
01213 | 2001 | ...
01213 | 2002 | ...
No banco gravar:
01213 | 2000 | ...
01213 | 2001 | ...
01213 | 2002 | ...
Mas só grava:
01213 | 2000 | ...
Help-me please.
Retomando ao assunto.
Meu código ficou assim, com base na dica do D. Cavalca.
while not DMForm.cdsNotas.eof do
begin
//FILTRO SE NECESSÁRIO
//DMForm.cdsColeta.Insert;
DMForm.cdsColeta.Edit;
//DMForm.cdsColeta.FieldByName('ORDEM_COLETA').AsFloat := StrToFloat(ORDEM_COLETA.Text);
DMForm.cdsColeta.FieldByName('NOTA').Value := dbgColeta.Fields[1].Value;
DMForm.cdsColeta.FieldByName('CLIENTE').Value := dbgColeta.Fields[2].Value;
DMForm.cdsColeta.FieldByName('PEDIDO').Value := dbgColeta.Fields[3].Value;
DMForm.cdsColeta.FieldByName('TIPO_SITU').Value := dbgColeta.Fields[4].Value;
DMForm.cdsColeta.FieldByName('CLASS_NOTA').Value := dbgColeta.Fields[5].Value;
DMForm.cdsColeta.FieldByName('CAIXA').Value := dbgColeta.Fields[6].Value;
DMForm.cdsColeta.FieldByName('DATA_EMI').Value := dbgColeta.Fields[7].Value;
DMForm.cdsColeta.FieldByName('NOTSERIE').Value := dbgColeta.Fields[8].Value;
DMForm.cdsColeta.FieldByName('EMPRESA').Value := DMForm.sqlEmp.FieldByName('CODIGO').Value;//dbgColeta.Fields[9].Value;
//DMForm.cdsColeta.Append;
DMForm.cdsColeta.Post;
DMForm.cdsNotas.Next;
end;
O que tá comentado está sendo realizado em outro momento da alpicação.
O problema é que so grava a primeira linha do DBGrid, não gravou todas as linhas.
Deveria funcionar assim:
DBGrid:
01213 | 2000 | ...
01213 | 2001 | ...
01213 | 2002 | ...
No banco gravar:
01213 | 2000 | ...
01213 | 2001 | ...
01213 | 2002 | ...
Mas só grava:
01213 | 2000 | ...
Help-me please.
GOSTEI 0
Diego Cavalca
14/02/2011
Uma dúvida, em qual cds seu grid está ligado?
me add no msn pra tentarmos esclarecer melhor: diegocavalca.ti@gmail.com
me add no msn pra tentarmos esclarecer melhor: diegocavalca.ti@gmail.com
GOSTEI 0
Elton Ésqui
14/02/2011
Está ligado ao cdsNotas.
Não funfa o MSN aqui :(
cdsNotas e cdsColeta, onde:
cdsNotas recebe dados da tabela NOTAS
Alguns dados de NOTAS deverá ser gravado na tabela COLETA (cdsColeta).
Quando eu faço a busca pela query do cdsNotas, ele alimenta o DBGrid (TwwDBGrid) com os dados.
Aí então gravo esse dados na tabela COLETA com mais algumas informações que estão em Edits pelo form.
Só que não grava tudo do DBGrid, só a primeira linha.
Depois que consegui gravar tudo, ainda preciso fazer gravar somente o que está selecionado (Option / MultSelect = True).
Valeu!
Não funfa o MSN aqui :(
cdsNotas e cdsColeta, onde:
cdsNotas recebe dados da tabela NOTAS
Alguns dados de NOTAS deverá ser gravado na tabela COLETA (cdsColeta).
Quando eu faço a busca pela query do cdsNotas, ele alimenta o DBGrid (TwwDBGrid) com os dados.
Aí então gravo esse dados na tabela COLETA com mais algumas informações que estão em Edits pelo form.
Só que não grava tudo do DBGrid, só a primeira linha.
Depois que consegui gravar tudo, ainda preciso fazer gravar somente o que está selecionado (Option / MultSelect = True).
Valeu!
GOSTEI 0
Diego Cavalca
14/02/2011
Uma dúvida, em qual cds seu grid está ligado?
me add no msn pra tentarmos esclarecer melhor: diegocavalca.ti@gmail.com
me add no msn pra tentarmos esclarecer melhor: diegocavalca.ti@gmail.com
Só pra ficar esclarecido, testei e funcionou, entaum a logica está certa, põe um breakpoint e ve o PQ, não está varrendo o CDS...
Será que você não inverteu o CDS que está ligado no grid ou entaum, não setou para o primeiro registro o cds no qual será varrido?
Dá uma olhada, coloque um breakpoint..
procedure TForm7.BitBtn1Click(Sender: TObject);
var
i : integer;
begin
//Vou carregar seu Cds com exemplo
cdsNotas.CreateDataSet;
for i := 0 to 3 do
begin
cdsNotas.Append;
cdsNotasCODIGO.Value := i;
cdsNotas.Post;
end;
//Seta o primeiro registro do Cds que está ligado ao grid
cdsNotas.First;
cdsColeta.CreateDataSet;
while not cdsNotas.eof do
begin
cdsColeta.Append;
//Aqui serão os campos no qual quer manipular, do Grid(que está linkado no cdsNotas) para o cdsColeta
cdsColetaCODIGO.Value := cdsNotasCODIGO.Value;
cdsColeta.Post;
//Mensagem só para confirmar os valores
Showmessage('Valor do '+IntToStr(cdsColeta.RecNo)+'º registro do '+UpperCase(cdsColeta.Name)+': '+cdsColetaCODIGO.Text );
cdsNotas.Next;
end;
end;Teseti, funcionou perfeitamente...
GOSTEI 0
Diego Cavalca
14/02/2011
Uma dúvida, em qual cds seu grid está ligado?
me add no msn pra tentarmos esclarecer melhor: diegocavalca.ti@gmail.com
me add no msn pra tentarmos esclarecer melhor: diegocavalca.ti@gmail.com
Só pra ficar esclarecido, testei e funcionou, entaum a logica está certa, põe um breakpoint e ve o PQ, não está varrendo o CDS...
Será que você não inverteu o CDS que está ligado no grid ou entaum, não setou para o primeiro registro o cds no qual será varrido?
Dá uma olhada, coloque um breakpoint..
procedure TForm7.BitBtn1Click(Sender: TObject);
var
i : integer;
begin
//Vou carregar seu Cds com exemplo
cdsNotas.CreateDataSet;
for i := 0 to 3 do
begin
cdsNotas.Append;
cdsNotasCODIGO.Value := i;
cdsNotas.Post;
end;
//Seta o primeiro registro do Cds que está ligado ao grid
cdsNotas.First;
cdsColeta.CreateDataSet;
while not cdsNotas.eof do
begin
cdsColeta.Append;
//Aqui serão os campos no qual quer manipular, do Grid(que está linkado no cdsNotas) para o cdsColeta
cdsColetaCODIGO.Value := cdsNotasCODIGO.Value;
cdsColeta.Post;
//Mensagem só para confirmar os valores
Showmessage('Valor do '+IntToStr(cdsColeta.RecNo)+'º registro do '+UpperCase(cdsColeta.Name)+': '+cdsColetaCODIGO.Text );
cdsNotas.Next;
end;
end;Testi, funcionou perfeitamente...
GOSTEI 0
Elton Ésqui
14/02/2011
Meu cód ficou assim:
Da um erro aqui no Post
Field 'CLIENTE' must have a value.
procedure TForm1.btnGravarDoisClick(Sender: TObject);
var
i : integer;
begin
with DMForm do
begin
//Vou carregar seu Cds com exemplo
cdsNotas.Close;
cdsNotas.CreateDataSet;
for i := 0 to 3 do
begin
cdsNotas.Append;
//cdsNotasCODIGO.Value := i;
DMForm.cdsNotas.FieldByName('NOTA').Value := i;
cdsNotas.Post;
end;
//Seta o primeiro registro do Cds que está ligado ao grid
cdsNotas.First;
cdsColeta.CreateDataSet;
while not cdsNotas.eof do
begin
cdsColeta.Append;
//Aqui serão os campos no qual quer manipular, do Grid(que está linkado no cdsNotas) para o cdsColeta
DMForm.cdsColeta.FieldByName('ORDEM_COLETA').Value := ORDEM_COLETA.Text;
DMForm.cdsColeta.FieldByName('NOTA').Value := dbgNotas.Fields[0].Value;
DMForm.cdsColeta.FieldByName('CLIENTE').Value := dbgNotas.Fields[1].Value;
DMForm.cdsColeta.FieldByName('PEDIDO').Value := dbgNotas.Fields[2].Value;
DMForm.cdsColeta.FieldByName('TIPO_SITU').Value := dbgNotas.Fields[3].Value;
DMForm.cdsColeta.FieldByName('CLASS_NOTA').Value := dbgNotas.Fields[4].Value;
DMForm.cdsColeta.FieldByName('CAIXA').Value := dbgNotas.Fields[5].Value;
DMForm.cdsColeta.FieldByName('DATA_EMI').Value := dbgNotas.Fields[7].Value;
DMForm.cdsColeta.FieldByName('NOTSERIE').Value := dbgNotas.Fields[8].Value;
DMForm.cdsColeta.FieldByName('EMPRESA').Value := DMForm.sqlEmp.FieldByName('CODIGO').Value;
cdsColeta.Post;
//Mensagem só para confirmar os valores
Showmessage('Valor do '+IntToStr(cdsColeta.RecNo)+'º registro do '+UpperCase(cdsColeta.Name)+': '+DMForm.cdsNotas.FieldByName('NOTA').Text );
cdsNotas.Next;
end;
end;
end;
Da um erro aqui no Post
begin
cdsNotas.Append;
//cdsNotasCODIGO.Value := i;
DMForm.cdsNotas.FieldByName('NOTA').Value := i;
cdsNotas.Post;
end;
Field 'CLIENTE' must have a value.
GOSTEI 0
Elton Ésqui
14/02/2011
Ficou assim:
[code]
procedure TForm1.btnGravarDoisClick(Sender: TObject);
var
i : integer;
begin
with DMForm do
begin
//Vou carregar seu Cds com exemplo
cdsNotas.Close;
//cdsNotas.CreateDataSet;
for i := 0 to 3 do
begin
//cdsNotas.Append;
cdsNotas.Open;
cdsNotas.Edit;
//cdsNotasCODIGO.Value := i;
DMForm.cdsNotas.FieldByName('NOTA').Value := i;
cdsNotas.Post;
end;
//Seta o primeiro registro do Cds que está ligado ao grid
cdsNotas.First;
//cdsColeta.CreateDataSet;
cdsColeta.Close;
while not cdsNotas.eof do
begin
//cdsColeta.Append;
cdsColeta.Open;
cdsColeta.Edit;
//Aqui serão os campos no qual quer manipular, do Grid(que está linkado no cdsNotas) para o cdsColeta
DMForm.cdsColeta.FieldByName('ORDEM_COLETA').Value := ORDEM_COLETA.Text;
DMForm.cdsColeta.FieldByName('NOTA').Value := dbgNotas.Fields[0].Value;
DMForm.cdsColeta.FieldByName('CLIENTE').Value := dbgNotas.Fields[1].Value;
DMForm.cdsColeta.FieldByName('PEDIDO').Value := dbgNotas.Fields[2].Value;
DMForm.cdsColeta.FieldByName('TIPO_SITU').Value := dbgNotas.Fields[3].Value;
DMForm.cdsColeta.FieldByName('CLASS_NOTA').Value := dbgNotas.Fields[4].Value;
DMForm.cdsColeta.FieldByName('CAIXA').Value := dbgNotas.Fields[5].Value;
DMForm.cdsColeta.FieldByName('DATA_EMI').Value := dbgNotas.Fields[7].Value;
DMForm.cdsColeta.FieldByName('NOTSERIE').Value := dbgNotas.Fields[8].Value;
DMForm.cdsColeta.FieldByName('EMPRESA').Value := DMForm.sqlEmp.FieldByName('CODIGO').Value;
cdsColeta.Post;
//Mensagem só para confirmar os valores
Showmessage('Valor do '+IntToStr(cdsColeta.RecNo)+'º registro do '+UpperCase(cdsColeta.Name)+': '+DMForm.cdsNotas.FieldByName('NOTA').Text );
cdsNotas.Next;
end;
end;
end;
[code]
Gera o ShowMessage, mas aparece sempre assim: "Valor do 1º"
Valor do 1º registro do CDSCOLETA: 10
Valor do 1º registro do CDSCOLETA: 20
Valor do 1º registro do CDSCOLETA: 30
E não grava!
[code]
procedure TForm1.btnGravarDoisClick(Sender: TObject);
var
i : integer;
begin
with DMForm do
begin
//Vou carregar seu Cds com exemplo
cdsNotas.Close;
//cdsNotas.CreateDataSet;
for i := 0 to 3 do
begin
//cdsNotas.Append;
cdsNotas.Open;
cdsNotas.Edit;
//cdsNotasCODIGO.Value := i;
DMForm.cdsNotas.FieldByName('NOTA').Value := i;
cdsNotas.Post;
end;
//Seta o primeiro registro do Cds que está ligado ao grid
cdsNotas.First;
//cdsColeta.CreateDataSet;
cdsColeta.Close;
while not cdsNotas.eof do
begin
//cdsColeta.Append;
cdsColeta.Open;
cdsColeta.Edit;
//Aqui serão os campos no qual quer manipular, do Grid(que está linkado no cdsNotas) para o cdsColeta
DMForm.cdsColeta.FieldByName('ORDEM_COLETA').Value := ORDEM_COLETA.Text;
DMForm.cdsColeta.FieldByName('NOTA').Value := dbgNotas.Fields[0].Value;
DMForm.cdsColeta.FieldByName('CLIENTE').Value := dbgNotas.Fields[1].Value;
DMForm.cdsColeta.FieldByName('PEDIDO').Value := dbgNotas.Fields[2].Value;
DMForm.cdsColeta.FieldByName('TIPO_SITU').Value := dbgNotas.Fields[3].Value;
DMForm.cdsColeta.FieldByName('CLASS_NOTA').Value := dbgNotas.Fields[4].Value;
DMForm.cdsColeta.FieldByName('CAIXA').Value := dbgNotas.Fields[5].Value;
DMForm.cdsColeta.FieldByName('DATA_EMI').Value := dbgNotas.Fields[7].Value;
DMForm.cdsColeta.FieldByName('NOTSERIE').Value := dbgNotas.Fields[8].Value;
DMForm.cdsColeta.FieldByName('EMPRESA').Value := DMForm.sqlEmp.FieldByName('CODIGO').Value;
cdsColeta.Post;
//Mensagem só para confirmar os valores
Showmessage('Valor do '+IntToStr(cdsColeta.RecNo)+'º registro do '+UpperCase(cdsColeta.Name)+': '+DMForm.cdsNotas.FieldByName('NOTA').Text );
cdsNotas.Next;
end;
end;
end;
[code]
Gera o ShowMessage, mas aparece sempre assim: "Valor do 1º"
Valor do 1º registro do CDSCOLETA: 10
Valor do 1º registro do CDSCOLETA: 20
Valor do 1º registro do CDSCOLETA: 30
E não grava!
GOSTEI 0
Elton Ésqui
14/02/2011
Fiz assim e deu certo:
Valeu a todos que contribuíram.
Valeu a todos que contribuíram.
for i := 0 to SelectedList.Count - 1 do
begin
GotoBookmark(SelectedList.items[i]);
Freebookmark(SelectedList.items[i]);
//Gravar número do Código selecionado
Append;
DMForm.cds02.FieldByName('CODIGO').AsFloat := StrToFloatDef(edtCodigo.Text, 0);
Post;
//Criar registro da coleta
DMForm.cds01.Append;
DMForm.cds01.FieldByName('CODIGO').Value := edtCodigo.Text;
//Informações dos Edits
DMForm.cds01.FieldByName('NOME').Value := edtNome.Text;
DMForm.cds01.Post;
end;
GOSTEI 0