Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cargar un BDListBox (https://www.clubdelphi.com/foros/showthread.php?t=51956)

LENOCB 05-01-2008 01:22:26

Cargar un BDListBox
 
Hola, estoy tratando de cargar automaticamente un DBListBox pero no da pie con bola esto, les comento, tengo en un datamodule una adoconnection; en el form tengo el dblistbox tambien tengo un datasource y un adoquery.
seteo en el dblistbox lo siguiente :
DataSource = DS1 (el datasource del form)
DataFiel = Nombre (el campo del la tabla )

en el DataSource lo puse así :

DataSet = ADOQuery1

en el ADOQuery1 lo puse así:
connection : ADOConnection (del DataModule)
y la sentencia sql es la siguiente :
Select * From TGrupos.

y no muestra nada en el dblistbox, lo raro es que la conexion me dice que esta bien ..

que pasará ??
saludos

Caral 05-01-2008 01:40:13

Hola
Como no se hacer las cosas bien, entonces las hago asi:
Código Delphi [-]
 QTemp.SQL.Text := 'Select CodCliente From Clientes ';
   QTemp.Active := True;
   While not QTemp.Eof do
   begin
      DBListBox1.Items.Add(QTemp.Fields[0].Text);
      QTemp.Next;
Y no tengo que enlazar el componente con nada.
Saludos

LENOCB 05-01-2008 01:47:20

gracias por responder pero me salta el siguiente error
List Index Out Of Bounds(0)

Caral 05-01-2008 01:59:33

Hola
Si colocas el codigo como te lo puse, es muy probable.
El asunto esta asi:
List Out Of Bounds quiere decir que no estas enlazando el campo que debes.
recuerda que los campos empiezan en 0
ejemplo:
Tengo una tabla con estos campos:
nombre
edad
fecha
osea tres campos
el campo nombre seria el campo 0
Si colocas la sentencia con dos campos, te dara ese mismo error.
Espero que lo entiendas.
Saludos

LENOCB 05-01-2008 02:05:20

en la tabla tengo 2 campos , el error ya esta, era que ponia 1º el active en true y era despues de la llamada al query; pero no muestra nada, sigue sin mostrar nada en el dblistbox

Caral 05-01-2008 02:14:04

Hola
Revisa bien todo, yo lo probé antes de decirlo y si carga los datos.
Saludos

LENOCB 05-01-2008 02:19:34

Hola
esto es lo que puse, y no sigue sin cargar nada, yo uso ADO, por ahí debe estar el tema, hay alguna forma que veas lo que hice ??

ADOQuery2.SQL.Text:='';
ADOQuery2.SQL.Text:='Select Nombre From TGrupos ';
ADOQuery2.Active:=True;

While (ADOQuery2.Eof) DO BEGIN
DBListBox1.Items.Add(ADOQuery2.Fields[0].Text);
ADOQuery2.Next;

Caral 05-01-2008 02:31:10

Hola
Yo uso Ado y no es el problema.
Si quieres puedes poner un archivo adjunto, pero tengo una duda?
Para que pones dos veces:
Código Delphi [-]
ADOQuery2.SQL.Text:=
No tiene logica, text borra el contenido de la consulta si hay alguna otra en el query, no se necesita clear ni nada por el estilo.
Lo normal es:
Código Delphi [-]
ADOQuery2.SQL.Text:='Select Nombre From TGrupos ';
ADOQuery2.Active:=True;

While not ADOQuery2.Eof DO BEGIN
DBListBox1.Items.Add(ADOQuery2.Fields[0].Text);
ADOQuery2.Next;

Si te fijas bien en tu consulta, veras que:
1- Tienes repetido text.
2- No tienes NOT en el while
3- encierras el query entre parentesis.
Saludos

LENOCB 05-01-2008 02:39:42

jeje, se nota que sabes !!!
ya está eran esas cosas nomás.-
Muchisimas Gracias ...

pronto pondré nuevas dudas jaja

saludos

LENOCB 05-01-2008 15:58:09

Hola, tengo otra pregunta.-
yo quiero ahora,que al hacer click sobre uno de los campos del dblistbox, se muestre en un dbgrid, los datos correspondiente a ese campo, ejemplo, en mi ejemplo si se hace click en internet(un campo del listbox), yo quiero que en el dbgrid me salga lo relacionado a interntet, que claro está, en otra tabla, en donde tengo el id (de internet) de lo que seleccioné, me explico, no me sale como pasar el parametro para hacer la consulta correspondiente, el parametro que le paso es el nuemero de posision del dblistbox, que coincide con el campo codigo_g de la tabla de TGrupos, a ese codigo se lo mando (!! ese es el problema no se como hacerlo ¡¡) a la tabla TDesG, para que busque que datos tienen el mismo codigo y lo muestro en el dbgrid.-
Se entendió ??
saludos

Caral 05-01-2008 16:07:11

Hola
Bueno, veo que nos as visto el wiki.:D
Aqui tienes un ejemplo sencillo.
Código Delphi [-]
procedure TForm1.ListBox1Click(Sender: TObject);
begin
    case ListBox1.ItemIndex of
     0 : begin
          ShowMessage('hola');
         end;
     1 : begin
          ShowMessage('nada');
         end;
 end;
end;
Como veras:
1- se usa el evento onclick del listbox
2- se usa un case of
3- se definen los items por numero.
Es una de las tantas formas de hacerlo.
Saludos

LENOCB 05-01-2008 16:25:27

si lo vi :), pero con un case, se volveria lento digamos si tengo demasiados campos en dblistbox, a demas al dblistbox pueden agregarse nuevos campos, así que con un case no sirviria, ya saqué la forma de saber en cual de los campos del dblistbox se hizo referencia, eso me da un numero, ahora lo que no se es como pasarlo a otra consulta, para que en el dbgrid, me muestre otra informacion referida a ese numero, me explico ?

