Hallo zusammen,
ich habe ein Hauptformular und ein Unterformular. Im Hauptformular wähle ich ein Projekt aus und durch eien Button wird daraufhin im Unterformular ein neuer Datensatz angelegt, an den 2 Werte aus dem Hauptformular übegeben werden.
Soweit so gut. Nur leider wird nicht nur der gewünschte Datensatz mit den Werten aus dem Hauptformular angelegt, sondern beim Unterforumlar wird Anfügen zulassen auf Ja gesetzt, sodass ich darunter noch eine leere Zeile habe, die dann wiederrum die Fehlermeldung "Null-Wert in Index oder Primärschlüssel nicht möglich" erzeugt.
Hier der Code des Buttons:
Private Sub Befehl12_Click()
On Error GoTo Err_Befehl12_Click
DoCmd.SetWarnings False
If MsgBox("Would you like to add a new 'subject to line'?", _
vbQuestion + vbYesNo, "Neuer DS?") = vbYes Then
If Not Me![F-IPs_subject tos_sub].Form.NewRecord Then
Me![F-IPs_subject tos_sub].Form.AllowAdditions = True
Me![F-IPs_subject tos_sub].SetFocus
DoCmd.RunCommand acCmdRecordsGoToNew
Me![F-IPs_subject tos_sub].Form![Project ID] = Forms![F-IPs_subject tos]!Liste2
Me![F-IPs_subject tos_sub].Form![Project-IP-ID] = Forms![F-IPs_subject tos]!Liste7
Me![F-IPs_subject tos_sub].Form.AllowAdditions = False
End If
Me![F-IPs_subject tos_sub].Form.AllowAdditions = False
End If
DoCmd.SetWarnings True
Exit_Befehl12_Click:
Exit Sub
Err_Befehl12_Click:
MsgBox Err.Description
Resume Exit_Befehl12_Click
End Sub
Habe schon alles mögliche versucht, doch kriege es nicht hin, dass mir wirklich nur der eine Datensatz mit den Werten aus dem Hauptformular angelegt wird.
Lieben Dank für eure Hilfe!
Teufelchen
Hallo,
wenn Hafo und Ufo über die Schlüsselfelder verknüpft werden, braucht es gar keinen Code. Da geht alles automatisch. Auch wenn 2 Felder übertragen werden müssen.
Wobei 2 Werte aus dem Hafo übertragen auch suspekt ist, normalerweise genügt es den Primärschlüssel als Fremdschlüssel zu übertragen.
Die Frage ob angefügt werden soll, kannst Du dann im Ufo stellen, sobald das erste Feld des Ufos ausgefüllt ist.
das Ufo basiert ja auf einer Tabelle, d.h. ich muss durch den Button die beiden Werte (ich brauche sie getrennt), in den neuen Datensatz der Tabelle schreiben.
Hallo,
dass das eine Tabelle ist, spielt doch keine Rolle. Wenn Hafo und Ufo über die beiden Felder verknüpft werden, passiert das alles automatisch, ohne Code.
Wozu brauchst Du beide Werte (bezweifle ich immer noch stark), hat die Tabelle für das Ufo keinen Primärschlüssel?
der Primärschlüssel der Tabelle bestehet aus diesen beiden Werten!
aber wenn ich die Werte nicht übergebe, wie tauchen sie dann in einem neuen Datensatz in meiner Tabelle auf?
Hallo,
Zitataber wenn ich die Werte nicht übergebe, wie tauchen sie dann in einem neuen Datensatz in meiner Tabelle auf?
das macht Access automatisch wenn Hafo und Ufo über beide Schlüsselfelder verknüpft sind. Du programmierts etwas was Access als Standardfunktion besser kann.
Das ist auch ein Grund, warum ich auf zusammengestzte Primärschlüssel verzichte, mit einem einfachen PK wird das noch einfacher.
gut zu wissen...
anbei eine kleine Datenbank, in der ich nur die notwendigen Tabllen, Abfragen und Formulare habe.
Es geht um das Formular "F-IPs_subject tos"
Wäre nett, wenn du mir einen Tipp geben könntest, wie ich das ganze umbauen muss.
Lieben Dank
Teufelchen
[Anhang gelöscht durch Administrator]
Hallo,
mir sind die Zusammenhänge nicht ganz klar. Kannst Du mal ein Beispiel mit den Beziehungen hochladen?
Allgemeine Anmerkungen:
Zusammengesetzte Primärschlüssel mit Textfeldern sind keine gute Idee. Hier wärst Du gut beraten einen PK als Autowert zu erstellen. In der n-Tabelle dann Zahl, LongInteger. Darüber sollten dann auch die Beziehungen laufen.
In der Tabelle für das Ufo ist ein Primärschlüssel aus 5 Feldern mit einem Autowert. Das ist mit Verlaub Unsinn, der Autowert ist alleine schon eindeutig und als PK geeignet. Feldnamen und Objektnamen mit Sonderzeichen sind zu vermeiden. Nicht "Project-IP-ID" sondern "Project_IP_ID". Das gilt auch für Tabellennamen, Abfragenamen, Berichtsnamen etc.
Mir scheint, da gibt es auch noch einigen Verbesserungsbedarf am Datenmodell und bevor das nicht geklärt ist, solltest Du die Finger von Formularen lassen.
Mein Vorschlag lässt sich mit Deinem Formularentwurf nicht umsetzen.
Hallo Teufelchen,
Warum schreibst Du den neuen DS nicht einfach
per INSERT in die Tabelle?
Luftcode:
Private Sub btnEinfuegen_Click()
Dim strSQL As String
strSQL = _
"INSERT INTO DeineTabelle (Feld1, Feld2) " _
& "VALUES (" & Forms![F-IPs_subject tos]!Liste2 & ", " & Forms![F-IPs_subject tos]!Liste7 & ")"
CurrentDb.Execute strSQL
End Sub
gruss ekkehard