Witam. W swoim programie muszę wyświetlić dane pobierane z bazy danych accessa. Dotyczą one książek oraz ich autorów. Wiadomym jest, że jedna książka może mieć wielu autorów. Tutaj rodzi się problem, gdyż ze względu na układ bazy danych wynikiem kwerendy wybierającej są np. cztery te same książki (ponieważ posiada ona czterech autorów) - patrz pierwszy screenshoot.
Napisałem więc algorytm, który w zamierzeniu ma czytać ową kwerendę od początku do końca, kumulować nazwiska autorów tej samej książki (egzemplarza) a następnie wpisywać dane do tabeli pomocniczej. Niestety na zamierzeniach się skończyło a ja już nie mam pomysłów co może być nie tak :? Wyniki działania algorytmu prezentuje screen nr. 2.
tutaj kod:

 void DaneKsiazki()
{   int Idegz;
    AnsiString ListaAutorow, Autor;

DataModule1->POM->Active=false;
DataModule1->POM->Exclusive=true;
DataModule1->POM->EmptyTable();
DataModule1->POM->Exclusive=false;
DataModule1->POM->Active=true;

DataModule1->Query6->First();
Idegz = DataModule1->Query6->FieldValues["Id"];
ListaAutorow = "";
while (!DataModule1->Query6->Eof)
    {   Autor = DataModule1->Query6->FieldValues["Nazwisko"];

        if (Idegz == DataModule1->Query6->FieldValues["Id"])
            {
              ListaAutorow+=(Autor+"; ");
            }
        else
        {
            DataModule1->Query6->Prior();
            DataModule1->POM->Insert();
            DataModule1->POM->FieldValues["Id_Egz"]=DataModule1->Query6->FieldValues["Id"];
            DataModule1->POM->FieldValues["Umiejscowienie"]=DataModule1->Query6->FieldValues["Umiejscowienie"];
            DataModule1->POM->FieldValues["Id_K"]=DataModule1->Query6->FieldValues["Id_Ksiazki"];
            DataModule1->POM->FieldValues["Tytul"]=DataModule1->Query6->FieldValues["Tytul"];
            DataModule1->POM->FieldValues["Id_Wyd"]=DataModule1->Query6->FieldValues["Id_Wydawnictwa"];
            DataModule1->POM->FieldValues["Autorzy"]=ListaAutorow;
            DataModule1->Query6->Next();
            Idegz = DataModule1->Query6->FieldValues["Id"];
            ListaAutorow = (Autor+"; ");
        }
          DataModule1->Query6->Next();
    }
}

Wynik działania kwerendy przedstawiony jest na pierwszym załączniku (Clipboard02.jpg). Wynik działania algorytmu (zaznaczone pola to tak naprawdę jeden egzemplarz książki, dla którego powyższy kod powinien utworzyć jeden rekord ze sklejonymi nazwiskami autorów) na drugi (Clipboard04.jpg).