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 con ClientDataSet (https://www.clubdelphi.com/foros/showthread.php?t=17916)

kaopectate 26-01-2005 00:03:46

Problema con ClientDataSet
 
Hola a todos.

Estaba recompilando una aplicación con el nuevo Delphi 2005 y me he topado con algo que debe ser una tontería pero que no me funciona:

- Tengo un componente SQLQuery (Query de DBExpress conectado a MySQL).
- Un componente DataSetProvider (conectado al anterior)
- Un ClientDataSet (cuyo provider es el anterior).

Si coloco una sentencia SQL normal en el SQLQuery y luego abro el ClientDataSet, puedo ver el resultado en un DBGrid. Hasta alli todo bien.

El problema es cuando cambio dinámicamente la sentencia SQL del SQLQuery luego de haberlo abierto. Algo como esto:

Código PHP:

procedure TForm1.GoClick(SenderTObject);
begin
  SQLQuery1
.Close;
  
with SQLQuery1.SQL do
  
begin
    Clear
;
    
Add('Select');
    
Add('  *');
    
Add('From');
    
Add('  crs_us_users');
    
Add('Where');
    
Add('  kcode_count = ' IntToStr(SpinEdit1.Value) + ' and');
    
Add('  kcode_compn = ' IntToStr(SpinEdit2.Value) + ' and');
    
Add('  kcode_users = ' IntToStr(SpinEdit3.Value));
  
end;
  
Memo1.Lines.Clear;
  
Memo1.Lines.AddStrings(SQLQuery1.SQL);
  
SQLQuery1.Open;
  
ClientDataSet1.Open;
end

Estoy construyendo la sentencia SQL de acuerdo a unos valores que cambian. El problema es que la primera vez que presiono el botón, la respuesta es la correcta, pero al cambiar uno de los valores y volver a presionar el botón, el ClientDataSet pareciera no enterarse.

Como ven lo estoy cerrando antes de cambiar la sentencia SQL y abriendolo luego, el DataSetProvider esta bien conectado (o no me funcionaría ni siquiera la primera vez).

¿Que podría estar pasando?

roman 26-01-2005 02:41:02

Cita:

Empezado por kaopectate
el ClientDataSet pareciera no enterarse.

Como ven lo estoy cerrando antes de cambiar la sentencia SQL y abriendolo luego

Pues no lo veo: Ciertamente cierras el SQLQuery pero aparentemente no el ClientDataSet.

// Saludos

kaopectate 26-01-2005 14:32:48

Hola roman, gracias por contestar.

Efectivamente, el problema que tengo en el ejemplo es mio, y no es un error de sintaxis sino de sueño. Estaba cerrando dos veces el query dbExpress pero no el ClientDataSet.

Sin embargo, el error en la aplicación real persiste. Voy a verlo de nuevo todo detenidamente a ver si no estoy cometiendo alguna ingenuidad igual de vergonzosa. Si sigo atascado, volveré sobre este hilo nuevamente.

Gracias por la ayuda.

Chaja 13-02-2005 22:08:57

Si usas CDS lo que tenes que abrir o cerrar es el CDS no el Query.
Yo Uso los CDS asociados con DataSetProvider y este con un Query. Cuando tengo que hacer un cambio en el SQL, lo que hago en la propiedad del CommandText del CDS Reescribo la santencia SQL, para ello la propiedad del DSP que dice poAllowCommandText:=True.
A mi me anda de pelos..


La franja horaria es GMT +2. Ahora son las 21:50:16.

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