Zum Inhalt springen

Probs mit Access Datenbank


juergi66

Empfohlene Beiträge

Hallo,

mit beiden Funktionen speichere ich ID-TAG-Informationen in einer

Access-Datenbank ab. Das hat alles ca. 500 Datensätze wunderbar geklappt.

Doch auf einmal geht nichts mehr.

Nach dem Schreiben der Daten in die Datenbank rufe ich die Funktion

GetMaxID() auf, die mir den letzen Datensatz liefert. Dann erhält

der nächste Datensatz folglich eine um eins erhöhte ID.

Doch plötzlich liefert mir die Funktion GetMaxID immer die gleiche ID

als Rückgabewert und dann knallts natürlich wegen doppelter ID.

Die ID ist mein Primärschlüssel.

Kann mir einer helfen? Das ganze lief ja eigentlich! Sehr seltsam!

void CAccessMP3View::InsertDB(int iLoop)

{

//ID für den neuen Datensatz ermitteln

long lNewID = m_pSet->GetMaxID() + 1;

//Den Datensatz hinzufügen

m_pSet->AddNew();

m_pSet->m_ID = lNewID;

m_pSet->m_ARTIST = m_strctFuelle[iLoop].strctArtist;

m_pSet->m_TITLE = m_strctFuellen[iLoop].strctTitle;

m_pSet->m_ALBUM = m_strctFuellen[iLoop].strctAlbum;

m_pSet->m_GENRE = m_strctFuellen[iLoop].strctGenre;

m_pSet->m_YEAR = m_strctFuellen[iLoop].strctYear;

m_pSet->m_PFAD = m_strctFuellen[iLoop].strctPath;

//Datensatz speichern

m_pSet->Update();

//Den Recordset aktualisieren;

m_pSet->Requery();

}

long CAccessMP3Set::GetMaxID()

{

//Zum letzten Datensatz gehen

MoveLast();

//ID dieses Datensatzes zurückgeben

return m_ID;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich vermute ganz einfach, das die Datenbank zwischen durch sortiert worden ist und deshalb der letzte Datensatz nicht mehr die höchste ID hat.

Ich wurde das MoveLast() durch eine SQL-Abfrage ersetzen, die z.B. Absteigend nach ID sortiert und dann kannst du ja den ersten Datensatz nehmen.

Vielleicht kann ich dir ja damit helfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

JA, ich noch mal. Habe das jetzt auch mal mit dem SQL - Befehl sortiert, aber das Ergebnis ist das gleiche. Irgendwann ( auffälliger Weise nach ca. 500 Datensätzen ) erhalte ich als Rückgabewert nicht mehr den letzten datensatz. Es kann doch nicht sein, daß Access nicht mit 500 Datensätzen zurecht kommt, oder? Tja manchmal gehts auch 1000 Sätze gut ,aber manchmal auch nur einen.

BITTE HELFT MIR!!!!

Gruß Onkel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein Dynaset wird immer auf die Änderungen des Users direkt abgestimmt und entspricht immer 100% dem aktuellen Stand, während ein Snapshot die Datenbank in chronologischer Reihenfolge als statische Struktur betrachtet, die genau so aussieht, wie in dem Moment als der Recordset von der Datenbank geöffnet und dem Anwender zur Verfügung gestellt wird. Änderungen werden nicht augenblicklich sichtbar und die Datenbank darauf abgestimmt. Man muß da selber mit Requery den Recordset updaten. Selbst M$ empfiehlt sofern man mit ODBC objektorientiert arbeitet lieber auf die CDaoRecordsets zuzugreifen.

Wenn man einen Recordset benutzen möchte, der die Datenbank eigenständig updated, dann soll man mit RFX (Record Field Exchange) arbeiten. Das ist so ziemlich dasselbe wie DDX für member-Variablen, nur daß diese halt für Datenbank-Records und -Felder gelten siehe: CRecordset: :DoFieldExchange() oder auch eine davon erweiterte Variante ist die Bulk-Exchange-Klasse: CRecordset: :DoBulkFieldExchange().

Es ist sehr empfehlenswert weil bequem die exclusiven Daten-Transfers alle über die RFX-Functions laufen zu lassen.

<FONT COLOR="#a62a2a" SIZE="1">[ 02. November 2001 20:10: Beitrag 3 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...