Datenbankfehler: Drei Zeilen in der Tabelle aber keine Daten im Recordset???



  • Hallo!

    Ich habe folgenden Code:

    // Den neuen Datensatz in die Datenbank schreiben
    			if (m_KundenSet.Update())
    			{
    				// Die Daten neu lesen
    				m_KundenSet.Query();
    
    				if (pView->GetViewMode() == VIEW_MODE_NEW)
    				{
    					m_KundenSet.MoveLast();
    

    Das Schreiben klappt ohne Fehler, ich kann die Daten auch angucken.
    Query ist eine Funktion von mir, die in diesem Fall ein Requery ausführt.

    Bei MoveLast() knallt es dann.

    Error: attempted to position cursor on empty recordset.
    Es wurde versucht, hinter das Ende oder vor den Anfang der Daten zu gelangen.

    Was läuft da schief? 😞



  • Er legt glaube ich wenn du Autotext in deiner DB hast an letzter Stelle immer noch ein freies Feld an in das er schreiben will, musst mal mit moveLast -1 machen. wenn alles nichts hilft würde ich mal ne schleife laufen lassen die von Anfang bis EOF läuft und dann mit dem Debugger schauen ob er nach deinem eigentlichen letzten Feld noch weiter läuft.



  • Der scheint gar nicht mehr aus der Tabelle lesen zu können.

    Ich habe grade mal die Kundensuche aufgemacht und so gesucht, dass ich ALLE Kunden angezeigt bekomme - NIX. 😞

    Das hat mit dem alten DBMS noch funktioniert. Haut mir da irgendwie der SQL-Server auf die Finger? Aber ich bin als sa angemeldet... 🙄
    Und andere Tabellen funktionieren prima. (Benutzer zum Beispiel.)



  • Hast du einen Primärschlüssel angegeben ?

    [edit]
    ...und m_KundenSet.Update() ist doch sicherlich auch eine selbst geschriebene Funktion, oder ? Weil neue Datensätze schreibt man nicht mit Update sondern Insert.
    [/edit]



  • Das ist eine CRecordset-Klasse. Und da finde ich in der MSDN kein Insert, zweitens funktionierte es ja schon mal 1 Jahr lang und drittens steht das bei Update dran:

    Completes an AddNew or Edit operation by saving the new or edited data on the data source.

    Müsste doch okay sein, oder? 😕

    Primärschlüssel: Jetzt ja, aber bei einer funktionierenden Tabelle war bis eben auch keiner (sind mir beim Datentypenjonglieren wohl verloren gegangen.) 😞



  • Hoppla, stimmt. Meine Recordsets sind überschrieben und heissen Insert, machen aber ein AddNew und Update. Wie man sich doch daran gewöhnt...



  • 😃

    Aber danke für die Aufheiterung. 🙂 Hier geht grade die Welt unter bzw. das Projekt... 😞



  • Mit einer automatisch generierten Klasse geht es, ich forsche Dienstag weiter...

    Frohe Ostern! 🙂



  • Okay, war mein Fehler: Ich nutze nicht die Tabelle, sondern einen View - und da war die Abfrage noch nicht korrekt. 🙄
    Jetzt tuts. 🙂


Anmelden zum Antworten