Datensatz hinzufügen geht nicht
-
hallo
nochmal was
Wenn ich das Beispiel genau so durch mache wie auf der seite http://download.pearsoned.de/leseecke/VCPLUS6_21Tg/data/start.htm
dann klappt das auch, aber ich möchte dass in der Datenbank vorher noch nicht drin steht, und wenn ich dann ein Datensatz hinzufügen möchte kommt immer eine Fehlermeldung
"Entweder BOF oder EOF , oder der aktuelle Datensatz wurde gelöscht. Die angeforderte Operation benötigt einen aktuellen Datensatz"
Was muss man da machen?
danke
-
Kann es evtl. sein, dass du versuchst, ein Update(...) auf eine leere Datenbank zu machen ?
-
stimmt, an dem kann es liegen, ich probiere mal ein bisschen rum,
danke für den tipp
-
[code]void Dilog::OnHinzufuegen()
{UpdateData(TRUE);
m_pView->m_strLastName = m_strLastName;
m_pView->m_strFirstName = m_strFirstName;
m_pView->m_strAge = m_strAge;m_pView->UpdateBoundData();
m_pView->GetDocument()->AddNew();
}
das ist meine Hinzufügen Funktion, irgendwie passiert da trotzdem nichts wenn ich UpdateData(TRUE) weg nehm...
-
Ich behaupte mal ganz mutig, dass es mit Sicherheit daran liegt. Neue Datensätze hinzufügen geht mit Insert(...) oder New(...) oder etwas ähnlichem.
-
Bei CRecordset muss man übrigens erst AddNew() aufrufen um einen neuen Datensatz auzulegen, dann die Werte in die Recordset-Member einlesen und dann Update() aufrufen, damit die Werte gespeichert werden...
-
hast du das darübergeschriebene von mir schon gelesen? war ja fast zeitgleich mit deinem Beitrag
-
*g* schon wieder

-
ja mei, der mist funktioniert halt nicht, hab echt kein plan woran das liegt
Mit Sicherheit denk ich auch dass ich falsch update. Auf er seite gehen die auch schon davon aus dass davor schon was drin steht.
weiß halt nicht wo ich was ändern muss
-
Von was für einem Typ ist denn m_pView ?
-
Ich glaube die Reihenfolge is falsch:
void Dilog::OnHinzufuegen() { UpdateData(TRUE); m_pView->GetDocument()->AddNew(); // der war unten m_pView->m_strLastName = m_strLastName; m_pView->m_strFirstName = m_strFirstName; m_pView->m_strAge = m_strAge; m_pView->UpdateBoundData(); // Versuch mal nur m_pView->Update(); stattdessen }Sieht jedenfalls in der MSDN von den Befehlen her aus wie CRecordset.

-
m_pView ist ein Zeiger auf die View Klasse
-
sorry habs erst jetz gelesen
Error 'Update' : Ist kein Element von 'CAdoDatabaseView'
auch wenn ich TRUE reinschreiben gehts noch nicht
-
das Problem ist dass erst wenn ich von hand schon vorher was in die Datenbank reingeschrieben habe, daten hinzufügen kann, dann klappts auch
aber wen meine Datenbanktabelle leer ist gehts net, dann kommt der fehler
-
CAdoDatabaseView gibt es in meiner MSDN nicht!Okay, dann lass es bei dem Befehl, den du da hattest. Das "Umsetzen" von AddNew war ja viel interessanter. Was kommt dabei heraus?
-
[code]void CAdoDatabaseDoc::AddNew()
{try
{
// Aktuellen Datensatz aktualisieren ( haben die so gemacht
// muss weg sonst geht gar nichts
//m_piAdoRecordBinding->Update(&m_rsRecSet);// Kann ein neuer Datensatz hinzugefügt werden?
if (m_ptrRs->Supports(adAddNew))
{// Leeren Datensatz hinzufügen
m_piAdoRecordBinding->AddNew(&m_rsRecSet);//Leeren Datensatz erzeugen
CreateBlankRecord();// Zum letzten Datensatz gehen
m_ptrRs->MoveLast();}
}// Fehler?
catch (_com_error &e){
// Fehlermeldung generieren
GenerateError(e.Error(), e.Description());
}}
-
Passe 
-
kein Problem, aber trotzdem vielen dank für deine Mühen

-
ich hätte da noch was anderes
wenn ich in die masken nichts eingebe und auf "Hinzufügen "klicke, soll eine Meldung kommmen dass man zuerst was eingeben soll
Wie würde man so etwas machen?
thx
-
also ich glaube es stimmt schon was du gesagt hast, irgendwas mit dem Update stimmt nicht. Und zwar in der AddNew Funktion. Da fehlt ein Update. Weiß nur nicht wo ich das hinsetzen soll.