Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-03-2021
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 12
giulichajari Va por buen camino
Actualizar Base de Datos desde TClientDataSet conectado a TSQLQuery

Hola yo de vuelta.

Tengo un TclientDataSet que, mediante un Provider esta conectado a un TSQLQuery(es decir no un TSQLTable).

El mismo lo utilizo a traves de un DataSource obviamente para mostrar el detalle de un pedido. entonces hice lo siguiente:


Código Delphi [-]
procedure TPEDIDO.gpedidotempColExit(Sender: TObject);
 begin
  DataModule1.cdsdetpedido.Edit;
  if (gpedidotemp.Fields[gpedidotemp.SelectedIndex]=
  gpedidotemp.DataSource.DataSet.FieldByName('Acuenta')) then

  begin

   DataModule1.quact.Close;
   DataModule1.quact.ParamByName('acta').AsFloat := gpedidotemp.SelectedField.AsFloat ;
   DataModule1.quact.ParamByName('idp').AsInteger:=
   gpedidotemp.DataSource.DataSet.FieldByName('idproducto').AsInteger;

   DataModule1.quact.ExecSQL();

  end;
 end;

Al salir de una columna intento guardar el dinero a cuenta por ejemplo.

Tambien intente

Código Delphi [-]
procedure TDataModule1.cdsdetpedidoAcuentaChange(Sender: TField);
begin
DataModule1.cdsdetpedido.Edit;
DataModule1.cdsdetpedido.Post;
DataModule1.cdsdetpedido.ApplyUpdates(0);
end;

Pero no se vuelcan los cambios en la bd. Probe usar TDBNavigator y le doy click en editar escribo y luego click en el tilde pero los cambios no se guardan.

Puede ser que al provenir los datos de un TSQLQuery no realize los cambios? Si es asi que debo hacer un query para cada operacion?
Responder Con Cita
  #2  
Antiguo 11-03-2021
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Yo ese proceso siempre lo hago dentro de una transacción. Cuanto se empieza a editar inicio la transacción y tras 'ApplyUpdates' si no hay errores la finalizo con 'commit'.
Utilizo todos los eventos del 'TClientDataSet' que o bien se enlazan automáticamente con los eventos del 'TdbNavigator' o los lanzo según necesite.
Responder Con Cita
  #3  
Antiguo 11-03-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por giulichajari Ver Mensaje
Pero no se vuelcan los cambios en la bd. Probe usar TDBNavigator y le doy click en editar escribo y luego click en el tilde pero los cambios no se guardan.

Habría que saber si se produce algún error que se esté enmascarando.
¿Has ejecutado debuggando desde el IDE?
¿La consulta es actualizable?
¿Qué numero te devuelve al ApplyUpdates (integer)?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 12-03-2021
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 12
giulichajari Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Habría que saber si se produce algún error que se esté enmascarando.
¿Has ejecutado debuggando desde el IDE?
¿La consulta es actualizable?
¿Qué numero te devuelve al ApplyUpdates (integer)?
Finalmente encontre el error y era que no tenia un campo id autoincremental y unico en la tabla detallepedido. Ahora el DBNavigator funciona perfecto aunque mi codigo tambien.

Lo unico que al hacer click en el mas (+) del DBNavigator para agregar un detalle al pedido me dice "Field iddetpedido must have a value", este es campo id autoincremental que coloque!

Gracias a ambos por las respuestas
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
Actualizar los datos de otros TclientDataset GerTorresM Varios 1 16-08-2015 15:03:42
actualizar base de datos desde dbgrid edgar_prospero Varios 36 31-08-2012 02:27:34
Diferencia entre TSQLQuery, y TClientDataSet Lucciano Conexión con bases de datos 2 02-07-2007 16:41:19
Actualizar una base de datos desde un servidor remoto zvf MySQL 1 22-06-2006 22:21:26
Actualizar una base de datos desde un formulario federiconqn21 Varios 1 14-12-2005 16:43:23


La franja horaria es GMT +2. Ahora son las 13:09:49.


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