problem mit ner database



  • hi zusammen.

    Ich habe ein Problem. Bei folgendem Code

    m_infoData.AddNew();
    
    			m_infoData.m_Bezug = -1;
    			m_infoData.m_kategorie = "e";
    			m_infoData.m_Name = point->getEigenschaft();
    
    			m_infoData.Update();
    			m_infoData.Requery();
    			m_infoData.MoveLast();
    
    			int idEigenschaft = m_infoData.m_ID;
    
    		 // Neuer Datensatz
    			m_infoData.AddNew();
    
    			m_infoData.m_Bezug = idEigenschaft;
    			m_infoData.m_kategorie = "w";
    			m_infoData.m_Name = point->getWert();
    
    			m_infoData.Update();
    			m_infoData.Requery();
    			m_infoData.MoveLast();
    
    			CString msg;
    			msg.Format("%d", m_infoData.m_ID);
    			AfxMessageBox(msg);
    

    erhalte ich für "msg" nur den ID-Wert des ersten Eintrages, den ich neu hinzugefügt habe. Ich will aber den zweiten.
    Es soll zum Schluß die ID des ersten in "idEigenschaften" und die zweite ID in "m_infoData.m_ID" stehen. Ich finde den Fehler nicht 😞

    Bitte helft mir dringend.



  • ich hatte selbiges problem auch schon. ich habe deshalb die datenbankverbindung immer kurz geschlossen und dann wieder geoeffnet. wenn du dann movelast machst, dann springt er zum letzten. ist halt seeehr problematisch beim multiuserzugriff. seitdem ich oracle benutze, gibts das problem nicht mehr. alternativ kannst du dir auch ne neue tabelle fuer deine primaerschluessel anlegen, und das inkrementieren der IDs selbst verwalten. dann haettest du das prob nicht mehr.

    Esco



  • hhhmmm....
    aber das Schließen und Öffnen dauert mir zu lange... Aber ok, ich werde mal gucken. ich bin jetzt einfach hingegangen und hab die Id, die ich als erste bekommen habe, einfach nochmal inkrementiert 😉 klappt auch...
    also bis dann...


Anmelden zum Antworten