Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con TADOQuery (https://www.clubdelphi.com/foros/showthread.php?t=49575)

Nomad 24-10-2007 21:23:56

Problema con TADOQuery
 
Estoy usando un TADOQUERY para hacer una consulta a una DB en SQL Server...

Código Delphi [-]
Query1.SQL.Text := 'Select IdDepartamento,Departamento from Departamentos';
Query1.Active   := True;
recs := Query1.MaxRecords;
WHile not Query1.Eof Do
Begin
    Combo.Items.Add(Query1.Fields[0].asstring);
    if not Query1.Eof then
       Query1.FindNext;
end; // fin del While

Resulta que siempre he usado el Query1.FindNext, pero ahora me da un error, cuando llega al final de los registros. Por eso utilizo el Query1.EOF, pero aun asi me da el error.

Alguna idea?

Gracias de antemano...

Caral 24-10-2007 21:30:17

Hola
Y asi:
Código Delphi [-]
Query1.SQL.Text := 'Select IdDepartamento,Departamento from Departamentos';
Query1.Active   := True;
recs := Query1.MaxRecords;// esto no se para que lo usas?
WHile not Query1.Eof Do
Begin
    Combo.Items.Add(Query1.Fields[0].asstring);
     Query1.Next;
end;
No entiendo la necesidad de repetir el Eof dos veces, tampoco por que usar FindNext.
Bueno, pruebalo, tal vez sirva.
Saludos

enecumene 24-10-2007 21:37:23

Hola, Caral te falto una linea para estar mas seguros:

Código Delphi [-]
Query1.SQL.Text := 'Select IdDepartamento,Departamento from Departamentos';
Query1.Active   := True;
recs := Query1.MaxRecords;// esto no se para que lo usas?
Query1.First;
WHile not Query1.Eof Do
Begin
    Combo.Items.Add(Query1.Fields[0].asstring);
     Query1.Next;
end;

Saludos.

Caral 24-10-2007 21:45:29

Hola
Y crees que haga falta con el eof?
No crees que este recorre la tabla desde el principio?
No se, Pregunto?.
Lo que hace es rellenar un combobox, curiosamente llama a dos campos, pero solo usa uno en el combo, por que?, ni idea, el sabrá.
En tal caso si afinamos mas seria algo asi:
Código Delphi [-]
Query1.SQL.Text := 'Select IdDepartamento,Departamento from Departamentos';
Query1.Active   := True;
recs := Query1.MaxRecords;// esto no se para que lo usas?
WHile not Query1.Eof Do
Begin
    Combo.Items.Add(Query1.Fields[0].asstring +' '+ Query1.Fields[1].asstring) ;
     Query1.Next;
end;
Maestro que te parece, he aprendido algo?:)
Saludos

enecumene 24-10-2007 22:14:32

Hola Caral, lo que pasa es que a veces cuando se llena un combobox no siempre se llena con todos los datos, por eso el first para asegurarnos de que empiece desde el primer registro, lo digo porque ya me ha pasado varias veces, es solo para estar seguros.

Saludos.

Nomad 24-10-2007 22:16:57

Cita:

Empezado por Caral (Mensaje 240883)
Hola
Y crees que haga falta con el eof?
No crees que este recorre la tabla desde el principio?
No se, Pregunto?.
Lo que hace es rellenar un combobox, curiosamente llama a dos campos, pero solo usa uno en el combo, por que?, ni idea, el sabrá.
En tal caso si afinamos mas seria algo asi:
Código Delphi [-]Query1.SQL.Text := 'Select IdDepartamento,Departamento from Departamentos';
Query1.Active := True;
recs := Query1.MaxRecords;// esto no se para que lo usas?
WHile not Query1.Eof Do Begin Combo.Items.Add(Query1.Fields[0].asstring +' '+ Query1.Fields[1].asstring) ;
Query1.Next;
end;

Maestro que te parece, he aprendido algo?:)
Saludos

Ok se les agradece a ambos

Llamo los dos campos porque mas abajo los quiero utilizar.
Y Llamo el EOF a ver si asi sirve, porque como se caia al llegar al FindNext, entonces pense que si volvio a preguntar talvez no, pero siguio igual, voy a probar y luego les cuento.

Gracias!

Caral 24-10-2007 22:25:12

Hola
Me parece muy bien, por eso te pregunte, todos los dias se aprende algo.
Saludos

Nomad 24-10-2007 22:25:50

Cita:

Empezado por Caral (Mensaje 240883)
Hola
Y crees que haga falta con el eof?
No crees que este recorre la tabla desde el principio?
No se, Pregunto?.
Lo que hace es rellenar un combobox, curiosamente llama a dos campos, pero solo usa uno en el combo, por que?, ni idea, el sabrá.
En tal caso si afinamos mas seria algo asi:
Código Delphi [-]Query1.SQL.Text := 'Select IdDepartamento,Departamento from Departamentos';
Query1.Active := True;
recs := Query1.MaxRecords;// esto no se para que lo usas?
WHile not Query1.Eof Do Begin Combo.Items.Add(Query1.Fields[0].asstring +' '+ Query1.Fields[1].asstring) ;
Query1.Next;
end;

Maestro que te parece, he aprendido algo?:)
Saludos

Ese recs, era para ver si encontraba cuantos registros y para el ciclo de otra forma...

Nomad 24-10-2007 22:33:56

Muchas gracias, problema resuelto

enecumene 25-10-2007 15:09:46

y no podrias postear aqui la solucion, en caso de que a alguien mas le suceda lo mismo?.

Saludos

Nomad 25-10-2007 15:16:55

Solucion
 
Cita:

Empezado por enecumene (Mensaje 241046)
y no podrias postear aqui la solucion, en caso de que a alguien mas le suceda lo mismo?.

Saludos

Es que la solucion, es lo que postearon los compañeros...

Query1.next en vez Query1.findnext y listo.

enecumene 25-10-2007 15:19:27

OOOk, entendido.

Saludos


La franja horaria es GMT +2. Ahora son las 08:47:34.

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