Caral 05-01-2008 16:49:47

Hola
Codigo, siempre codigo es la mejor forma de ver que pasa o que quieres hacer.
Coloca el codigo de lo que tienes, asi veremos o entenderemos mas.
Saludos

LENOCB 05-01-2008 17:04:32

es que ese es el problema no me sale el codigo, por ejemplo;
en COD (que es una variable integer), tengo guardado el numero que hace referencia a lo seleccionado en el dblistbox; ahora yo quiero pasar como parametro (todo en ADO), ese COD, para poder hacer otra consulta, la macana es esa, no se como hacerlo, acá pongo mas o meno el codigo en donde busco y guardo ese COD, para luego pasarlo a la consulta

begin
i:=0;
cant:=DBListBox1.Count;
While (i <> cant) do begin
If(DBListBox1.Selected[i]=True)then
cod:=i+1;
i:=i+1;
end;
edit1.Text:=IntToStr(cod);
FormSistema.ADOQuery1.SQL.Text:='Select Cod_G From TContraseñas Where ((Cod_G) = cod ) ';
FormSistema.ADOQuery1.Active:=True;

y no compila, alguna macana me estoy mandando y no me doy cuenta, jeje

Caral 05-01-2008 17:11:11

Hola
Veamos asi:
Código Delphi [-]
begin
i:=0;
cant:=DBListBox1.Count;
While (i <> cant) do begin
If(DBListBox1.Selected[i]=True)then
cod:=i+1;
i:=i+1;
end;
FormSistema.ADOQuery1.SQL.Text:='Select Cod_G From TContraseñas Where Cod_G = :cod ) ';
edit1.Text:=IntToStr(cod);
FormSistema.ADOQuery1.Active:=True;
end;
No se exactamente que pretendes hacer, pero hoy no traje la bolita.:D
Saludos

LENOCB 05-01-2008 17:16:32

jaja, lo que intento hacer, acá en manejar contraseñas, en el dblistbox estan los grupos de esas contraseñas, por ejemplo Internet; lo que quiero es que al hacer click sobre el link del dblistbox (por ejemplo en Internet), en el dbgrid me salga las contraseñas, el nombre del usuario para ese grupo (es decir Internet).-

Caral 05-01-2008 17:17:54

Hola
Ves, estoy mas perdido que tu.:D
Olvida el otro, no va a servir, este es:
Código Delphi [-]
begin
i:=0;
cant:=DBListBox1.Count;
While (i <> cant) do begin
If(DBListBox1.Selected[i]=True)then
cod:=i+1;
i:=i+1;
end;
FormSistema.ADOQuery1.SQL.Text:='Select Cod_G From TContraseñas Where Cod_G = :cod ) ';
FormSistema.ADOQuery1.Parameters.ParamByName('cod').Value := StrToInt(Edit2.Text);
FormSistema.ADOQuery1.Active:=True;
end;
o tambien:
Código Delphi [-]
begin
i:=0;
cant:=DBListBox1.Count;
While (i <> cant) do begin
If(DBListBox1.Selected[i]=True)then
cod:=i+1;
i:=i+1;
end;
FormSistema.ADOQuery1.SQL.Text:='Select Cod_G From TContraseñas Where Cod_G = :cod ) ';
FormSistema.ADOQuery1.Parameters[0].Value := StrToInt(Edit2.Text);
FormSistema.ADOQuery1.Active:=True;
end;
Ahora si vera el parametro cod.:D
Saludos

LENOCB 05-01-2008 17:27:56

Hola
esta parte: edit1.Text:=IntToStr(cod);
solo lo hago para guiarme nada mas y poder ver si esta bien el numero que tira, yo eso ya lo tengo guardado en cod ; me explico ? igual no muestra nada en el dbgrid !!!!

Caral 05-01-2008 17:34:32

Hola
Que dificil la pones.
Primero, supongo que el dbgrid lo tienes ligado a la consulta, (adoquery1).
Si tienes el codigo en cod, pues es el que vas a usar.
Código Delphi [-]
begin
i:=0;
cant:=DBListBox1.Count;
While (i <> cant) do begin
If(DBListBox1.Selected[i]=True)then
cod:=i+1;
i:=i+1;
end;
FormSistema.ADOQuery1.SQL.Text:='Select Cod_G From TContraseñas Where Cod_G = :cod ) ';
FormSistema.ADOQuery1.Parameters.ParamByName('cod').Value := cod;
FormSistema.ADOQuery1.Active:=True;
end;
Me imagino que sera asi.
Recuerda que cod es integer, el campo (Cod_G) tambien lo tiene que ser.
Saludos

LENOCB 05-01-2008 17:40:41

hola, no me deja ligar el dbgrid al adoquery, solo aun datasource ; ahora me aparecen bien los registros, pero no se ven, se entiende ? cuando hago click e internet, en el dbgrid salen 2 filas (que estan bien, ya que tengo 2 referencias a internet), pero no los veo.... jeje me esta volviendo loco esto


La franja horaria es GMT +2. Ahora son las 15:29: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