Zahlen in Wörter umwandeln mit Hilfe einer Datenbank (Access)

  • VB6

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von T1g0r.

    Zahlen in Wörter umwandeln mit Hilfe einer Datenbank (Access)

    Guten Abend!

    Ich beschäftige mich noch nicht sehr lange mit Visual Basic und bin deswegen noch ein Anfänger. Ich hoffe, dass ihr mir weiter helfen könnt.

    Also zu meinem Problem.

    Ich habe ein Textfeld. Dieses Textfeld ist mit einer Datenbank verknüpft. Das heißt, wenn das Programm startet steht in dem Feld eine Zahl z.B. “01“. Diese Zahl ist ein Code für ein Wort. Der Code und das Wort stehen in einer zweiten Access Datenbank (Name = Anrede.mdb). In der ersten Spalte (Name = TABCode), der Datenbank steht der Code z.B. “01“ und in der zweiten Spalte (Name = TABInhalt) das dazugehörige Wort z.B. “Herr“. Über ein Label möchte ich das Wort ausgeben. Das heißt die Datenbank soll den Code in ein Wort übersetzen.

    So was Ähnliches habe ich in Superbase programmiert. Da habe ich den Befehl “lookup“ verwendet. Das heißt, dass das Label den Wert vom Textfeld, also die Zahl, ausgelesen hat, dann in die Datenbank gegangen ist und hat in der ersten Spalte die Zahl gesucht. Wenn es die Zahl gefunden hat, ist es in die zweite Spalte in das Datenfeld rechts neben der Zahl gegangen wo das Wort drinnen steht und hat dieses Wort dann angezeigt.

    Ich hoffe ich habe mein Problem präzise genug beschrieben und hoffe, dass ihr mir weiter helfen könnt.
    Danke schon mal im Voraus!
    Guten Morgen!

    Danke für deine schnelle Antwort. Das mit dem falschen Forum tut mir leid. Ich dachte, da ich das ganze nur in Visual Basic programmiere und nicht direkt in Access, dass das ins Hauptforum gehört.

    Zurück zu meinem Problem. Wie genau soll ich die Bedingung “ Where X='01'“ in meinem Code mit einbringen? Woher weiß das Label auf welche Datenbank es zugreifen muss? Und wie mache ich das mit der Ausgabe des Wortes? Der Code “01“ steht in der linken Spalte das Wort “Herr“ in der rechten Spalte. Der Datensatz mit dem Code “01“ soll in der ersten Spalte gesucht werden und das Wort “Herr“ aus der zweiten Spalte soll ausgegeben werden.
    Die Spalte Codenummer heist bei mir z.B id_code und die Spalte für das Wort heist Name.

    SQL-Abfrage

    1. "select * from deinetabelle where id_code = " label1.text

    So bekommst du alle daten die die Codenummer haben, die in dem Label steht.

    Wenn du nur das Wort haben willst kann das so aussehen:

    SQL-Abfrage

    1. "select Name from deinetabelle where id_code = " label1.text
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Der Code von T1g0r muss um ein & ergänzt werden:

    SQL-Abfrage

    1. "select * from deinetabelle where id_code = " & label1.text
    2. "select Name from deinetabelle where id_code = " & label1.text
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Danke für eure Antworten. Leider bekomme ich es nicht hin. Der Code schaut jetzt so aus.

    Visual Basic-Quellcode

    1. "select TABInhalt from Anrede.mdb where TABCode = " & LabelAnrede


    Ich hätte da mal ein paar Fragen.

    Woher weiß Visual Basic wo die Datenbank ist, muss man da nicht den genauen Ort angeben?

    Beim "TABCode =" da muss doch auch noch was stehen. Nämlich wo nach er suchen soll. Und das steht im Textfeld "AnredeP" drinnen z.B. "01"

    Und wo steht drinnen, wo und wie das Wort ausgegeben wird? Es soll über das Label "LabelAnrede" ausgegeben werden.

    Und hier wa glaub ich ein kleines Missverständniss.


    So bekommst du alle daten die die Codenummer haben, die in dem Label steht.
    Die Codenummer kommt aus dem Textfeld "AnredeP". Das Label "LabelAnrede" soll das Wort dann anzeigen.
    Autsch...

    SQL-Abfrage

    1. select TABInhalt from Anrede.mdb where TABCode = " & LabelAnrede

    from Anrede.mdb betrifft die Tabelle. Dort musst du die Tabelle angeben. Nicht die Datenbank.
    Diese musst du im ConnectionString angeben.
    Du solltest dir mal ein paar Beispiele zur Datenbankprogrammierung anschauen.
    Hier im Forum gibts ein Thread mit guten Bücher.

    Wie ist denn dein bisheriger Code?
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Ich raff jetzt nichts mehr. Warum Autsch??

    Den Code "select TABInhalt from Anrede.mdb where TABCode = " & LabelAnrede habt ihr mir doch genannt. Ich hab ihn nur an meine Namen angepasst.

    Also zu dem Connection String. Wie mache ich das genau. Und warum sagt das denn keiner. Ich hab doch am Anfang gesagt, dass ich ein Anfänger bin.

    Also noch mal von vorne ich brauche alle Codes die mich zu meinem Ergebnis führen.

    Das heißt erstens wie stelle ich eine Verbindung zur Datenbank her?

    Zweitens wie funktioniert des mit dem Label?



    Ich habe ein Textfeld "Name = AnredeP". Dieses Textfeld ist mit einer Datenbank verknüpft. Das heißt, wenn das Programm startet steht in dem Feld eine Zahl z.B. “01“. Diese Zahl ist ein Code für ein Wort. Der Code und das Wort stehen in einer zweiten Access Datenbank (Name = Anrede.mdb). In der ersten Spalte (Name = TABCode), der Datenbank stehen die Codes z.B. “01“ und in der zweiten Spalte (Name = TABInhalt) die dazugehörigen Wörter z.B. “Herr“. Über ein Label "Name = LabelAnrede" möchte ich das Wort ausgeben. Das heißt die Datenbank soll zur Übersetzung dienen, den Code in ein Wort zu übersetzen.



    Ach ja alles was programmiert wird, wird in Visual Basic programmiert und nicht in Access!



    Und bitte verwendet meine Namen. Das erspart mir viel Arbeit und es kommen keine Missverständnisse zu stande.



    Und noch mal ich hab von Visual Basic nur sehr wenig Ahnung. Das heißt ihr müsst mir alles sagen um zu meinem Ergebnis zu kommen.



    Ich bin mir sicher wir bekommen des schon irgentwie hin. ^^






    Danke für eure Bemühungen und für die weiteren Bemühungen die noch folgen werden.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Urs derBaer“ ()

    Den Code "select TABInhalt from Anrede.mdb where TABCode = " & LabelAnrede habt ihr mir doch genannt.
    Nein haben wir nicht. Wir haben dir
    "select * from deinetabelle where id_code = " & label1.text
    genannt. deinetabelle und nicht deinedatenbank.
    Ich hab leider kein VB6 installiert, kann dir also nicht direkt helfen.
    Wenn ich Google nutze, bekomme ich mit dem ersten Link eine Lösung...
    Den ConnectionString musst du natürlich auf deine Datenbank ändern.

    Visual Basic-Quellcode

    1. .ConnectionString = "C:\Anrede.mdb"

    Auch den CommandText musst du auf deine Bedürfnisse umstellen.

    Visual Basic-Quellcode

    1. CommandText = "SELECT TABInhalt FROM DeineTabelle WHERE TABCode = " & AnredeP.Text

    Bei der Ausgabe musst du dann den Inhalt den du bekommst dem Label zuweisen.

    Visual Basic-Quellcode

    1. LabelAnrede.Text = rs!TABInhalt


    Das ganze ist natürlich nicht getestet....
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Hi danke für deine schnelle Antwort. Des mit der Tabelle war mein Fehler. Ich bin davon ausgegangen, dass da der Name der Datenbank rein kommt. Es besteht noch ein kleines Problem. Ich glaube der Code funktioniert soweit. Nur die Ausgabe über das Label nicht. Fehlermeldung lautet. Laufzeitfehler 424 Objekt erforderlich! So schaut der Code jetzt aus!

    Visual Basic-Quellcode

    1. If AnredeP <> "" Then
    2. ConnectionString = "C:\Dokumente und Einstellungen\Urs Landwehrmann\Desktop\Programmieren\Visuel Basic\Visual Basic 2000\Programme\Landwehrmann GmbH\Anrede.mdb"
    3. CommandText = "SELECT TABInhalt FROM Anrede WHERE TABCode = " & AnredeP
    4. LabelAnrede = rs!TABInhalt
    5. End If
    Du glaubst der Code funktioniert? Wenn das dein ganzer Code ist mit dem du auf die Datenbank zugreifst, glaube ich das nicht.
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Muss man bis aufs Details erklären was zu machen ist?
    Auf der Seite, den Code vom zweiten Post kopieren und in dein Projekt einfügen. Danach wie zuvor beschrieben, den ConnectionString und den CommandText ändern.
    Die Ausgabe müsste bei dir dann so aussehen:

    Visual Basic-Quellcode

    1. 'Ausgabe erzeugen
    2. Set rs = cmd.Execute
    3. Do While Not rs.EOF
    4. LabelAnrede = rs!Spaltenname
    5. rs.MoveNext
    6. Loop
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Hi danke für deine Antwort. Ich komme mit deiner Anleitung nicht ganz klar! Den Code vom zweiten Post. Das wäre dann "Where X=01". Wenn ich das richtig verstanden habe beschreibt dein Code nur die Ausgabe für das Label. Du hast gesagt es fehlt noch was für den Zugriff auf die Datenbank. Also mein Code schaut jetzt so aus! Und ja ich bitte darum alles genau zu erklären, hab ja gesagt ich bin ein Anfänger und bevor Missverständnisse auftreten.

    Visual Basic-Quellcode

    1. If AnredeP <> "" Then
    2. ConnectionString = "C:\Dokumente und Einstellungen\Urs Landwehrmann\Desktop\Programmieren\Visuel Basic\Visual Basic 2000\Programme\Landwehrmann GmbH\Anrede.mdb"
    3. CommandText = "Select TABInhalt From Anrede WHERE TABCode = " & AnredeP
    4. 'Ausgabe erzeugen
    5. Set rs = cmd.Execute
    6. Do While Not rs.EOF
    7. LabelAnrede = TABInhalt
    8. rs.MoveNext
    9. Loop
    10. End If
    Mach doch einfach das was man dir sagt. Also du kopierst folgenden Code :

    Visual Basic-Quellcode

    1. 'Deklaration
    2. Dim cn As New ADODB.Connection
    3. Dim rs As New ADODB.Recordset
    4. Dim cmd As New ADODB.Command
    5. 'Verbindung zur Datenbank herstellen
    6. With cn
    7. .Provider = "Microsoft.Jet.OLEDB.4.0"
    8. .ConnectionString = "C:\Datenbank.mdb"
    9. .Open
    10. End With
    11. 'Anfrage an Datenbank senden
    12. With cmd
    13. .ActiveConnection = cn
    14. .CommandText = "SELECT * FROM Tabelle"
    15. End With
    16. 'Ausgabe erzeugen
    17. Set rs = cmd.Execute
    18. Do While Not rs.EOF
    19. msgbox(rs!Spaltenname)
    20. rs.MoveNext
    21. Loop

    Ändere den ConnectionString:
    "C:\Dokumente und Einstellungen\Urs Landwehrmann\Desktop\Programmieren\Visuel Basic\Visual Basic 2000\Programme\Landwehrmann GmbH\Anrede.mdb"
    Auserdem änderst du den CommandText wie du es haben willst. Wie du sagst:

    SQL-Abfrage

    1. "SELECT TABInhalt FROM Anrede WHERE TABCode = " & AnredeP"

    Und dann noch die Ausgabe:

    Visual Basic-Quellcode

    1. 'Ausgabe erzeugen
    2. Set rs = cmd.Execute
    3. Do While Not rs.EOF
    4. LabelAnrede = rs!Spaltenname
    5. rs.MoveNext
    6. Loop
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Hi so ich hab jetzt alles so gemacht wie du gesagt hast. Leider prummt er auf einen Fehler auf. Fehler lautet Laufzeitfehler ´-2147217913 (80040e07)´ Datentypen in Kriterienausdruck unverträglich. Das ist gelb makiert "Set rs = cmd.Execute"

    Visual Basic-Quellcode

    1. If AnredeP <> "" Then
    2. 'Deklaration
    3. Dim cn As New ADODB.Connection
    4. Dim rs As New ADODB.Recordset
    5. Dim cmd As New ADODB.Command
    6. 'Verbindung zur Datenbank herstellen
    7. With cn
    8. .Provider = "Microsoft.Jet.OLEDB.4.0"
    9. .ConnectionString = "C:\Dokumente und Einstellungen\Urs Landwehrmann\Desktop\Programmieren\Visuel Basic\Visual Basic 2000\Programme\Landwehrmann GmbH\Anrede.mdb"
    10. .Open
    11. End With
    12. 'Anfrage an Datenbank senden
    13. With cmd
    14. .ActiveConnection = cn
    15. .CommandText = "Select TABInhalt From Anrede WHERE TABCode = " & AnredeP
    16. End With
    17. 'Ausgabe erzeugen
    18. Set rs = cmd.Execute
    19. Do While Not rs.EOF
    20. LabelAnrede = TABInhalt
    21. rs.MoveNext
    22. Loop
    23. End If
    Dann hast du vermutlich einen Fehler im SQL-Befehl.
    Heist denn deine Tabelle in der Datenbank Anrede.mdb auch Anrede?
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Schau mal bei Google. Hast du in der Textbox AnredeP denn einen Text?
    Ich hab einen Bericht gefunden indem stand das der Fehler kommt, wenn kein Text in der Textbox ist...
    Da ich wie schon gesagt kein VB6 habe, kann ich den Fehler nicht richtig nachvollziehen. Wie gesagt selber mal schauen.
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia