Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema editando DataSource (https://www.clubdelphi.com/foros/showthread.php?t=78336)

vijumaba89 10-04-2012 17:31:53

Problema editando DataSource
 
Hola amigos... no se si este sea el Foro correcto... soy nuevo en esto y ando algo perdido. Estoy trabajando con Lazarus.
Mi problema es el siguiente:
Tengo un TDataSource el cuál lleno con el resultado de un SQLQuery. Lo que deseo es poder recorrer dicho datasource y hacer una actualizaión de un campo especifico del registro en el que me encuetro.
Hasta el momento he logrado hacer el recorrido pero cuando trato de actualizar el valor del campo del datasource, me genera un error que me dice que el dataset is read-only, he intentado hacerlo de varias manera y siempre obtengo el miso error.
No se si alguno de ustede pueda ayudarme... se lo agradeceria inmensamente.

El código que uso es el siguiente:

Código Delphi [-]
dso_rpt_balance.DataSet.First; // Posiciono el Dataset en la primera posicion 
while not dso_rpt_balance.DataSet.EOF do 
begin           //Inicio el recorrido         
                  // hago las operaciones que deseo para obtener el valor que voy a actualizar        
  {........}        //Luego coloco el dataset en modo de edición        
  dso_rpt_balance.DataSet.Edit;                  
  dso_rpt_balance.DataSet.FieldByName('nombrecampo').AsString:='10000'; //Seteo el valor al campo deseado        
  dso_rpt_balance.DataSet.Post;                 
  dso_rpt_balance.DataSet.Next;     
  // Avanzo en el ciclo   
end;

Si alguién tiene idea de como puedo resolver el problema u otra manera de hacer lo que deseo... estaría de maravilla....

maeyanes 10-04-2012 18:20:35

Hola...

Bienvenido a los foros de Club Delphi, te recomiendo que le des una leida a la Guía de Estilo.

Sobre tu duda, si la consulta sobre la que tratas de hacer los cambios es una consulta compleja, o sea, tiene joins, group by, etc... entonces no es posible que la puedas modificar de la forma que deseas.

Ahora bien, si es una consulta sencilla (select * from table1), entonces tienes que checar que la propiedad RequestLive del componente SQLQuery tenga como valor True.

Todo esto te lo comento desde la perspectiva de Delphi, no se si en Lazarus el componente SQLQuery cuente con esta propiedad.



Saludos...

vijumaba89 10-04-2012 18:39:08

Hola amigo... muchas gracias por tu pronta respuesta...

Efectivamente el query qe ejecuto con el SQLQuery tiene de todo un poco joins, group by.

No se si exista otra manera de hacerlo.... lo que necesito es despues de tomar los datos de una consulta poder actualizar esos datos con valores que obtengo de otro proceso. No se si usando otro componente pueda hacerlo....?

maeyanes 10-04-2012 18:43:09

Hola...

Pues tendrías que actualizar las tablas involucradas independientemente. Otra forma que se me ocurre es que uses una vista actualizable, pero esto depende mucho del motor de base de datos que utilices.

También tienes la opción de usar procedimientos almacenados, pero como en el caso de las vistas, depende del motor de base de datos que utilices.



Saludos...


La franja horaria es GMT +2. Ahora son las 11:32:21.

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