Tabelle an Klasse übergeben ???



  • Hallo Leute!

    Ich habe folgendes Problem bei dem ihr mir sicher helfen könnt:
    Ich möchte eine Tabelle an eine klasse stunde übergeben. Diese enthält einen status- und einen stundenwert sowie setStatus und setValue. Die tabelle enthält in der ersten spalte den status und dann fortlaufend die stunden. der satus ist pro stunde an einem tag gleich.
    1. wie kann ich das in einer schleife lösen, da ja die spalten einzeln angesprochen werden müssen?
    2. kann ich das über ein dbgrid oder ähnliches machen?
    3. wenn nicht 2., wie kann ich FieldByName(status) an ein array übergeben?

    besten dank für eure mühen....

    Thomas



  • ich würd ne unterklasse/struktur machen von der du dann ein Array von reinmachst in die Zeitklasse... also motto

    struct TABELLENINHALT
    {
    int indexblabla;
    AnsString Textblabla;
    // etc
    };

    class klasse
    {
    int blabla2;
    TABELLENINHALT tabelleninhalt[40];
    };

    .... eine datenbank ansich in eine Klasse geht soweit ich weiss nicht weil es ja eine Datei udn keine Komponente ist.... du könntest höchstens wärend der Laufzeit ein dbgrid erzeugen und das vieh in die Klasse machen oder so.. aber dann hast du auch nur nen angucker und nicht die Daten ansich... hängt einfach davon ab was du machen willst... zum wegspeichern wirst du wohl das so wie oben oder ähnlcih machen müssen und dnan mit ner Schleife rein damit.



  • Hallo!

    das Problem liegt ja gearde darin, wie ich den inhalt in die klasse bekomme. Hier mal mein derzeitiger Code:

    int stat[maxAnz] = Table1->FieldByName("STATUS")->AsInteger;
          for (int y=0; y>=23; y++)
          {
             spalte = IntToStr(y);
             int val[maxAnz] = Table1->FieldByName(spalte)->AsInteger;
             for (int x=1; x>=Table1->RecordCount; x++)
             {
                comp.horizont[y].setStatus(x,stat[x]);
                comp.horizont[y].setValue(x,val[x]);
                Table1->Next();
             }
          }
    

    Da stimmt aber was nicht...

    dominodata



  • den Inhalt der Tabelle bekomsmt du indem du die RecNo setzt auf den Datensatz den du haben willst und dann von dem DatenbankenFeld -> Value das rüberkopierst... also beispielsweise

    datenbank -> RecNo = 4;
    int blabla = datenbankWertefeld -> Value

    bzw AnsiString blabla je nachdem was fürn Feldtyp du grade hast..
    geht glaubich auch mit Items aber ich find direktes ansprechen irgendwie übersichtlicher



  • Hi,

    übergib doch das DataSet komplett, anstatt alles einzeln rüberzuschieben. 🙄
    Hat dann auch noch den Vorteil, das du bereits eine Struktur vorliegen hast und nicht auch noch selber schreiben musst.



  • Hallo,

    ich hab mal eine ganz dumme Frage, wie übergebe ich das DataSet???

    Gruss,
    MTO



  • Hi,

    so in etwa:

    void TForm1::DataSettest(TDataSet* ADataSet)
    {
    if(ADataSet && ADataSet->Active)
       {
          ADataSet->First();
          StringGrid1->RowCount=ADataSet->RecordCount;
          while(!ADataSet->Eof)
          {
          for (int i=1;i<=ADataSet->FieldCount ;i++)
              StringGrid1->Cells[i][ADataSet->RecNo]=ADataSet->Fields->FieldByNumber(i)->AsString;
          ADataSet->Next();
          }
       }
    }
    

Anmelden zum Antworten