struct und Query



  • Hallo,

    mal wieder ne Frage vom Noob 😉 und zwar versuch ich die letzten 2h die daten von einer TQuery - Abfrage in ein struct reinzuschreiben hab mir mal ein bsp. von fatman genommen der das ganze in eine csv schreibt und speichert

    q_adressen->Close();
    q_adressen->SQL->Clear();
    q_adressen->SQL->Add("SELECT * FROM Mitarbeiter WHERE EinstiegsD = :ein");
    q_adressen->ParamByName("ein")->AsString = einstieg;
    q_adressen->Open();
    q_adressen->First();
    
    l_anz->Caption = q_adressen->RecordCount;
    
    TStringList *Ausgabe;
    AnsiString Bezeichner, Inhalt;
    
    Ausgabe = new TStringList;
    
    q_adressen->First();
    
     // ermittle die Einträge aus aktuellem Datensatz
     for (int Zeile=0; Zeile < q_adressen->RecordCount; Zeile++)
     {
      for (int Spalte = 0; Spalte < q_adressen->Fields->Count; Spalte++)
      {
       //gehe zur nächsten Zeile des Abfrageobjekts
       //schreibe Zeile in String durch ; getrennt
       Inhalt += q_adressen->Fields->Fields[Spalte]->AsString + ",";
      }
      // schreibe Zeile in AusgabeStringlistenobjekt
      struct ADRESSEN ADI[5000]  = {Inhalt};   /*Hier kommt jetzt eine Fehlermeldung  Konvertierung von AnsiString nach ADRESSEN nicht möglich im struct sind aber alle Felder als AnsiString deklariert*/
    
      // leere String -> für Werte aus neuer Zeile
      Inhalt = "";
    
      // gehe zu nächstem Datensatz
      q_adressen->Next();
    
     }
    
    // speichere Inhalt als CSV-Datei
    //Ausgabe->SaveToFile("c:\\mitarbeiter.log");
    delete Ausgabe;
    

    habts ihr eine idee wie es trotzdem gehen könnte?

    grüße hCk



  • Hallo

    Hier kommt jetzt eine Fehlermeldung Konvertierung von AnsiString nach ADRESSEN nicht möglich im struct sind aber alle Felder als AnsiString deklariert

    Trotzdem kannst du nicht AnsiString in deinen Struct-Typ verwandeln, schließlich kann der Compiler nicht raten. ob und welches deer Struct-Member gemeint ist. Du must also den Struct-Member noch angeben.

    ADRESSEN ADI[index].<Membername> = <AnsiString-Variable>
    

    Desweitern ist diese Zuweisung falsch, Du must das Array Element für Element füllen.

    Benutzt beim Posten von Quellcode hier im Forum bitte die Code-Tags.

    bis bald
    akari



  • sry die tags haben sich gegenseitig beharkt wollte im c++ tag noch was fett schreiben..

    habs jetzt mal so gemacht:

    Inhalt = q_adressen->FieldByName("Vorname")->AsString;
    struct ADRESSEN ADI[1].Vorname = {Inhalt};
    

    kommt jetzt Fehler in der Deklarationssyntax 😞



  • heckticker schrieb:

    Inhalt = q_adressen->FieldByName("Vorname")->AsString;
    struct ADRESSEN ADI[1].Vorname = {Inhalt};
    

    warum verwendest du die geschweiften Klammern?

    und lass das struct weg, ich vermute du hast das schon irgendwo definiert und willst es dort nicht neu definieren 😉



  • ADRESSEN ADI[1].Vorname = Inhalt;
    

    ohne struct und ohne Klammern.
    [edit]viel zu spät. 🙂 [edit]



  • ihr hattet recht, und ich bin voll blöde das adressen kann auch weg *sich an den kopf klatscht 😉

    öhm aber komischerweise wenn ich hinter ADI das [1] setze hagelt es Fehlermeldungen wenn ich das ganze jetz so mache -->

    ADI.Vorname[1] = test;
    

    klappts einwandrei....



  • Hast ja recht. Da habe ich wohl gepennt. Das ADRESSEN gehört natürlich auch weg, es ist ja keine Deklaration.



  • passt ja muss ja selber meinen gehirnschmalz anstrengen 😉 danke euch


Anmelden zum Antworten