Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-11-2012
Walterio Walterio is offline
Miembro
 
Registrado: nov 2006
Posts: 46
Poder: 0
Walterio Va por buen camino
Actualizar ClientDataSet usando TADOQuery y DataSetProvider

Hola a todos...
Estoy haciendo mis primeros pasos con clientdatasets, providers y esas cosas y me atacó una duda:
Escenario de trabajo : MySQL y Delphi 6.
Tengo un TADOQuery con una consulta, un DataSetProvider, un DataSource y un ClientDataSet, todos con su debida conexión que me muestra el resultado de una consulta en una grilla.Hasta aquí todo funciona perfecto, pero lo que necesito es modificar la consulta para obtener otros datos y en base al resultado de esa consulta actualizar el ClientDataSet y mostrar los nuevos datos en la grilla.
Es decir, mediante un TEdit escribo una consulta, lo ejecuta el TADOQuery bien, pero no se reflejan los cambios en el ClientDataSet, por ende, tampoco en la grilla, ¿de que forma puedo hacer que al actualizar la consulta se reflejen los datos en el clientdataset y la grilla?.
Desde ya, muchas gracias.
Responder Con Cita
  #2  
Antiguo 27-11-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Para que todos los cambios hechos sobre el ClientDataSet se guarden en la base de datos, debes llamar a su método ApplyUpdates. En cuanto al DataSetProvider, conviene que mantengas su propiedad ResolveToDataSet en False; así cada alta, baja o cambio de registro lo traducirá en la respectiva instrucción SQL que emitirá al servidor usando de forma directa el componente conexión (en tu caso el ADOConnection).

No olvides revisar también las propiedades UpdateMode y ProviderFlags. En la ayuda y en este foro hay bastante material sobre el tema.

Saludos.
Responder Con Cita
  #3  
Antiguo 27-11-2012
Walterio Walterio is offline
Miembro
 
Registrado: nov 2006
Posts: 46
Poder: 0
Walterio Va por buen camino
Muchas gracias por la pronta respuesta Al, me imaginaba que recibiria alguna respuesta de tu parte, ya te tengo catalogado como el "Master of TClientDataSet".
Perdón por no ser mas explícito (de todas formas tu correo me sacó otras dudas), pero lo que yo hago son consultas de Select, no tengo que actualizar datos de la base de datos, simplemente hago un Select con determinadas características y listo, el problema pasa porque la primer consulta me trae bien los datos, pero cuando le cambio la sentencia por otro, se ejecuta bien, pero no me actualiza los datos del clientdataset.Por ahora lo que hago cada vez que realizo una nueva consulta es esto :

Código Delphi [-]
     cdsLookUp.EmptyDataSet ;

     TDBO.buscoReg('Select * from ' + Trim(sNomTablaLookup.Text) + ' where ' + sWhere, sqlDatos);

     sqlDatos.First;

      While (not sqlDatos.Eof) do
      Begin
        cdsLookUp.Append;
        CopyDataSetRecord(sqlDatos, cdsLookUp);
        cdsLookUp.Post;
        sqlDatos.Next;
      End; 

//TDBO.buscoReg es una función mia que se encarga de todo lo que es la ejecución de la misma y funciona perfecto.

No me parece la manera mas correcta, pero al menos actualizo el clientdataset y por ende, la grilla, pero seguramente debe haber otra forma.
Saludos y gracias.
Responder Con Cita
  #4  
Antiguo 27-11-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Walterio Ver Mensaje
[...] te tengo catalogado como el "Master of TClientDataSet".
Antes de que se haga un rumor de eso, he de decir que hay muchas cosas de TClientDataSet que todavía no he utilizado, como el almacenamiento en XML, los campos de sumario (aggregate fields) o la propiedad CommandText, con la cual podrías resolver el problema que planteas.

Cita:
Empezado por Ayuda de Delphi 7 (la más completa y accesible)
Specifies an SQL command to be executed by the database server.

property CommandText: string;

CommandText specifies what data the client dataset wants to receive from its (internal or external) provider. It is either
  • An SQL statement (query) for the database server to execute.
  • The name of a table or stored procedure.

If the client dataset uses an internal provider, CommandText is required.

If the client dataset uses an external provider component, CommandText represents a replacement for the property that the source dataset uses to identify its data (the SQL of a query, or the name of a table or stored procedure). If the provider’s Options property does not include poAllowCommandText (which, by default, it does not), then CommandText has no effect.

When CommandText is a non-empty string, its value is sent to the provider when the client dataset opens or when you call the Execute method. The specified SQL command, table, or stored procedure overrides the current value of the provider’s associated dataset.

If the SQL statement takes parameters, be sure that they are in the correct order, as the provider performs parameter binding on CommandText statements by index only.
Saludos.
Responder Con Cita
  #5  
Antiguo 27-11-2012
Walterio Walterio is offline
Miembro
 
Registrado: nov 2006
Posts: 46
Poder: 0
Walterio Va por buen camino
Nuevamente Al, dándole en el clavo.El commandtext es lo que necesitaba.Has revalidado el título, y aunque digas que te falta, para mí sos un gurú del ClientDataSet.

Muchísimas gracias.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
TADOQuery, ClientDataSet y edición de campo NO persistente Walterio SQL 8 20-04-2012 23:01:21
Transacciones DataSetProvider y ClientDataset pablonill Conexión con bases de datos 4 22-11-2008 16:39:05
ayuda ClientDataSet, DataSetProvider y ApplyUpdates cmm07 Varios 1 23-03-2008 09:27:28
Actualizar DBGrid conectado a TADOQuery Acker Conexión con bases de datos 7 20-05-2006 13:31:05
IBQuery --> DataSetProvider --> ClientDataset pinoxito Conexión con bases de datos 8 16-11-2005 21:40:34


La franja horaria es GMT +2. Ahora son las 12:18:47.


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