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)
-   -   TClienteDataSer, TDataSetProvider, ADO (https://www.clubdelphi.com/foros/showthread.php?t=61522)

Palmiro 11-11-2008 14:46:00

TClienteDataSer, TDataSetProvider, ADO
 
Hola gente del foro.
Primero que nada les cuento que estoy aprendiendo a usar TClienteDataSer, TDataSetProvider.... mi conexion la establesco con ADOConnection a una BD MySQL.
Me lei varios tutoriales... uno de ellos es este. Segui al pie del cañon tal cual esta en dicho tutorial... y funciono.
Pero a la hora de implementarlo con ADO, me vino el dolor de cabeza.
Si alguien tiene un tutorial hecho con ADO y seria tan amable de ponerlo a mi disposicion... estaré mas que agradecido.
Para usar TClienteDataSer, TDataSetProvider no es aconsejable usar ADO?

Al González 11-11-2008 16:41:55

¡Hola!

Ambos componentes son genéricos y pueden ser utilizados con cualquier grupo de componentes para acceso a datos nativo (ADO, dbExpress, IBX, BDE), y cualquier otro que soporte la interfaz IProviderSupport.

Cita:

Empezado por Ayuda de Delphi
The provider communicates with DataSet using the IProviderSupport interface. This interface is available in all datasets, although in TDataSet most of the IProviderSupport methods are simple stubs that either do nothing or generate an exception. The dataset classes that ship with the IDE (dbExpress datasets, BDE-enabled datasets, ADO-enabled datasets, InterBase Express datasets, and client datasets) override these protected methods to implement the IProviderSupport interface in a more useful fashion. If you are using custom dataset components, check with the vendor whether they can work with a dataset provider.

Lo mejor es que expliques cómo lo estás haciendo y qué problemas concretos ocurren. Esperamos más información. Gracias.

Al González. :)

Neftali [Germán.Estévez] 11-11-2008 16:44:08

Pues funciona perfectamente.
¿Puedes explicar mejor qué problema tienes?

Si quieres ver cómo se hace una conexión ADO (Access) y un TClientDataset puedes revisar el ejemplo "Realizar búsqueda incremental y visualizarla sobre un DBGrid" de mi página web.

El ejemplo es para otra cosa, pero está hecho utilizando TClientDataset, así que tal vez te sirve de muestra.

Caro 11-11-2008 18:02:49

Hola, yo hice mis pruebas con BDE, ADO y DBExpress este ultimo es el que utilizo y no tuve problemas, como te dicen, explica mejor el problema exacto que tienes.

Saluditos

Palmiro 12-11-2008 12:09:46

Les planteo el problema, Tengo que realizar una Gestion de Pautas publicitarias y cada pauta con sus respectivos integrantes que la realizaron.

El Id de Pauta es autoincrementable... lo que significa que voy a obtener el nro de pauta despues del hacer un post, luego applyUpdate(0).
El alta sin cargar los item de la pauta se hace sin problema...
La eliminacion de la misma... me dice 'Información de columna clave insuficiente para realizar la operación Update o Refresh'. Que este error me sale creo y segun tengo entendido porque en la tabla existen claves foraneas.
Aqui va una pregunta.... ¿Devido al error que les comente la eliminacion la debo hacer a atraves un query o algo estoy haciendo mal al intentar hacerlo a atraves del ClientDataSet?
Código Delphi [-]
procedure TfrmGestionPautas.actEliminarExecute(Sender: TObject);
begin
 dsPauta.DataSet.Delete;
{dtModulo.qryEliminar.SQL.Clear;
 dtModulo.qryEliminar.SQL.Text:= 'DELETE * FROM pauta WHERE id_pauta = ';
 dtModulo.qryEliminar.SQL.Add(dbgPauta.Fields[0].Text);
 dtModulo.qryEliminar.ExecSQL;
 end;

el ClienteDataSet va el sgte codigo
Código Delphi [-]
procedure TdtModulo.cdspautaAfterDelete(DataSet: TDataSet);
begin
cdspauta.ApplyUpdates(0);
cdspauta.Refresh;
end;

Hasta aqui fue el problema de la eliminación....

He aqui el problema cuando quiero cargar los integrantes de la pauta.
Si bien logre que guarde en la BD... siempre me guarda con la clave de la primera pauta guardada... mire el codigo y no tengo idea porque lo hace... tengo entendido que el DataSetProvider se tiene que encargar de eso.
Otra cosa.. supuestamente tengo cargado los integrantes de la primera pauta... en tiempo de ejecución no lo logro ver los datos como maestro/detalle... ya que para la primera pauta no se refleja sus integrantes...
Para mas detalle las grillas estan enlasadas por datasource--> DataSet--> clientedataset-->DataSetProvider-->qryPauta-->AdoConnection

Espero haber sido claro en lo que estoy preguntado y gracias por su voluntad en ayudar...

Palmiro 13-11-2008 13:35:43

Despues de probar y probar logre que ande... pero de todas formas hay algo que no me mantiene conforme....
La relación maestro/detalle anda perfecto siempre y cuando el detalle se haga una consulta a una solo tabla... si yo utilizo tabla extras para armar la consulta la relacion maestro/detalle no funciona...

les dejo la consulta con lo cual no funciona..

Código SQL [-]
SELECT i.id_pauta, i.genero, i.dni,
CONCAT(per.apellido,', ',per.nombre) AS integrante, i.id_act,
 a.nombre
FROM (persona AS per INNER JOIN (integrantes AS i INNER JOIN 
pauta AS pta ON i.id_pauta = pta.id_pauta) ON 
(per.genero = i.genero) AND (per.dni = i.dni))
 INNER JOIN actividad AS a ON per.id_act = a.id_act

Con la consulta anterior estableci la relacion maestro/detalle a traves de id_pauta....
tambien probe haciendo la consulta de la siguiente forma y tampoco funciono...
Código SQL [-]
SELECT i.id_pauta, i.genero, i.dni,
CONCAT(per.apellido,', ',per.nombre) AS integrante, i.id_act,
 a.nombre
FROM (persona AS per INNER JOIN (integrantes AS i INNER JOIN 
pauta AS pta ON i.id_pauta = pta.id_pauta) ON 
(per.genero = i.genero) AND (per.dni = i.dni))
 INNER JOIN actividad AS a ON per.id_act = a.id_act
WHERE i.id_pauta=:id_pauta

No da ningun tipo de error pero tampoco funciona...

por favor alguien se apiade de mi y me ayude a resolver el problema...
desde ya muchas gracias


La franja horaria es GMT +2. Ahora son las 02:15:05.

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