minicrispie: Access 2007: Datensatz erzeugen

Hallo,

ich nerv nochmal heute ;)
Ich soll in Access 2007 ein Formular erstellen, bei welchem ich einen Datensatz in einer Tabelle erstellen soll. Da das Thema an sich egal ist, hab ich mir der einfachheit eine Logintabelle gebastelt:

+---------------------------------------+
|                T_USER                 |
+----+--------------+----------+--------+
| ID | Benutzername | Passwort | E-Mail |
+----+--------------+----------+--------+

Nun habe ich ein Formular, womit ich den Benutzernamen, das Passwort und die E-Mail eingeben kann. Außerdem ein Button "Hinzufügen" und "Abbrechen". Der Abbrechen-Button ist ja einfach. Nur bei dem "Hinzufügen"-Button sitz ich seit Stunden dran.
Wie kann ich einfach einen neuen Datensatz in die Tabelle "T_User" eintragen, wenn ich auf "Hinzufügen" klicke?

MfG. Christoph Ludwig

--
Wo die Sprache aufhört, fängt die Musik an...
Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
Go to this
  1. hi,

    Wie kann ich einfach einen neuen Datensatz in die Tabelle "T_User" eintragen, wenn ich auf "Hinzufügen" klicke?

    Mit diesem Button rückst Du den Recordzeiger ganz einfach an das Ende der Tabelle, dort kann der Formularbenutzer neue Daten eintippen.

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. Hallo,

      hi,

      »» Wie kann ich einfach einen neuen Datensatz in die Tabelle "T_User" eintragen, wenn ich auf "Hinzufügen" klicke?

      Mit diesem Button rückst Du den Recordzeiger ganz einfach an das Ende der Tabelle, dort kann der Formularbenutzer neue Daten eintippen.

      Also entweder ich versteh dich nicht, oder du mich nicht ;)
      Grundlage ist ein Formular:

      +----------------------------+
      |                            |
      |  EINGABE DER DATEN:        |
      |  Benutzername: [Textfeld]  |
      |  Passwort:     [Textfeld]  |
      |  E-Mail:       [Textfeld]  |
      |                            |
      |  [Hinzufügen] [Abbrechen]  |
      |                            |
      +----------------------------+

      Nun hat der User seinen Namen, sein Passwort und seine E-Mail-Adresse eingetippt. Drückt er "Hinzufügen", soll der Datensatz in die Datenbank eingetragen werden. Diese Datenbank soll der User nie zu sehen bekommen. Das einzige, was der User sieht, sind die Formulare.
      Nur ich bekomms nicht hin, bei Klick auf "Hinzufügen" einen neuen Datensatz in der Tabelle "T_User" zu erzeugen, und diesen mit den vom User eingegebenen Daten zu füllen.

      MfG. Christoph Ludwig

      --
      Wo die Sprache aufhört, fängt die Musik an...
      Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
      Go to this
      1. Hi!

        Dann gehe ich doch einfach mal davon aus, dass Du zwei ungebundene Eingabefelder benutzt. Stimmt das?

        --
        "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
              - T. Pratchett
        1. Hallo,

          Dann gehe ich doch einfach mal davon aus, dass Du zwei ungebundene Eingabefelder benutzt. Stimmt das?

          ja ich hab einfach die Eingabefelder ausgewählt und ins Formular geschubst.

          MfG. Christoph Ludwig

          --
          Wo die Sprache aufhört, fängt die Musik an...
          Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
          Go to this
          1. »» Dann gehe ich doch einfach mal davon aus, dass Du zwei ungebundene Eingabefelder benutzt. Stimmt das?

            ja ich hab einfach die Eingabefelder ausgewählt und ins Formular geschubst.

            Gut. Und die Buttons? Hast Du da was vordefiniertes genommen und fragst dich jetzt was der Scheiss eigentlich macht?

            --
            "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                  - T. Pratchett
            1. Hallo,

              Gut. Und die Buttons? Hast Du da was vordefiniertes genommen und fragst dich jetzt was der Scheiss eigentlich macht?

              nein. Ich hab die Buttons mit Makros belegt, die das Fenster schliessen bzw. öffnen.
              so langsam fange ich an, Access zu hassen :/

              MfG. Christoph Ludwig

              --
              Wo die Sprache aufhört, fängt die Musik an...
              Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
              Go to this
              1. nein. Ich hab die Buttons mit Makros belegt, die das Fenster schliessen bzw. öffnen.
                so langsam fange ich an, Access zu hassen :/

                :)

                aber dass Fenster oeffnene und schliessen keinen datensatz hinzufuegen ist Dir schon klar? ;)

                Okay. Sprechen Wir also die einzige sprache die Access versteht: VBA

                Also. angenommen Du hast:
                ein Formular das heisst Login mit den Inputfeldern inpID und inpPW
                eine Tabelle die heisst User und enthaelt die Felder ID und Password

                Dann klaebst Du einen beliebigen Button auf Das Formular. Am Besten allerdings einen leeren, der kein eigenes VBA mitbringt.

                Und jetz was ganz seltenes: Fertiger Code! Aus purem Mitleid gibt's jetzt nen Codeschnipsel weil es einfach zuviel is hier ne VBA Lehrstunde einzufuehren. Mit F1 kommt man uebrigens auf die Hilfe zu dem Befehl auf dem der Cursor ist.

                Eine passende onclick-Prozedur total ohne Gefahr einer SQL-Injection koennte dann also ungefaehr so aussehen:

                Private Sub addbtn_Click()
                On Error GoTo Err_addbtn_Click

                Dim db As Database
                  Dim rs As Recordset
                  Set db = CurrentDb()
                  Set rs = db.OpenRecordset("User")

                rs.AddNew
                  rs!ID = Forms.Login.inpID.Value
                  rs!Passwort = Forms.Login.inpPW.Value
                  rs.Update

                Exit_addbtn_Click:
                    Exit Sub

                Err_addbtn_Click:
                    MsgBox Err.Description
                    Resume Exit_addbtn_Click

                End Sub

                Den Rest machste dann mal ganz allein. Viel Spass beim Auseinandersetzen mit dem Scheiss.

                --
                "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                      - T. Pratchett
                1. Hallo,

                  Den Rest machste dann mal ganz allein. Viel Spass beim Auseinandersetzen mit dem Scheiss.

                  ich hab das jetz mal ausprobiert mit dem Script:
                  folgende Tabellen bestehen:

                  +--------------------------------+
                  |             T_USER             |
                  +----+---------+----------+------+
                  | ID |UserName | passwort | mail |
                  +----+---------+----------+------+
                  ID ist ein Autowert.

                  Dann hab ich ein Formular namens 'F_NeuerBenutzer'. Dieses hat folgenden Aufbau:

                  +---------------------------------------------+
                  |                                             |
                  | Benutzername: [Textfeld:input_benutzername] |
                  | Passwort:     [Textfeld:input_passwort]     |
                  | E-Mail:       [Textfeld:input_email]        |
                  |                                             |
                  | [Button:addbtn]                             |
                  |                                             |
                  +---------------------------------------------+

                  In den Textfeldern steht von Anfang an "Ungebunden" drin.
                  Dann habe ich folgendes VBA-Script:

                  Private Sub addbtn_Click()
                  On Error GoTo Err_addbtn_Click

                  Dim db As Database
                    Dim rs As Recordset
                    Set db = CurrentDb()
                    Set rs = db.OpenRecordset("T_User")

                  rs.AddNew
                    rs!UserName = Forms.F_NeuerBenutzer.input_benutzername.Value
                    rs!passwort = Forms.F_NeuerBenutzer.input_passwort.Value
                    rs!mail = Forms.F_NeuerBenutzer.input_email.Value
                    rs.Update

                  Exit_addbtn_Click:
                      Exit Sub

                  Err_addbtn_Click:
                      MsgBox Err.Description
                      Resume Exit_addbtn_Click

                  End Sub

                  Sobald ich also auf "Registrieren" klicke, soll ein neuer Datensatz in der Tabelle T_User eingefügt werden und dieser mit den Daten befüllt werden. Nur ich kann so oft auf den Button klicken wie ich will. Da passirt einfach nix. Aber Warum?

                  MfG. Christoph Ludwig

                  --
                  Wo die Sprache aufhört, fängt die Musik an...
                  Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
                  Go to this
                  1. Hi!

                    Sobald ich also auf "Registrieren" klicke, soll ein neuer Datensatz in der Tabelle T_User eingefügt werden und dieser mit den Daten befüllt werden. Nur ich kann so oft auf den Button klicken wie ich will. Da passirt einfach nix. Aber Warum?

                    Das sollte mit diesem Code eigentlich funktionieren außer:
                    a) du klickst auf deinen "Registrieren"-Button in der Formular-Entwurf-Ansicht und nicht in der Formular-Ansicht
                    b) dein "Registrieren"-Button hat nicht den Namen "addbtn"
                    c) die Microsoft DAO Object Libary ist nicht in der Verweisliste - aber dann sollte eine Fehlermeldung erscheinen.

                    FG Ulysses

                    1. Hallo,

                      Das sollte mit diesem Code eigentlich funktionieren außer:
                      a) du klickst auf deinen "Registrieren"-Button in der Formular-Entwurf-Ansicht und nicht in der Formular-Ansicht

                      Das Ding is auf jeden Fall in der Formular-Ansicht.

                      b) dein "Registrieren"-Button hat nicht den Namen "addbtn"

                      Doch, hat er.

                      c) die Microsoft DAO Object Libary ist nicht in der Verweisliste - aber dann sollte eine Fehlermeldung erscheinen.

                      Es kommt keine Fehlermeldung.

                      MfG. Christoph Ludwig

                      --
                      Wo die Sprache aufhört, fängt die Musik an...
                      Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
                      Go to this
                      1. Hi!

                        für deinen Registrieren-Button "addbtn" steht bei den Eigenschaften
                        "Beim Klicken" [Ereignisprozedur] ?

                        FG Ulysses

                        1. Hallo,

                          für deinen Registrieren-Button "addbtn" steht bei den Eigenschaften
                          "Beim Klicken" [Ereignisprozedur] ?

                          WAHHHHHHH!!!!!
                          Danke! Das war der Fehler.

                          MfG. Christoph Ludwig

                          --
                          Wo die Sprache aufhört, fängt die Musik an...
                          Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
                          Go to this
                  2. Hoi!

                    Sobald ich also auf "Registrieren" klicke, soll ein neuer Datensatz in der Tabelle T_User eingefügt werden und dieser mit den Daten befüllt werden. Nur ich kann so oft auf den Button klicken wie ich will. Da passirt einfach nix. Aber Warum?

                    Tja. Man mag über Office und VB(A) sagen was man will, aber der Debugger ist brauchbar. Was sagt der zu Deinem Problem?

                    Bau in deine Sub als erstes einen Stop ein (in die Spalte links vor dem Code klicken - Ein Roter Punkt markiert einen Stop) und dann starte den Code. Wenn wirklich in deine Subroutine gesprungen wird, hält das Program beim Stop an. Dann gehst Du in den Debugger.

                    F8 macht einen Schritt im Programm SHIFT+F8 auch, betritt aber keine Subfunktionen. Du kannst in Werte klicken, sie markieren und drüberhovern. Im Tooltip findest Du dann den aktuellen Wert.Ein rechtsklick gibt Dir die Möglichkeit Werte auf beobachten zu schalten. (im Fenster unter dem Code)

                    Debug also erstmal ordentlich. Wenn Du dann noch Probleme hast, komm wieder. Viel Spaß.

                    --
                    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                          - T. Pratchett