PDA

Ver la Versión Completa : Problema cargar combo box from DB


Nomad
18-12-2007, 16:14:33
Estoy haciend lo siguiente:


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 (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:

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
hola, no es necesario hacer un open y luego un execsql porque es practicamente lo mismo, y estas haciendo un close luego de abrir:

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
hola, no es necesario hacer un open y luego un execsql porque es practicamente lo mismo, y estas haciendo un close luego de abrir:

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


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