Access Button soll Code ausführen?
Sorry, für die Frage, ist bestimmt richtig leicht.
Kenne mich halt leider null mit access aus, habe am Montag das erste mal in meinem Leben was davon gehört und befinde mich zu Zeit in einem Praktikum, ich soll mir alles selbst beibringen.
Ich möchte nun einen Button erstellen, der dann den letzten Datensatz dupliziert und zwar so oft, wie man angibt, also man gibt z.b. eine 5 an, dann dupliziert er den Datensatz 5 mal.
Der PK ist ein Autowert und ich nehme an, das der beim duplizieren sich ändert.
-----------------------
Allerdings habe ich jetzt das Problem, dass wenn ich einen Button erstelle, nur der Assistent erscheint und da habe ich keine Lösung für mein Problem gefunden.
Also wollte ich den Button eine Makro ausführen lassen, doch auch da habe ich nur die vorgegebenen Möglichkeiten entdeckt, welche mir aber auch nicht weiterhelfen.
Ich habe die Makro dann in eine Visual Basic Datei konvertiert.
Da kann ich zwar jetzt einen Code eingeben, aber ich kann die Visual Basic datei nicht mit einem Button verknüpfen.
Da ich auch keine Ahnung vom Coden habe, habe ich mir dafür einen Code im Internet rausgesucht, der anscheinend funktionieren soll:
Private Sub Befehl227_Click()
Dim lngI As Long
Dim lngIMax As Long
Dim strEingabe As String
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
strEingabe = InputBox("Wie oft?", , 1)
'Benutzereingabe wurde abgebrochen
If StrPtr(strEingabe) = 0 Then Exit Sub
lngIMax = Val(strEingabe)
For lngI = 1 To lngIMax
DoCmd.RunCommand acCmdPasteAppend
Next lngI
End Sub
----------------------
Hoffe mir kann wer weiterhelfen und bevor jmd sagt, man muss keine Datensätze kopieren! -> das ist leider genau die Aufgabe die mir gegeben wurde, ich verstehe den Sinn dahinter auch nicht.
Es handelt sich nämlich um Installationskeys, welche unterschiedlich oft einsetzbar sind, man soll also den Key und paar andere Sachen angeben und dann die Anzahl angeben, dementsprechend oft soll nun der Datensatz kopiert werden, damit man zu jeden einzeln das einlöse-Datum eintragen kann.
Hatte eigentlich erst eine Tabelle mit dem Key und so erstellt und mit einer anderen Tabelle verknüpft, in welcher die einlöse-Datums drinnen stehen, dann kann man ja eigentlich zu jedem Key, beliebig viele Datums zuordnen, aber das soll ich anders machen und zwar mit dem duplizieren.
Wäre also cool, wenn mir wer paar tipps geben könnte und bitte berücksichtigt, bei euren Antworten, dass ich noch ein absoluter Anfänger bin.
Danke schonmal im Vorraus
1 Antwort
Um einem Button einen Code zuzuordnen, machst du einfach einen Rechtsklick auf den Button und dann auf Ereignis... dann geht ein Fenster auf, wo du auf "Code-Generator" klickst.
Alternativ kannst du das Eigenschaftenfenster vom Button öffnen und da in die Registerkarte "Eigenschaften" gehen und einen Doppelklick bei "Beim Klicken" machen. Dann steht "[Ereignisprozedur]" drin und wenn du auf die drei Punkte klickst, wird auch der VBA-Editor geöffnet.
Zum eigentlichen Problem: Würde es auch gehen, wenn du den Key und die Anzahl in einem Formular eingibst und dann einfach entsprechend viele Einträge in eine Tabelle geschrieben werden, anstatt dass du einen Eintrag per Hand in die Tabelle schreibst und ihn dann mit der Prozedur mehrmals kopierst?
Wenn du schon ein Formular mit einem Button hast, kannst du da einfach zwei Textfelder anlegen (ich nenne sie mal txtKey und txtCount) und kannst dann für den Button (ich hab ihn hier mal btnInsert genannt) diese Prozedur rein machen:
Option Compare Database
Option Explicit
Private Sub btnInsert_Click()
Dim count As Integer, i As Integer
' Textinhalt in Zahl umwandeln, um sicherzugehen, dass eine Zahl eingegeben wurde
count = Me.txtCount.Value
' Sicherstellen, dass etwas eingegeben wurde
If Me.txtKey = "" Then
MsgBox "Bitte einen Key eingeben"
Exit Sub
End If
If count = 0 Then
MsgBox "Bitte eine Anzahl eingeben"
Exit Sub
End If
' Daten einfügen
Dim RS As DAO.Recordset
Set RS = CurrentDb.OpenRecordset("KeyAssignments")
For i = 1 To count
' Man könnte auch currentDB.execute(SQL-Befehl) nehmen, aber das ist anfällig für SQL-Injection Attacken
RS.AddNew
RS!Key = Me.txtKey
RS.Update
Next i
MsgBox "Es wurden " & count & " Einträge mit dem Key """ + Me.txtKey + """ eingetragen."
End Sub
vielen Dank, das hat mir echt geholfen