Datensätze in einem mehrdimensionalen Array zurückgeben.



  • Hallo,

    ich habe zur Zeit folgendes Problem. Ich möchte in einer Funktion Datensätze aus einer Access-DB auslesen und die Datensätze in einem mehrdimensionalen Array zurückgeben.

    Beispiel:

    void C_DB_Functions::get_Adresses(CString strDBTable, ???& myMultidimensionalArray)
    {
      CString Query = "";
      int i = 0,j = 0;
      CDaoDatabase myDB;
      COleVariant var;
      this->Connect2DB(myDB);
      CDaoRecordset myRSet(&myDB);
      CDaoFieldInfo myFI;
      Query.Format("select * from %s",strDBTable);
      myRSet.Open(dbOpenSnapshot,Query,dbReadOnly);
      if (!myRSet.IsEOF())
      {
        while (!myRSet.IsEOF())
        {
    	for (i = 0; i < myRSet.GetFieldCount(); i++)
    	{
     	  myRSet.GetFieldInfo(i,myFI,AFX_DAO_PRIMARY_INFO);
    	  if (myFI.m_nType == dbText || myFI.m_nType == dbMemo)
    	  {
    	    var = myRSet.GetFieldValue(i);
                // Hier möchte ich gerne das Array füllen. j = Datensatznummer, i = Feldnummer
    	    myMultidimensionalArray[j][i] = CString(V_BSTRT(&var));
              }
            }
    	myRSet.MoveNext();
        }
        j++;
      }	
      var.Clear();
      myDB.Close();
    }
    

    Folgende Fragen habe ich dazu:
    1. Mit welchem Datentyp kann ich multidimensionale Arrays erzeugen, die CStrings speichern?
    Beispiel:
    myArray[0][0] = "Vorname1";
    myArray[0][1] = "Nachname1";
    myArray[1][0] = "Vorname2";
    myArray[1][1] = "Nachname2";

    2. Wie kann ich diese Datentypen initialisieren und an Funktionen übergeben?

    Vielen Dank!

    Gruß,

    Elayas



  • Also entweder schaust du mal bei boost vorbei, oder du schachtesl z.B einfach 2 STL-Container

    vector<vector<CString>> m_data;
    


  • Guten Morgen Pellaeon,

    wenn ich versuche diese Variable in meiner Header zu initialisieren, erhalte ich unheimlich viele Fehler vom Compiler.

    Kann man Vectoren über Klassen hinweg übergeben?

    Gruß,

    Elayas



  • also vector ist definiert im Header vector, also

    #include <vector>
    

    Das ganze liegt im namespace std, also entweder immer std::vector schreiben oder

    using namespace std;
    

    machen.

    Die Vektoren aus der STL lassen sich kopieren, ja. Allerdings sollte man selber Sorge tragen, dass die Objekte in dem Container auch wirklich kopierbar sind.


Log in to reply