none
DAO Database.RecordsAffected

    Frage

  • Hallo,

    wollte als Kontrolle über eine erfolgreiche SQL-Aktion (Einfügen, Löschen, Ändern) innerhalb einer VBA-Schleife die Property RecordsAffected nutzen.

    Musste aber feststellen, dass trotz erfolgtem Einfügen in die Tabelle der Wert 0 ist, während über TableDefs.Recordcount ein eingefügter Datensatz festgestellt werden konnte.

    So steht im Direktfenster:

    insert into ART_MED ( PZN, ...
    CurrentDb.RecordsAffected: 0
    Änderung CurrentDb.TableDefs(tabelle).RecordCount: 1

    wobei die Änderung über

                z = CurrentDb.TableDefs(tabelle).RecordCount
                CurrentDb.Execute m_sql, dbFailOnError
                z = CurrentDb.TableDefs(tabelle).RecordCount - z

    festgestellt wurde.

    Die Abfrage von CurrentDb.RecordsAffected kam natürlich nach .execute.

    Hat jemand eine Idee, ich nutze Access 2010 mit Office 10, DAO über MSO 14 Access database engine Object Library.

    Gruß Tom

    Donnerstag, 19. November 2015 14:48

Antworten

Alle Antworten

  • Hallo!

    Mit jedem Currentdb.foo erstellst du eine weitere Instanz der Datenbank. In der neuen hat RecordsAffected nix zu melden. Verwende stattdessen 1 Datenbankvariable:

    Dim db As DAO.Database
    Set db = Currentdb

    db.TableDefs(tabelle).RecordCount
    db.Execute m_sql, dbFailOnError
    db.RecordsAffected


    cu
    Karl
    Access FAQ (de/it): donkarl.com
    Access Lobby: AccessDevelopers.org

    • Als Antwort markiert tom krist Donnerstag, 19. November 2015 17:37
    Donnerstag, 19. November 2015 16:30
  • Dann hab ich also bei jedem Durchlauf mal eben mehrere Mill. Instanzen erzeugt, vermutlich nicht besonders Performance-freundlich.

    Danke Dir

    Gruß Tom

    Donnerstag, 19. November 2015 17:47