Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Error al llenar TListView a partir de TIBQuery (https://www.clubdelphi.com/foros/showthread.php?t=95628)

Angel.Matilla 24-03-2022 18:32:37

Error al llenar TListView a partir de TIBQuery
 
Lo pongo aquí porque creo que es un error de Builder.

Tengo este trozo de código:
Código:

TListItem *pItem;

fMenu->Query->Close();
fMenu->Query->SQL->Text = "";
fMenu->Query->SQL->Text = "SELECT DISTINCT Junta, NomJunta FROM Rc02";
fMenu->Query->Open();

LisJun->Items->Clear();
for (; !fMenu->Query->Eof; fMenu->Query->Next())
{
    pItem = LisJun->Items->Add();
    pItem->Caption = fMenu->Query->FieldByName("NomJunta")->AsString;
    pItem->SubItems->Add(fMenu->Query->FieldByName("Junta")->AsInteger);
}

donde
  • LisJun un TListView
  • Query es un TIBQuery
  • Rc02 un vista de SQL
y tanto Query como Rc02 se usan en otras partes del proyecto. Cuando voy a ejecutar esta parte del código al entrar en el bucle, y no al hacer el Open del query, para recorrer el resultado del query, cuando añado el item al TListView me da este error:
Cita:

Dynamic SQL Error
SQL Error Codi = -104
Token unknown - line 3, column 1
ORDER
pero voy más allá. Corriéndolo con el depurador, al asignar el caption, me da este error:
Cita:

Query: Field 'NomJunta' not found
Como podéis ver el query no tiene un ORDER y el campo NomJunta sí existe en el mismo y de hecho tiene una sola línea, con lo cual todavía entiendo menos el primer error que se da. De hecho si ejecuto el query en IBManager me da y una salida correcta. La linea tras el Close (fMenu->Query->SQL->Text = "") la puse para asegurarme de que al definirlo no había nada dentro del mismo. Me tiene total y absolutamente perplejo porque esta estructura la uso en un motón de sitios en el proyecto.

Angel.Matilla 24-03-2022 18:50:21

¡Tócate las narices! He borrado el objeto TListView, lo he vuelto a poner y ahora funciona bien. ¿Alguien me lo explica? :mad:

cloayza 24-03-2022 18:54:42

Estimado y si prueba esta variante...
Código:

TListItem *pItem;

fMenu->Query->Close();
fMenu->Query->SQL->Text = "";
fMenu->Query->SQL->Text = "SELECT DISTINCT Junta, NomJunta FROM Rc02";
fMenu->Query->Open();

LisJun->Items->Clear();

while (!fMenu->Query->Eof)
{
    pItem = LisJun->Items->Add();
    pItem->Caption = fMenu->Query->FieldByName("NomJunta")->AsString;
    pItem->SubItems->Add(fMenu->Query->FieldByName("Junta")->AsInteger);

    fMenu->Query->Next())
}

Saludos cordiales

Angel.Matilla 25-03-2022 10:09:47

Gracias. También lo había probado y el error era el mismo. Está claro que sin darme cuenta cambié algo en el TListView y al borrarlo y volverlo a poner función bien.


La franja horaria es GMT +2. Ahora son las 09:52:19.

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