Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema cargar combo box from DB (https://www.clubdelphi.com/foros/showthread.php?t=51533)

Nomad 18-12-2007 16:14:33

Problema cargar combo box from DB
 
Estoy haciend lo siguiente:

Código:

Query.SQL.Text := 'Select Producto from Productos order by Producto asc';
Query.Open;
Query.ExecSQL;
Combo.Clear;
WHile Query.FindNext Do
Begin
    Combo.Items.Add(Query.Fields[0].AsString);
end;
Query.Close;

y me presenta el siguiente error:

http://www.yourfilehost.com/media.php?cat=image&file=screenshot.JPG


que podra ser?

luisgutierrezb 18-12-2007 16:20:19

Ese error lo recuerdo en Delphi 5 cuando no tiene el parche para el ADO, porque mejor en lugar de utilizar ese procedimiento porque no usas un TDBLookupComboBox ???

enecumene 18-12-2007 17:26:11

hola, no es necesario hacer un open y luego un execsql porque es practicamente lo mismo, y estas haciendo un close luego de abrir:

Código:

Query.Close;
Query.SQL.Clear;
Query.SQL.Text := 'Select Producto from Productos order by Producto asc';
Query.Open;
Query.first;
if not Query.eof then
Begin
    Combo.Items.Add(Query.Fields[0].AsString);
    Query.next;
end;

Saludos.

Nomad 19-12-2007 17:20:05

Cita:

Empezado por enecumene (Mensaje 253317)
hola, no es necesario hacer un open y luego un execsql porque es practicamente lo mismo, y estas haciendo un close luego de abrir:

Código:

Query.Close;
Query.SQL.Clear;
Query.SQL.Text := 'Select Producto from Productos order by Producto asc';
Query.Open;
Query.first;
if not Query.eof then
Begin
    Combo.Items.Add(Query.Fields[0].AsString);
    Query.next;
end;

Saludos.


Gracias a ambos por la ayuda... te comento enecumene, que tuve que poner el open porque si solo utilizaba el Query.execsql, me dice que no se podia hacer la operacion solicitada en un closed dataset, entonces opte por hacer eso... voy a probar tu consejo y les cuento como me fue...

Nomad 19-12-2007 17:37:19

Cita:

Empezado por enecumene (Mensaje 253317)
hola, no es necesario hacer un open y luego un execsql porque es practicamente lo mismo, y estas haciendo un close luego de abrir:

Código:

Query.Close;
Query.SQL.Clear;
Query.SQL.Text := 'Select Producto from Productos order by Producto asc';
Query.Open;
Query.first;
if not Query.eof then
Begin
    Combo.Items.Add(Query.Fields[0].AsString);
    Query.next;
end;

Saludos.

Ya probe la solucion propuesta por encumene y me da exactamente el mismo error.

enecumene 19-12-2007 17:44:44

Al parecer el error dice no hay registros en la tabla segun en mi entender, pero intentalo no con el F9 sino ya compilado a ver si sigue saliendo el error, porque me parece bastante raro.

ahh otra cosa en que evento de que componente estas usando?

Saludos.

egostar 19-12-2007 17:50:52

Bueno, aqui hay un pequeño detalle, estas usando solo una función if pero para hacer un "barrido" de información, deberias de usar un WHILE

Código:

Query.SQL.Clear;
Query.SQL.Text := 'Select Producto from Productos order by Producto asc';
Query.Open;
Query.first;
WHILE not Query.eof DO begin
    Combo.Items.Add(Query.Fields[0].AsString);
    Query.Next;
end;
Query.Close;

Ahora, tambien hay que asegurarnos que la consulta realmente tenga datos...;)

Salud OS


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

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