Access Datenbank Tabelle Leeren !



  • Hallo Leute,

    ich arbeite via ODBC mit eine Tabelle in einer Access Datebank.
    Meine Frage ist nun gibt es einen schnelleren weg alle Einträge in der Tabelle zu löschen als:

    while(m_aSet.IsBOF() == false)
    	{
    		m_aSet.MoveFirst();
    		m_aSet.Delete();
    		m_aSet.Requery();
    	}
    

    Es dauert bei 1000 Einträgen ganz schön lange, finde ich !

    Danke Coolsero



  • Warum setzt du nicht einfach mit CDatabase::ExecuteSQL ein DELETE-Statement ab?



  • DELETE FROM TableName;
    


  • Hallo,

    habe das jetzt mal ausprobiert mit:

    CDatabase::ExecuteSQL
    

    jetzt habe ich ein anderes Problem ! danach ist zwar meine Tabelle Leer aber die Dateigröße meiner Access datenbank wir nich kleiner ! Erst wenn sie in Access öffne und den Menüpunkt Datenbank Komprimiren und Reparieren ausfüre ist sie wieder kleiner !

    Hat dazu jemand ne Idee ?

    Danke Coolsero



  • Das ist so normal... Du kannst nur mittels Access oder DAO die DB kleiner machen...
    Oder Du verwendest "jetcomp.exe":
    http://support.microsoft.com/kb/295334/EN-US/



  • Danke Jochen Kalmbach für deine Hilfe,

    hab aber noch eine Frage. Ich lege mit folgendem Code einen neuen Eintrag in meine Datenbank.

    m_eoSet.AddNew();
    		m_eoSet.m_ID = ID;
    		m_eoSet.m_Betreff = Betreff;
    		m_eoSet.m_Von = Von;
    		m_eoSet.m_An = An;
    
    		m_eoSet.Update();
    		m_eoSet.Requery();
    

    immer bei dem Befehl m_eoSet.Update(); belegt meine Anwendung im Speicher etwa 300 - 400 KByte mehr.

    Wenn ich nun die Datenbank mit Close() schließe wird der Speicher aber nicht wieder frei gegeben, gibt es hierfür eine Lösung ?

    Mein Problem ist wenn ich etwa 1000 Datensätze erstellt habe dann braucht meine Anwendung eine menge speicher.

    Habe das mit dem Debugger überprüft ist halt immer wenn ich den Update befehl ausfürhre.

    Danke Coolsero


Anmelden zum Antworten