Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
¿Son de los mismos tipos?¿o Fields es TFieldList? Si se puede acceder a Field de manera array (Field[0]) entonces son distintos tipos. De todas maneras, prueba con una asignacion directa (form1.TJvDBLookupList.Field = prueba) y comprueba antes si prueba no es null (if prueba = nil then showmessage(''))
Responder Con Cita
  #2  
Antiguo 30-10-2008
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 22
Bauhaus1975 Va por buen camino
Son TField.
La sentencia form1.TJvDBLookupList.Field = prueba; no puede ejecutarse porque '.Field' es de sólo lectura...
Responder Con Cita
  #3  
Antiguo 30-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Si es de solo lectura...tampoco le tendrias que poder hacer un assign en teoria. De todas maneras, has comprobado que prueba no sea nil antes del assign? ¿Y para que sirve la propiedad .Field? si es de solo lectura, probablemente sera por algun motivo.
Responder Con Cita
  #4  
Antiguo 30-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Es extraño que sea tipo TField. Si TJvDBLookupList es analogo al TDBLookupListBox, tendria que ser un tipo string...

EDITO : TDBLookUpListBox.DataField tambien es de tipo TField.

Última edición por coso fecha: 31-10-2008 a las 22:47:17.
Responder Con Cita
  #5  
Antiguo 31-10-2008
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 22
Bauhaus1975 Va por buen camino
Hola de nuevo. Algo he avanzado al menos.
Resulta que cómo sigo bastante 'verde' con Delphi no había visto la propiedad 'DataField', la cual he usado para signar el campo (Field) 'TIPO' de la query. Ahora al menos esta sentencia no da problemas. Otra cosa: He cambiado el TJvDBLookupList por un TDBListBox, ya que sólo necesito mostrar todos los valores de un campo en la lista y no quiero complicarme.

Lo peor es que (ahora) no soy capaz de hacer que se carguen los datos en la lista. He revisado y todo parece bien conectado.

¿Hay algo que me falta o algún paso es incorrecto?
Añado la sección de código implicada:


Código Delphi [-]
{
-La idea es cargar en la lista lo almacenado en el campo 'Tipo' de la tabla 'Tipos'-
dbListTipos -> Lista asociada al sgte DataSource
dsTipos -> Asociado a la query
ibqObtenerTipos -> la query (SELECT DISTINCT(Tipo) as Tipo FROM Tipos)
}
self.dbListTipos.ReadOnly := true;
self.dbListTipos.DataField := 'TIPO';
// Ejecutamos la query
try
with DM.dmPrincipal do
begin
// Preparamos la transacion
if (ibtPrincipal.InTransaction) then
if (not ibtPrincipal.Active) then
begin
ibtPrincipal.StartTransaction;
ibtPrincipal.Active:=true;
ibtPrincipal.Rollback;
end;
// Realizamos la petición de datos
self.dsTipos.DataSet.Close;
dmComunData.ibqObtenerTipos.Close;
dmComunData.ibqObtenerTipos.Active := true;
dmComunData.ibqObtenerTipos.Open;

self.dsTipos.DataSet.Open();
// Mostramos el formulario
self.ShowModal; // Al mostrar el formulario no se carga nada
end;
finally
showmessage('ERROR DE BBDD');
end;






Haciendo un debug, he visto que la query efectivamente devuelve los registros existentes en la BBDD, pero la lista no carga nada...

Gracias de nuevo y un saludo.
Responder Con Cita
  #6  
Antiguo 31-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
...creo que te estas confundiendo...Si tu lo que quieres es asignar a un campo uno escogido entre varios valores estaticos, entonces el DBListBox te funciona correctamente : DataField, campo a modificar; DataSource, de donde es el campo, Items, valores a escoger. Si lo que quieres, como parece que es el caso, es modificar un campo de cierto dataset con los valores de otro campo de otra dataset, entonces debes usar DBLookUpListBox, donde DataField, campo a modificar, DataSource, source a modificar, ListField, campo a mostrar en la lista, ListSource, de donde se sacan los campos a mostrar en la lista, KeyField, campo que realmente se pasa de la lista mostrada al DataField. Por ejemplo:

ListSource := src_clientes;
ListField := 'nombre_cliente';

KeyField := 'id_cliente';

DataSource := src_facturas;
DataField := 'id_pagador';

esto me permetiria escoger entre los nombre_cliente de src_clientes, para poner el valor de id_cliente en id_pagador de src_facturas...creo que esto ultimo es lo que buscas.

EDITO: se supone q datasource lo tienes asignado.
Responder Con Cita
  #7  
Antiguo 01-11-2008
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 22
Bauhaus1975 Va por buen camino
Me parece que no es caso de uso para un DBLookUpListBox (aunque tampoco estoy seguro). Imagina la tabla clientes que mencionas, pues simplemente quiero mostrar en una lista todos los nombres de clientes (campo Nombre), para seleccionar uno.

Para eso tengo un TIBQuery (el DataSet), un DataSource conectado y el TDBListBox conectado a este último.
En el mensaje anterior tengo la sección de código como intento abrir el data set etc para alimentar los datos pero no sale nada. No sé si realmente tengo que usar otro componenete como dices o hacer algo que no estoy haciendo.
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
Asignar datos origen a gráfico en tiempo de ejecución g_rojo Gráficos 4 07-12-2007 01:44:19
Asignar evento OnDrawColumnCell en tiempo de ejecución gluglu OOP 6 01-06-2007 13:14:58
Asignar propiedades de Ttable en tiempo de ejecución coleleon Tablas planas 3 30-11-2005 23:22:39
Asignar evento Oncalcfield en tiempo de ejecucion el_barto Conexión con bases de datos 5 06-09-2005 00:08:46
Asignar la ruta de tablas en tiempo de ejecucion tortelini Varios 2 19-03-2005 12:13:53


La franja horaria es GMT +2. Ahora son las 00:24:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi