Fórum Como fazer a mesma rotina do storedproc no cds #16834
03/03/2010
0
[#VIDEO-182#]
Carlos Faria
Curtir tópico
+ 0Posts
03/03/2010
Wesley Yamazack
Estou analisando o chamado e logo retornarei
Um abraço
Wesley Y
Gostei + 0
03/03/2010
Carlos Faria
Gostei + 0
03/03/2010
Wesley Yamazack
Seguinte, pelo que entendi, você esta fazendo o processo errado. no seu loop você tem que fazer da seguinte forma
Var
xNome : String;
begin
Xnome := DBEdit1.text;
For I:=0 to max do
begin
CDSx.Append;
CDSx.FieldByname('NomeMotoqueiro').asstring := xNome ;
CDSx.Post;
end;
TClientDataSet(DS.DataSet).ApplyUpdates(0);
O que acontece, você tem que preparar a tabela para inclusão com Append, e gravar a inclusão.
O ApplyUpdates, ele é executado uma única vez, pois você primeiro passa todos os dados para memoria e depois sim gravar todos eles de uma só vez, pensa neste comando como Commit, você pode deltar um registro, incluir 10, alterrar 5, isso tudo em memória, quando você quiser gravar no banco de dados basta usar uma única vez o APPLYUPDATES.
Sacou meu amigo ?
Um abraço
Wesley Y
Gostei + 0
03/03/2010
Carlos Faria
xCorrida: TClientDataSet;
Max, I: integer;
begin
xCorrida := dsCorridas.DataSet.Fields.Create ;
Max := STRTOINT(rgQTMotoqueiros.items[rgQTMotoqueiros.ItemIndex]);
for I := 0 to Max do
begin dsCorridas.DataSet.Append;
dsCorridas.DataSet.FieldByName('nome').AsString := xNome;
dsCorridas.DataSet.Post;
end;
TClientDataSet(dsCorridas.DataSet).ApplyUpdates(0);
dsCorridas.DataSet.Close;
dsCorridas.DataSet.Open;
Gostei + 0
04/03/2010
Wesley Yamazack
Olá amigo,
Me diga uma coisa, porque criar um ClientDataSet na mão ? E não ter ele no form, já apontando para um DataSetProvider, e por sua vez apontando para um SQLQuery/SQLDataSet ? Assim você não precisa ficar criando ele.
E para inserir os dados no ClientDataSet, você tem que fazer como no exemplo
dsCorridas.DataSet.Append;
dsCorridas.DataSet.FieldByName('nome').AsString := xNome;
dsCorridas.DataSet.Post;
TClientDataSet(dsCorridas.DataSet).ApplyUpdates(0);
E os dados são gravador. Agora se você quer fazer um loop em um outro clientdataset, e preencher este CDS com os dados do segundo, ai é outra história, você tem que passar para os Fields do primeiro cds, os dados do segundo, mas sempre usando o append e depois o post,exemplo
Você tem que fazer um loop no cds que deseja varrer, e pegar os dados para preencher no outro.
while not cdsConsulta.eof do
bebin
dsCorridas.DataSet.Append;
dsCorridas.DataSet.FieldByName('nome').AsString := cdsConsulta.FieldByName('nome').AsString;
dsCorridas.DataSet.FieldByName('codigo').AsString := cdsConsulta.FieldByName('idcorrida').AsString;
dsCorridas.DataSet.FieldByName('data').AsString := cdsConsulta.FieldByName('datacorrida').AsString;
dsCorridas.DataSet.Post;
TClientDataSet(dsCorridas.DataSet).ApplyUpdates(0);
cdsConsulta.Next; //Tem que ter o next, senao você vai ficar em Loop infinito
end;
Seria isso que você quer ??
Um abraço
Wesley Y
Gostei + 0
06/03/2010
Carlos Faria
Gostei + 0
08/03/2010
Wesley Yamazack
Um Abraço
Wesley Y
Gostei + 0
16/03/2010
Carlos Faria
Gostei + 0
16/03/2010
Wesley Yamazack
Forte abraço
Wesley Y
Gostei + 0
18/03/2010
Carlos Faria
Gostei + 0
18/03/2010
Wesley Yamazack
Estamos aqui pra ajudar sempre, cds é muito bom. rsrs. Chamado Fechado
Um abraço
Wesley Y
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)