Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probs mit Access Datenbank

Empfohlene Antworten

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;

}

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.

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

2.Versuch:

Hatte gestern ein ähnliches Problem bei meiner Db. Konnte es dadurch lösen, daß ich den CRecordset von snapshot auf dynaset geändert hab.

Hi Phoenix,

das war genial. Habe von Snapshot auf Dynaset umgestellt. Jetzt funzt es. Was ist da eigentlich der Unterschied?

Und nochmal danke!!!!!

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>

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.