Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Teufelchen1985 am Juni 19, 2012, 16:16:07

Titel: Neue Datensätze durch Button anlegen
Beitrag von: Teufelchen1985 am Juni 19, 2012, 16:16:07
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
Titel: Re: Neue Datensätze durch Button anlegen
Beitrag von: MzKlMu am Juni 19, 2012, 16:23:06
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.
Titel: Re: Neue Datensätze durch Button anlegen
Beitrag von: Teufelchen1985 am Juni 19, 2012, 16:40:32
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.
Titel: Re: Neue Datensätze durch Button anlegen
Beitrag von: MzKlMu am Juni 19, 2012, 16:46:02
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?
Titel: Re: Neue Datensätze durch Button anlegen
Beitrag von: Teufelchen1985 am Juni 19, 2012, 16:48:45
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?
Titel: Re: Neue Datensätze durch Button anlegen
Beitrag von: MzKlMu am Juni 19, 2012, 16:56:47
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.
Titel: Re: Neue Datensätze durch Button anlegen
Beitrag von: Teufelchen1985 am Juni 19, 2012, 17:21:21
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]
Titel: Re: Neue Datensätze durch Button anlegen
Beitrag von: MzKlMu am Juni 19, 2012, 19:17:56
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.
Titel: Re: Neue Datensätze durch Button anlegen
Beitrag von: Beaker s.a. am Juni 19, 2012, 21:35:49
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