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 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
  #2  
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
  #3  
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
  #4  
Antiguo 01-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
No te sale nada porque mediante datafield, datasource no estas alimentando la lista, lo que haces es indicar que campo vas a modificar. Para que quieres escoger algun cliente? para modificar el campo de otra base de datos no? Con el DBListBox por ejemplo yo podria hacer

DBListBox.DataSource := unidades;
DBListBox.DataField := 'TIPO_UNIDADES';
DBListBox.Items.Text := 'kgs litros dm mm';

y entonces al escoger del DBListBox, me canviaria el campo 'TIPO_UNIDADES' del datasource UNIDADES. El DBLookUpComboBox hace lo mismo, solo que escogeria la lista de otra base de datos, que creo que es lo que quieres hacer tu. Releetelo con calma y ya veras que es eso saludos.
Responder Con Cita
  #5  
Antiguo 02-11-2008
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 22
Bauhaus1975 Va por buen camino
Hola, tenías toda la razón.
He usado un TDBLookupList, he asignado las propiedades 'LookupField' y 'LookupDisplay' y ha funcionado. Sin duda, mi falta de conocimientos me hábía hecho confundir la funcionalidad del TDBListbox y el TDBLookupList. Además de querer haber asginado el campo, motivo de inicio de este post.
Así que muchas gracias por tu paciencia porque de no ser por tu ayuda me hubiera costado salir adelante.
Gracias y un saludo.
Responder Con Cita
  #6  
Antiguo 02-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
de nada para eso esta el foro
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 05:40:39.


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