Foros Club Delphi

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

Victor Vega 07-09-2007 06:58:49

Listview... con ADO
 
Hola de nuevo amigos programadores.
Ahora se me presento un detalle con mi proyecto, lo trabajo con ADO como mencione en un hilo anterior, este ya me permite guardar, buscar, editar y eliminar registro de una base de datos sql server 7 de la mejor manera.
pero ahora necesito de su ayuda ya que no he podido cargar los datos que posea en un control Listview;
esto es lo que he tratado de hacer pero me indicar error:

Código:


QLlenar.SQL.Clear;
QLlenar.SQL.Add('select * from Datos order by cedula');
  QLlenar.ExecSQL;
  if QLlenar.RecordCount >=1
    then begin
      lista.Clear;
      QLlenar.First;
      while not QLLenar.Eof do
        begin
        ListItem:=lista.Items.Add;
        ListItem.Caption:=  FieldByName('nombres').AsString;
        end;
      QLlenar.Next;

Espero me puedan ayudar, ya que este control me paece mas presentable que el DBGrid:o

Delphius 07-09-2007 07:09:47

Hola Victor Vega. ¿Podrías darnos a conocer el error y señalarnos en que parte ocurre?

Viendo rápidamente tu código te puedo decir que el error que veo es que estás haciendo el Next fuera del bucle. Tu código debería ir así:

Código Delphi [-]
QLlenar.SQL.Clear;
QLlenar.SQL.Add('select * from Datos order by cedula');
QLlenar.ExecSQL;
  if QLlenar.RecordCount >=1
    then begin
             lista.Clear;
             QLlenar.First;
             while not QLLenar.Eof do
               begin
                 ListItem:=lista.Items.Add;
                 ListItem.Caption:=  FieldByName('nombres').AsString;
                 QLlenar.Next; // <- esto va aquí
                end;
           end; // <- te faltó un end para cerrar el THEN

Ha.. por cierto.. utiliza la etiquetas DELPHI y no las CODE.
Saludos,

Victor Vega 07-09-2007 07:34:39

Hola Delphius
 
Sabes copie el codigo q me diste y me ocurre el mismo error, ste se da en la linea siguiente:

Código Delphi [-]
 
ListItem.Caption:=  FieldByName('nombres').AsString;
el error me da al momento de compilar y me dice:

[Error] Unit1.pas(215): Undeclared identifier: 'FieldByName'

espero me ayudes a resolverlo...

Delphius 07-09-2007 07:39:18

Ya vi... el error se debe a que no se puede identificar el objeto al que pertenece FieldbyName sólo debes poner:
Código Delphi [-]
QLlenar.fieldbyName(...)

Prueba con esto.

Saludos,

Victor Vega 07-09-2007 07:50:18

Todavia falla
 
le coloque esta parte q me diste:

Código Delphi [-]
ListItem.Caption:= QLlenar.FieldByName('nombres').AsString;
y ahora me dice:

QLLenar: Cannot perform this operation on a closed dataset

:(:(:( pense q era porque estaba cerrado y antes del QLlenar.First le agregue QLlenar.Open y aun asi me da ese error:(:(

Delphius 07-09-2007 08:24:04

Disculpa que me haya demorado.

Bueno, ese error se debe a que no estás lanzando correctamente la consulta. Si estás realizando una consulta del tipo SELECT, se espera una orden Open:
Código Delphi [-]
QLlenar.Open;

Mientras que si realizas un INSERT o un UPDATE debes emplear
Código Delphi [-]
QLlenar.ExecSQL;

Cambialo y verás que funciona.

Saludos,

Victor Vega 07-09-2007 08:31:20

Funciono
 
Es correcto amigo, tenia 2 ExecSQL y solo habia quitado uno, al inicio del codigo tenia el otro... Graias me funciono muy bien...:D:D:D

Victor Vega 07-09-2007 08:58:16

SubItems al Listview
 
:eek:Una ultima yuda aqui porfa.....
como agrego un Subitems????.... Hice algo asi:

Código Delphi [-]
 
var
Columna: TListColumn;
 
Columna:= lista.Columns.Add;
Columna.Caption:=QLlenar.FielByName('apellidos').AsString;

pero no me resulta.
vuelve a decirme q o esta declarado FielByName:o:o

Delphius 07-09-2007 09:16:13

Victor... victor... ¿De donde eres? Porque creo que el sueño y el cansancio te está afectado ;)

No existe FielbyName... estoy completamente seguro que lo que tu quieres decir es:

Código Delphi [-]
QLlenar.FieldbyName('apellidos').asString;

A menos de que te hayas equivocado al postear... alli ya no se que decirte. Tendría que ver que cambios le hiciste a tu código.

Saludos,

Victor Vega 07-09-2007 09:29:11

la verdad el cansancio si me mata pero no podre dormir tranquilo hasta no resolver este rollo,
solo necesito agregar a ese listview un subitems

Código Delphi [-]
 
QLlenar.SQL.Clear;
QLlenar.SQL.Add('select * from Datos order by cedula');
QLlenar.Open;
  if QLlenar.RecordCount >=1
    then begin
             lista.Clear;
             QLlenar.Open;
             QLlenar.First;
             while not QLLenar.Eof do
               begin
                 ListItem:=lista.Items.Add;
                 ListItem.Caption:= QLlenar.FieldByName('nombres').AsString;
                 ListItem.SubItems.Add('apellidos');
                 
                 QLlenar.Next;
                end;
           end;

como veras en la parte donde quiero agregar el subitems solo esta add('apellidos') y de esa manera me agrega el tecto apellido al subitems. y si le asigno FieldByName me da el bendito error de no declarado...:confused::confused::confused:

Victor Vega 08-09-2007 05:43:35

De nuevo con el tema del listview
 
Hola como estan regreso con este tema para comunicarles los adelantos q logre hacer hoy, pero q en resumidas aun no logro del todo lo que quiero... les dejo el codigo y les explico lo q sucede:

Código Delphi [-]
 
QLlenar.SQL.Clear;
QLlenar.SQL.Add('select * from Datos order by cedula');
QLlenar.Open;
  if QLlenar.RecordCount >=1
    then begin
             lista.Clear;
             QLlenar.Open;
             QLlenar.First;
             while not QLLenar.Eof do
               begin
                 with lista.Items.Add do
                  begin
                  Caption:= QLlenar.FIeldByName('cedula').AsString;
                  Subitems.Text:= QLlenar.FieldByName('nombres').AsString;
                  Subitems.Text:=QLlenar.FieldByName('apellidos').AsString;
                  end;
             QLlenar.Next;
                 end;
           end;

ya logro añadir a mi lista Subitem, cuando probé con el primer subitems todo funciono bien, pero cuando intente añadir el segundo subitems no me dio error de programación, pero tampoco me inserto nada en la lista.

espero uno de uds me pueda ayudar, y si es Delphius con su paciencia le estare agradecido de mas..
Ademas esto nos servira a todos, asi q es bueno trabajar en conjunto por eso es que somos todos de este club..;):D


La franja horaria es GMT +2. Ahora son las 20:08:31.

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