Ver Mensaje Individual
  #12  
Antiguo 25-08-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Reputación: 17
afunez2007 Va por buen camino
Lightbulb

Cita:
Empezado por Dclase Ver Mensaje
Igual con post y sin post me da el mismo error..


Código Delphi [-]With ClientDataSet3 Do Begin Close; ClientDataSet1.Commantext := ' Select * from TablaA'; Open If Not Eof Then Begin First; While Not Eof Do Begin ClientDataSet2.Append; ClientDataSet2.FieldByName('Codigo').AsString := FieldByName('Codigo').AsString; ClientDataSet2.FieldByName('CAMPO1').AsFloat := 0; ClientDataSet2.Post; Next; End; End; End; With ClientDataSet1 Do Begin ClientDataSet1.Close; ClientDataSet1.Commantext := ' Select * from TablaB'; ClientDataSet1.Open If Not Eof Then Begin First; While Not Eof Do Begin IF ClientDataSet2.Locate('Codigo', FieldByName('Codigo').AsString, []) Then Begin ClientDataSet2.Edit; //Este Cds no esta conectado a ningun provider //Solo lo utilizo para actializar datos en memoria ClientDataSet2.FieldByName('CAMPO1').AsFloat := FieldByName('CAMPO1').AsFloat; ClientDataSet2.Post; End; Next; End; End; End;


(Aproposito, el codigo aqui no importa, solo puse este de prueba para k se entienda mejor lo que queria explicar, pero si es la misma sintaxis y logica de lo que busco hacer.)
veamos yo veo que hay un ciclo redundante el if para mi esta demas, prueba asi:
Código Delphi [-]
With ClientDataSet3 Do
Begin
   Close;
   ClientDataSet1.Commantext := ' Select * from TablaA';
   Open;
        First;
        While Not Eof Do
        Begin   
          ClientDataSet2.Append;
          ClientDataSet2.FieldByName('Codigo').AsString := FieldByName('Codigo').AsString;
           ClientDataSet2.FieldByName('CAMPO1').AsFloat := 0;
           ClientDataSet2.Post;
        Next;
        End;
End;


With ClientDataSet1 Do
Begin

ClientDataSet1.Close;
ClientDataSet1.Commantext := ' Select * from TablaB';
ClientDataSet1.Open;
     First;
     While Not Eof Do
     Begin
         IF ClientDataSet2.Locate('Codigo', FieldByName('Codigo').AsString, []) Then
         Begin
         ClientDataSet2.Edit;  //Este Cds no esta conectado a ningun provider 
                                      //Solo lo utilizo para actializar datos en memoria
         ClientDataSet2.FieldByName('CAMPO1').AsFloat := FieldByName('CAMPO1').AsFloat;
         ClientDataSet2.Post;
         End;
     Next; 
     End;
End;

a mi en lo personal, solo utilizaria el dataset para recoger el id del registro a modificar, y haria un Insert con un query o un update en el segundo ciclo, el tema de modificar directamente los datos del data set te suele provocar estos incomodos errorcillos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
Responder Con Cita