Hallo leute
Hab eine kleine db gebastellt um den warenbestand zu erfassen und ein- und auszubuchen.
soweit so gut alles läuft.
Jetzt möchte ich jedoch bei einer inventur alle datensätze in
der tbl buchungen mit einem button im formular löschen. (Passwortgeschützt)
Dann werden die gezählten bestände eingebucht.
damit will ich verhindern das die tbl unendlich lang wird.
mgf rabit
Hallo,
prinzipiell sollen KEINE Daten aus den Tabllen gelöscht werden, die in irgend einer Form in anderen Tabellen verwendet wurden oder werden.
uuuuund ... Im Fall von Daten die beispielsweise mit Rechnungen in Verbindung stehen ist das Löschen von Daten sowieso mit dem finanziellen Tod deinerseits eng verbunden.
Datensätze werden daher besser durch Angabe eines Kennzeichens für ungültig erklärt um sie dann in Auswahlen udgl. nicht mehr anzuzeigen.
siehe: DBWiki - Vorsicht beim Löschen (http://www.dbwiki.net/wiki/Access_Design:_Vorsicht_beim_L%C3%B6schen)
Abgesehen davon aber KÖNNTE man das Löschen, wie von dir nachgefragt, so bewerkstelligen:
Option Compare Database
Option Explicit
Const PWD = "123"
Private Sub DeinButton_Click()
Dim KW As String
KW = InputBox("Kennwort eingeben")
If KW = PWD Then
'Befehl zum Löschen ALLER Datensätze aus der angegebenen Tabelle
CurrentDb.Execute "DELETE * FROM DeineTabelle"
Else
MsgBox "Kennwort falsch!"
End If
End Sub
Bitte obigen Code lediglich als Demo anzusehen, wie die Vorgänge ablaufen.
In der Praxis ist diese Art der Kennwortabfrage Humbug!
Zitatdamit will ich verhindern das die tbl unendlich lang wird
wobei es dir ganz und gar egal sein kann, wie 'lang' eine Tablle ist - also wieviele Datensätze in der Tabelle stehen.
Du solltest ja nicht mit der Tabelle arbeiten sondern ausschließlich mit Formularen,
die entweder direkt auf die Tabelle aufsetzen oder auf eine entsprechende Abfrage - wodurch dann die Anzahl der Datensätze auf die benötigten eingeschränkt wird.
HTH
danke für die schnelle antwort. leider is meine db zu groß zum anhängen.
bei den datensätzen handelt es sich lediglich um ein- und ausbuchungen
die keine bedeutung mehr haben sobald die bestände von mir gezählt werden.
ein pw abfrage ist kein thema.
den vba dafür habe ich schon in der db eingebaut....
Hallo,
es ist auch nicht notwendig, dass du die DB hochlädtst ;)
mit dem Befehl wie oben gezeigt ...
CurrentDb.Execute "DELETE * FROM DeineTabelle"
... kannst du alle Daten aus der 'DeineTabelle' löschen ---> DeineTabelle durch den Namen der Tabelle ersetzen, aus der gelöscht werden soll!
Wenn du die Access-Warnung nicht haben willst, die dabei angezeigt wird...
DoCmd.SetWarnings False
CurrentDb.Execute "DELETE * FROM DeineTabelle"
DoCmd.SetWarnings True
Alles klar? ;)
HTH
hat alles super geklappt. danke
Hallo, guten Morgen,
sehr schön!
Möchtest du dann bitte den Thread in DEINEM ersten Beitrag auf 'gelöst' setzen - um die Form zu wahren.
DANKE