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 22-05-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Indicar Parámetro de otro DataSource en tiempo de ejecución

Hola compañeros,

Tengo mi sentencia Select SQL de un IBDataSet determinado sobre una tabla de Interbase 7.5

En dicha sentencia se incluye como parámetro un dato de otro DataSource
Código Delphi [-]
Select * from TABLA2
where TABLA2_CAMPO1 = :TABLA1_CAMPO1
Claro está que IBDataSet2.DataSource = DataSource1 , que dicho DataSource1 a la vez está asociado a IBDataSet1 mediante DataSource1.DataSet = IBDataSource1

Bien, lo que me pasa es que en tiempo de ejecución necesito modificar el Select SQL de IBDataSet2 para hacer otras cosas.

Mi pregunta es como poder volver a poner en tiempo de ejecución el comando SQL Select correcto para relacionarlo de nuevo con el DataSource1 ?

Si pongo en tiempo de ejecución:
Código Delphi [-]
with IBDataSet2 do begin
  SelectSQL.Clear;
  SelectSQL.Add('Select * from TABLA2');
  SelectSQL.Add('where TABLA2_CAMPO1 = :TABLA1_CAMPO1');
  Prepare;
  Open;
end;
no me funciona correctamente ya que supongo que está esperando un parámetro llamado 'TABLA1_CAMPO1', dentro de la misma sentencia SQL que acabo de poner, no ?

Entiendo yo que no puedo poner
Código Delphi [-]
with IBDataSet2 do begin
  SelectSQL.Clear;
  SelectSQL.Add('Select * from TABLA2');
  SelectSQL.Add('where TABLA2_CAMPO1 = :Txt1');
  ParamByName('Txt1').Value := IBDataSet1.TABLA1_CAMPO1;
  Prepare;
  Open;
end;
porque entonces no estaría enlazado de forma dinámica. Entiendo que de esta manera al modificarse el registro en DataSource1, no actualiza el IBDataSet2. Por lo menos yo lo he probado y no me funciona.

Por último decir que he intentado
Código Delphi [-]
with IBDataSet2 do begin
  SelectSQL.Clear;
  SelectSQL.Add('Select * from TABLA2');
  SelectSQL.Add('where TABLA2_CAMPO1 = '+':'+'TABLA1_CAMPO1');
  Prepare;
  Open;
end;
pero tampoco quiere funcionar.

Gracias por vuestra ayuda.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 22-05-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Después de llevar todo la tarde de ayer y mañana de hoy intentando solucionar el asunto anteriormente mencionado, me doy cuenta que el problema viene dado por el uso de una tabla TEMPORAL de Interbase.

Si la misma tabla que estoy utilizando es 'permanente', todo funciona perfectamente.

Y es más, y además no lo comenté en el hilo inicial que empezé ya que no lo veía como dato que aportara nada, pero el problema me surge sólo en la primera vez al abrir la tabla temporal. Si cierro el form (que es modal), con el cierre de todas las bases de datos, etc., al volver a abrirlo de nuevo, el problema desaparece.

... cosas del Delphi 2006

Si alguien sabe darme alguna indicación de por donde atacar este asunto, se lo estaría muy agradecido.

Saludos !
__________________
Piensa siempre en positivo !
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
Error en tiempo de ejecución chipsoni Varios 2 16-04-2008 11:29:55
Debugear en tiempo de ejecucion ? ingel Varios 23 12-05-2006 19:23:13
problemas en tiempo de ejecución Nelly Varios 4 05-04-2006 19:25:53
Error en tiempo de ejecucion. ramonibk MS SQL Server 2 23-10-2004 20:18:42
Tiempo de ejecucion? st7 Varios 3 11-05-2004 22:03:28


La franja horaria es GMT +2. Ahora son las 15:03:22.


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