Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 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
  #2  
Antiguo 25-08-2010
Dclase Dclase is offline
Miembro
 
Registrado: ene 2007
Posts: 35
Poder: 0
Dclase Va por buen camino
Cita:
Empezado por afunez2007 Ver Mensaje


............................
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
Un update es lo que intento hacer en el segundo siclo buscando el id si existe del campo que ya inserte arriba.
Responder Con Cita
  #3  
Antiguo 26-08-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 17
afunez2007 Va por buen camino
Lightbulb

Cita:
Empezado por Dclase Ver Mensaje
Un update es lo que intento hacer en el segundo siclo buscando el id si existe del campo que ya inserte arriba.
Cuando te hablo de hacer un UPDATE, es a traves de sql y no directamente con un edit del data set.

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
Responder Con Cita
  #4  
Antiguo 26-08-2010
Dclase Dclase is offline
Miembro
 
Registrado: ene 2007
Posts: 35
Poder: 0
Dclase Va por buen camino
Cita:
Empezado por afunez2007 Ver Mensaje
Cuando te hablo de hacer un UPDATE, es a traves de sql y no directamente con un edit del data set.

Saludos

Hacer un Update mediante SQL, si es para aplicarlo directamente a una tabla MSSQL por ejemplo, si se como hacerlo, pero aqui no lo hago a una tabla, sino solo a un set de datos en memoria, ya que no me interesa salvar a una tabla el resultado, sino solo para fines de reporte.

Si hay una forma de hacerlo mediante Transac-SQL directamente al ClientDataSet en memoria les agradeceria me enseñen como..
Responder Con Cita
  #5  
Antiguo 26-08-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 17
afunez2007 Va por buen camino
Lightbulb

Cita:
Empezado por Dclase Ver Mensaje
Hacer un Update mediante SQL, si es para aplicarlo directamente a una tabla MSSQL por ejemplo, si se como hacerlo, pero aqui no lo hago a una tabla, sino solo a un set de datos en memoria, ya que no me interesa salvar a una tabla el resultado, sino solo para fines de reporte.

Si hay una forma de hacerlo mediante Transac-SQL directamente al ClientDataSet en memoria les agradeceria me enseñen como..
Comprendo, yo tuve unas complicaciones parecidas hace mucho tiempo con reportes, y tuve al final que buscar otras estrategias, lo solucione, creando tablas temporales directamente desde el codigo, Tempor_XX donde XX corresponde al numero de terminal, que esta lanzado el reporte y asi si que puedes realizar todas las sqls que quieras.

No digo que es lo que debas hacer tu, sin embargo si no lo solucionas con tu procedimiento actual no pierdas de vista la solucion que te he propuesto

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cannot Modify mantraxer21 Varios 8 26-08-2010 18:17:22
Error 'Cannot modify a read-only dataset' karaoke Varios 8 10-12-2007 06:38:31
Al intentar modificar un campo me dice "Cannot modify a read-only dataset" raulahol SQL 1 22-01-2007 05:16:53
error cannot modify a read-only dataset Renees Varios 2 30-09-2006 00:39:27
Query1 cannot modify a read-only dataset Nbull SQL 14 14-12-2004 10:29:35


La franja horaria es GMT +2. Ahora son las 04:49:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi