Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2005
kaopectate kaopectate is offline
Registrado
 
Registrado: ene 2005
Posts: 5
Poder: 0
kaopectate Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 26-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 26-01-2005
kaopectate kaopectate is offline
Registrado
 
Registrado: ene 2005
Posts: 5
Poder: 0
kaopectate Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 13-02-2005
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Poder: 0
Chaja Va por buen camino
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..
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


La franja horaria es GMT +2. Ahora son las 08:50:07.


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