Hallo
ich suche einen Button, der den Datensatz aus einem Endlosformular heraus löscht. Ich habs so gemacht. Ich verstehe nicht, was die Zahl "128" bedeutet.
Private Sub Befehl143_Click()
Dim strsql As String
strsql = "DELETE * FROM tblworkorder WHERE ID =" & Me!ID
CurrentDb.Execute strsql, 128
Me.Requery
End Sub
Was könnte das bedeuten? Carl
Hallo,
die Zahl 128 ist die Zahl für den Parameter "dbFailOnError".
Der Parameter sorgt für Fehlermeldungen wenn mit der Abfrage was schief läuft.
Nicht mit der Syntax sondern wenn die Abfrage datenbezogen einen Fehler liefern würde.
CurrentDb.Execute strsql, dbFailOnError
ist als das Gleiche.
Hallo,
wobei solches einfacher ginge:
Private Sub btnDelRec_Click()
Runcommand accmdDeleteRecord
End Sub
In allen Fällen ist dahingehend Obacht geboten, als dass der bei einem Endlosform markierte (der DS , der den Fokus besitzt) gelöscht wird.
Ah, danke. Auch bei meiner Lösung von oben?
Hallo,
ich sage "allen Fällen", was Deine Version mit einschließt.
Ich habe noch eine andere Frage:
beim Anlegen eines Datensatzes erstelle ich einen zugehörigen Ordner, dessen Pfad aus einem Pfad und einem Feld [[WOOrdnername]] ermittelt wird.
MkDir "S:\katalog\" & Me!WOOrdnername
Mit dem o.g. Button möchte ich aber auch diesen Ordner wieder mit löschen. Soll man dazu auch einen strg dimensionieren oder besser einfach einen direkten delete-Befehl machen?
Carl
Hallo,
den Ordner löschen hat ja mit SQL nichts zu tun, das erfordert VBA so wie Du MkDir verwendest.
Löschen ist glaube ich Del, bin aber nicht sicher.
Hallo,
das ist eine Frage des Programmierstils und hat mit der Funktionalität nichts zu tun.
Übersichtlicher ist es aber, eine (oder mehrere) String-Variable(n) zu deklarieren und den Pfad bzw. Dateinamen zusammenzusetzen.
btw: Ein gleichzeitiges Löschen des Pfades und der darin enthaltenen Dateien gelingt nicht den VBA-Befehlen (Rmdir, Kill), dafür ist z. B. das FileScripting-Objekt erforderlich.
Also kann man mit VBA gar keine Verzeichnisse mitsamt des Inhalts (ohne nachfragen) löschen?
Wie würdet Ihr denn den Ordner
"S:\katalog\" & Me!WOOrdnername"
löschen, wobei alle nachfragen unterbunden werden sollen?
Zitatdafür ist z. B. das FileScripting-Objekt erforderlich.
Nicht gelesen ?
Komplette Verzeichnisbäume löschen (https://msdn.microsoft.com/de-de/library/bb979106.aspx)
Noch ein Link zum DBWiki.
VBA Tipp: Alle Dateien und Unterverzeichnisse in einem Verzeichnis löschen (http://dbwiki.net/wiki/VBA_Tipp:_Alle_Dateien_und_Unterverzeichnisse_in_einem_Verzeichnis_l%C3%B6schen)
Gruß
Josef
okay, danke. Ich setz mich dran. Ist ganzschön aufwendig, weil man rekursive Schleifen vom Löschen von Dateien und Unterverzeichnissen einbauen muss.
Wäre es nicht einfacher, einfach den windows-Befehl zum Löschen eines Verzeichnisses aufzurufen? Als "entf" des angebenen Pfades mit dem Entsprechenden Windows-Dialoges? Geht sowas?
Hallo,
kopier den folgenden Code in ein Standardmodul:
Public Function delDir(strPath As String)
Dim fso As Object
On Error GoTo delDir_Error
If Right(strPath, 1) = "\" Then strPath = Left(strPath, Len(strPath) - 1)
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder (strPath)
Set fso = Nothing
MyExit:
Exit Function
delDir_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Resume MyExit
End Function
und ruf die Funktion dort auf, wo das Löschen angesagt ist:
Dim strverz as String
strVerz= "C:\Temp"
.
delDir(strVerz)
.
.
Wahnsinn, danke, das isses. :-)
Carl