3Danke
ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
933
933
EMPFEHLEN
-
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.
-
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)
---------------------------------------------------------------------------------------------------
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
-
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?
-
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
-
klar, kein ding.
ich probier noch etwas aus und wenn ich nicht weiterkomm post ich mal so was ich hab.
danke vielmals
-
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".
-
01.07.10 10:58 #7
- 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.
-
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?
-
01.07.10 11:25 #9
- 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.
-
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 DankbarGeändert von Barry007 (01.07.10 um 15:15 Uhr)
-
01.07.10 15:44 #11
- 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.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.
-
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?
-
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---------------------------------------------------------------------------------------------------
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
-
Tabelle in C# durch Datennamen-Eingabe erstellen
Von dos_7 im Forum VisualStudio & MFCAntworten: 0Letzter Beitrag: 27.02.10, 22:07 -
Distinctabfrage über Recordset
Von Bato_Loco im Forum ASPAntworten: 9Letzter Beitrag: 27.10.05, 19:56 -
Verbinden mit MSSQL Datenbank über Recordset
Von Jacizzle im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 16.08.05, 17:40 -
Eingabe über Editfelder in Tabellen
Von Loreley24 im Forum Borland CBuilder und VCLAntworten: 0Letzter Beitrag: 08.04.05, 16:11 -
Recordset in eine vorhandene Excel Tabelle
Von faltencreme im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 06.11.03, 11:20





Zitieren


Login





