Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Neue Datensätze durch Button anlegen

Begonnen von Teufelchen1985, Juni 19, 2012, 16:16:07

⏪ vorheriges - nächstes ⏩

Teufelchen1985

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

MzKlMu

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.
Gruß Klaus

Teufelchen1985

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.

MzKlMu

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?
Gruß Klaus

Teufelchen1985

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?

MzKlMu

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.
Gruß Klaus

Teufelchen1985

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]

MzKlMu

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.
Gruß Klaus

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)