tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von tombe
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
933
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    Hallo,

    ich möchte ein Formular erstellen in dem ich in einem Textfeld eine Nummer (nicht die ID) eingeben und dann über ein Kombinationsfeld einen Beruf auswählen kann.

    Dann soll der Beruf in dieser Tabelle zu diese Nummer abgespeichert werden über ein Update.


    Die Tabelle hat folgende Spalten:

    ID | Barcode (die Nummer) | Name |Vorname | ... | Beruf |

    Die Tabelle ist auch schon von Anfang an gefüllt, soll dann aber um den Beruf ergänzt werden.


    Kurze Erklärung warum die Nummer/Barcode nicht die ID ist:

    Es gibt schon ein anderes Formular in dem eine Zeiterfassung erstellt wurde.
    Da der Barcode hier als Text gescannt werden muss, da einige dieser Nummern mit 0 anfangen und Unterschiedlich sind, also keine Vorlaufenden Nummern sind.

    Ich hab gelsen das dies nur mit dem recordset funktioniert, ich hab aber keinen genauen schimmer was ich da tun muss, mir ist klar das ich das update dann über eine sgl-anweisung angeben muss, aber nicht wie ich diese mit dem recordset verwende.

    ich habe schon erfahrung mit mysgl und php aber das ist bedeutend einfacher, kann ich aber nicht für das programm verwenden bzw. funktionieren dann nicht alle dinge wie in access (ist doch etwas eingeschränkter)

    Wenn mir jemand helfen kann, wär ich sehr dankbar drüber, dann versteh ich vielleicht das zusammen spiel von vba mit access bessser ist doch auch was anderes als in vb ein paar kleine programme zu erstellen.
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    In VBA Access ist es einfacher mit SQL zu arbeiten als in VB (und Access als DB).
    Code vb:
    1
    2
    3
    
    Dim sql as String
    sql = "INSERT INTO tabelle (feld1, Feld2) VALUES " & me.NumericFeld1 & ", '" & me.StringFeld2 & "'"
    Call CurrentDb.Execute(sql)
    Barry007 bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    muss ich nicht auch mit ner funktion feststellen zur welchen ID die Barcodenummer gehört damit der beruf auch immer in der richtigen zeile abgelegt wird?
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Natürlich. Ich habe nur ein Besipeli gepostet für ein INSERT um zu zeigen wie man die Datenfunktionen ausführen kannst. Analog gehen UPDATe etc. auch. Du siehst da wie man auf Fleder des Formulars zugreifft, wie man Strings zusammensetzt.

    Die ID musst du irgendwoher haben. Klar.
    Woher? Sorry, ohne Code und ohne zu wissen wie dein Formular aufgebaut ist währe dies ein Rätselraten auf das ich im Moment grad kein Bock hab.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    klar, kein ding.
    ich probier noch etwas aus und wenn ich nicht weiterkomm post ich mal so was ich hab.

    danke vielmals
     

  6. #6
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    Ich hab jetzt mal Probehalber eine neue Tabelle erstellt und ein Formular zwei Textfeldern und einem Button.

    Wenn ich jetzt im Codefenster den Button auswähle und den folgenden Code von Ihnen einfüge um zumindest mal daten in eine Tabele zu schreiben funktioniert das so nicht.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Private Sub cmdBeruf_Click()
     
    Dim sql As String
    sql = "INSERT INTO PersBeruf (Barcode, Beruf)"
    VALUES "& StringBarcode & ", '" & StringBeruf &"'"
    Call CurrentDb.Execute(sql)
     
    End Sub

    auf was muss ich da genau achten ich kann doch nicht einfach nur den code verwenden um etwas in eine Tabelle einzufügen, ich dachte das geht nur mit diesem "recordset".
     

  7. #7
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Welchen Datentyp hat das Feld "Barcode" ? Wenn es ein Textfeld ist, musst du es auch in enfache Anfürungszeichen setzen.

    Ansonsten kopiere mal die SQL Anweisung, trage für die Variable einen Wert ein und führe sie als normale Abfrage aus. Mal sehen was da rauskommt.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  8. #8
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    wenn ich den code so eintrage kommt immer das fenster: "fehler beim kompilieren"

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Private Sub cmdBeruf_Click()
     
    Dim sql As String
    sql = "INSERT INTO PersBeruf (Barcode, Beruf)"
    VALUES "'" & StringBarcode & "', '" & StringBeruf & "'"
    Call CurrentDb.Execute(sql)
    End Sub

    hab hier jetzt das hochkommata eigefügt, was meinst du mit die sql-anweisung kopieren und mit werten fühlen?

    mit werten in dem code die dann auf knopfdruck eingefügt werden?

    ist der code eigentlich überhaupt vollständig/ausreichend um die daten eintragen zu können?
     

  9. #9
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Code sql:
    1
    
    SQL = "INSERT INTO PersBeruf (Barcode, Beruf) VALUES '" & StringBarcode & "', '" & StringBeruf & "'"

    Du hattest ein Anführungszeichen zu viel drin.

    Versuche entweder die Anweisung mal so auszuführen das du im Code direkt Werte einträgst:

    Code sql:
    1
    
    SQL = "INSERT INTO PersBeruf (Barcode, Beruf) VALUES '0815-4711', 'Berufsbezeichnung'"

    und den Code dann ausführst. Oder du kopierst dieses Beispiel so:

    Code sql:
    1
    
    INSERT INTO PersBeruf (Barcode, Beruf) VALUES '0815-4711', 'Berufsbezeichnung'

    und dann erstellst du eine neue Abfrage (du arbeitest ja mit Access wenn ich mich nicht irre), fügst den kopierten Code ein und führst die Abfrage aus. Dann bekommst du eventuell eine Fehlermeldung die dir weiterhilft.

    Ob der Code ausreichend ist, hängt zuletzt auch davon ab ob "StringBarcode" und "StringBeruf" gültige Werte enthalten. Die Frage ist auch ob die die Angaben irgendwie auf Richtigkeit oder so prüfen musst bevor du sie einträgst.
    Geändert von tombe (01.07.10 um 11:27 Uhr)
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  10. #10
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    Alles andere hat auch nicht funktioniert, es kam dann ein Laufzeitfehler 3134 (Syntaxfehler in der INSERT INTO-Anweisung).

    Ich hab jetzt zum testen ein neues Formular erstellt,

    auf diesem Formular gibt es ein Textfeld für den Barcode (hier kommen Zahlen als String hinein ), ein Kombinationsfeld für die Berufe (ebenfalls String) und einen Button zum senden.

    Das Kombinationsfeld bekommt die Inhalte aus einer Tabelle mit einer Spalte in der die Berufe aufgelistet sind: Tabelle heißt Berufe.

    Dann gibt es eine weitere Tabelle "Pesonalberufe" in der es die Spalten Barcode und Beruf gibt.

    Nun will ich eine Nummer eingeben in das Textfeld "Barcode" eingeben (zB. 0066), dann in dem Kombinationfeld einen Beruf auswählen und auf "senden" klicken.
    Diese Daten sollen dann in der Tabelle "Personalberufe" gespeichert werden.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Private Sub cmdSenden_Click()
    Dim strBC As String
    Dim strBeruf As String
    Dim strSQL As String
     
    strSQL = "INSERT INTO Personalberufe (Barcode, Beruf) VALUES '" & strBC & "', '" & strBeruf & "'"
     
    End Sub

    Ich kann irgendwie nicht glauben das dieser Code ausreicht um die Daten zu speichern.

    ich kenn mich mit Access wirklich nicht aus, ich versteh etwas von php aber das ist echt komisch, ich hab gehofft das ne Datenbank in Access zu erstellen einfacher ist.

    Ich bin über jede Hilfe Dankbar
    Geändert von Barry007 (01.07.10 um 15:15 Uhr)
     

  11. #11
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Also hier ein kleines (funktionierendes) Beispiel:

    Code vb:
    1
    2
    3
    4
    
    Private Sub Befehl4_Click()
      sql = "INSERT INTO Tabelle1 (feld1, feld2) VALUES ('" & txtFeld1.Value & "', '" & lstFeld2.Value & "')"
      DoCmd.RunSQL (sql)
    End Sub

    Hierzu gibt es eine Form die 1 Textfeld ("txtFeld1"), 1 Listenfeld ("lstFeld2") und einen Button ("Befehl4") enthält. Außerdem gibt es die Tabelle "Tabelle1" mit den Feldern "feld1" und "feld2". Beide Felder sind vom Typ Text.

    Klicke ich nun auf dem Button, wird der Datensatz in die Tabelle eingefügt.
    Barry007 bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  12. #12
    Barry007 Barry007 ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    18
    Danke
    , jetzt blick ich's auf jedenfall mal mit dem eintragen von datensätzen, so kann ich das dann auch weiter verwenden bei update und select

    Das mit "txtFeld1" kenn ich von Visual Basic aber "DoCmd.RunSQL (sql)" war wohl notwendig zum eintragen der Inhalt, das hab ich nicht gekannt.


    Für was wird den dann eigentlich "Call CurrentDb.Execute(sql)" verwendet?
     

  13. #13
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ansonsten nach dem Zusammenstellen der Variabel sql diese mal ausgeben und begutachten
    (Debug.Print). Dann hast du im Direktfenster den SQL-String der die DB ausführen will. Ich habe hier eine Anlitung für PHP und MySQL, diese funktioniert aber vom Konzept her gleich mit der Ausgabe über Debug.Print in der Access-DB mit VBA.
    http://wiki.yaslaw.info/wikka/PhpDebugMySqlQueries

    Code vb:
    1
    2
    3
    4
    5
    
    Private Sub Befehl4_Click()
      sql = "INSERT INTO Tabelle1 (feld1, feld2) VALUES ('" & txtFeld1.Value & "', '" & lstFeld2.Value & "')"
      Debug.Print sql
      DoCmd.RunSQL (sql)
    End Sub

    Call CurrentDb.Execute(sql) = DoCmd.RunSQL (sql)
    Das eine geht über die DB-Instance, das andere über das DoCmd-Konstruckt. DoCmd enthält alles was du auch mit Makros machen kannst
    Barry007 bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Tabelle in C# durch Datennamen-Eingabe erstellen
    Von dos_7 im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 27.02.10, 22:07
  2. Distinctabfrage über Recordset
    Von Bato_Loco im Forum ASP
    Antworten: 9
    Letzter Beitrag: 27.10.05, 19:56
  3. Verbinden mit MSSQL Datenbank über Recordset
    Von Jacizzle im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 16.08.05, 17:40
  4. Eingabe über Editfelder in Tabellen
    Von Loreley24 im Forum Borland CBuilder und VCL
    Antworten: 0
    Letzter Beitrag: 08.04.05, 16:11
  5. Recordset in eine vorhandene Excel Tabelle
    Von faltencreme im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 06.11.03, 11:20

Stichworte