| |
VB & DatenbankenDatenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 27.09.06 00:11 |
| Hallo zusammen!
Ich habe vollgendes Problem und hoffe ihr könnt mir weiterhelfen.
Ich habe zwei Tabellen einmal Tabelle "Artikel" und Tabelle "Artikelgruppe".
Die Tabelle Artikel besitz nun die Felden :
ArtikelID
Artikelbez
Artikelpreis
Artikelgruppe*
*Hier sollen nun die in der Tabelle Artikelgruppe definierten Werte mit Hilfe einer Dropdownliste angezeigt werden.
In Access ist das ja ganz easy.....aber wie bekomme ich denn jetzt VB dazu mir diese Daten aus der Tabelle Artikelgruppe anzuzeigen??
Die Tabelle Artikel habe ich so in das Programm mit eingebunden:
[code
]Set Db = OpenDatabase(App.Path & "\marti2.mdb")
Set Tb = Db.OpenRecordset("tbl_Artikel", dbOpenDynaset)wie sag ich VB denn jetzt das er bei dem Feld Artikelgruppe der Tabelle Artikel in die Tabelle Artikelgruppe schauen soll um diese mir dann in der Dropdownliste anzuzeigen????
Vielen Dank schon mal | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: Prian0815 | Datum: 27.09.06 10:32 |
| In etwa so:
dim stsql as string
Set RS = New ADODB.Recordset
stSQL = ""
stSQL = "SELECT Artikelgruppe.Bezeichnung, Artikelgruppe.weiteresFeld" _
& " FROM Artikelgruppe WHERE (((Artikelgruppe)=" & Artikelgruppe& "));"
RS.Open stSQL, db, adOpenStatic, adLockOptimistic
In der String-Variablen 'Artikelgruppe muß dann der Wert stehen, nachdem du suchst. Ich hoffe das hilftv dir erst ma weiter.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 28.09.06 08:35 |
| Hallo nochmal!
Danke erstmal für die schnelle Antwort!
Habe es irgendwie noch nich hinbekommen.
Muß aber auch gestehen das ich auch nicht wirklich weiß wo für das "&" steht!
Habe meine Abfrage jetzt so gemacht:
stsql = "SELECT Zubehörbez FROM tbl_Zubehörgruppe INNER JOIN tbl_Artikel WHERE (" & _
"tbl_Zubehörgruppe.ZubehörID = tbl_Artikel.ZubehörID)"
Set rs = Db.OpenRecordset(stsql) Allerdings sagt mir dann der kompiler :
Laufzeitfehler 3131
Syntaxfehler in From Klausel!!!
Wenn ich folgendes dahinter packe ;" sagte er mir: erwartet Anweisungsende!!!
Wäre super wenn mich mal einer Aufklären könnte | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: Prian0815 | Datum: 28.09.06 10:40 |
| Hi berti, dein InnerJoin muß denke ich so aussehen:
stsql = "SELECT Zubehörbez FROM tbl_Zubehörgruppe INNER JOIN tbl_Artikel On tbl_Zubehörgruppe.ZubehörID = tbl_Artikel.ZubehörID"
Set rs = Db.OpenRecordset(stsql)
Hier ein Beispiel von mir:
SELECT Abteilung.AbtKey, Mitarbeiter.MitKey, *
FROM Abteilung INNER JOIN Mitarbeiter ON Abteilung.AbtKey = Mitarbeiter.MitAbteilungNr;
Wenn du mit Access arbeuitest, kannst du dort den Abfrageentwurf nachbasteln, und dir das SQL-Statement aus der Ansicht ---> SQL-Ansicht rauskopieren.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 28.09.06 10:51 |
| Hi Prian!
Danke für die schnelle Antwort!
Habe die Abfrage vorhin auch so aufgebaut.....wollte das Ergebnis gerade Posten.
Denn nun sagt mit VB folgendes:
Laufzeitfehler 13
Typen unverträglich
Hier der Code:
Deklaration Allgemein
Dim Db As Database
Dim Tb As Recordset
Dim Tb2 As Recordset
Dim stsql As String
Dim rs As ADODB.Recordset
Private Sub Form_Load()
Set Db = OpenDatabase(App.Path & "\marti2.mdb")
Set Tb = Db.OpenRecordset("tbl_Artikel", dbOpenDynaset)
stsql = ""
stsql = "SELECT Zubehörbez FROM tbl_Zubehörgruppe INNER JOIN tbl_Artikel ON (" & _
"tbl_Zubehörgruppe.ZuberhörID = tbl_Artikel.ZuberhörID)"
Set rs = Db.OpenRecordset(stsql)
rs.Open stsql, Conn, adOpenStatic, adLockOptimistic
End Sub Warum geht das nicht ?? | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 28.09.06 13:12 |
| vielleicht hat ja noch jemand anderes der gerade Online ist ein Tipp für mich und kann mir helden.
EIN TEIL Des Codes sieht gerade so aus:
Deklaration Allgemein
Dim Db As Database
Dim Tb As Recordset
Dim Tb2 As Recordset
Dim stsql As String
Private Sub Form_Load()
Set Db = OpenDatabase(App.Path & "\marti2.mdb")
Set Tb = Db.OpenRecordset("tbl_Artikel", dbOpenDynaset)
Set RS = New ADODB.Recordset
stsql = ""
stsql = "SELECT Zubehörbez FROM tbl_Zubehörgruppe INNER JOIN tbl_Artikel ON (" & _
"tbl_Zubehörgruppe.ZubehörID = tbl_Artikel.ZubehörID)"
RS.Open stsql, Conn, adOpenStatic, adLockOptimistic
Set RS = Db.OpenRecordset(stsql) Fehlermeldung: Laufzeitfehler 3001
Die Argumente sind vom falschen TYP, liegen ausserhalb des Gültigkeitsbereiches oder sind miteinander unvereinbar
Wäre schon wenn man mir helfen könnte | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: Prian0815 | Datum: 28.09.06 15:03 |
| Dim rs mal ganz normal as recordset. Dann sollte alles funzen.
Gruß Armin
P.S.: always look on the bright side of Life! | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 04.10.06 20:52 |
| Hallo!
Habe es leider immer noch nicht hinbekommen.
Habe nun etwas mehr Über den Datenbankzugriff mit ADO gelesen (Denn das ist alles NEULAND für mich).
Versuche nun erstmal mit hilfe einer Sql abfrage eine Dropdownliste zu füllen.
Und dies mit Daten aus nur einer Tabelle! Wenn ich das hinbekomme dann kann ich den versuch mit dem Zugriff auf die Verknüpften Tabellen wagen.
CODE
Private Sub Command2_Click()
Set Rs2.ActiveConnection = Cn 'aktive Verbindung zuweisen
Rs2.LockType = adLockOptimistic
Sql = "Select tbl_Artikel.Artikelname from tbl_Artikel"
Rs2.Open (Sql)
'Sql "Select tbl_Artikel.Artikelname from tbl_Artikel"
If Not Rs2.EOF Then
Combo1.AddItem (Rs2)
TerminateConnection
End If
End Sub | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 04.10.06 20:54 |
| Nun bekomme ich die Fehlermeldung:
Argument ist nicht optional!
dieser Teil des Codes wird makiert: Combo1.AddItem (Rs2)
Danke schon einmal im Vorraus | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 05.10.06 00:39 |
| Hat sich schon erledigt. Habe es selbst hinbekommen | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 05.10.06 21:41 |
| Hallo zusammen!
Ich stell die ganze Sache nochmal vor damit man nicht die vorherigen Threads lesen muß!
Habe folgendes Problem:
zunächst einmal stelle ich eben beide Tabellen vor:
Tbl_Artikel
ArtikelId PK
Artikelname
GruppenID FK
Tbl_Gruppen
GruppenID PK
Gruppenname
Wir Ihr seht sind die Tabellen durch GruppenID miteinandere verknüpft!
Ich möchte nun in Vb neue Artikel anlegen können.
Den Artikelname weise ich der Datenbank über ein Textfeld zu.
Das klappt auch einwandfrei!
Nun möchte ich aber das in einer Combobox bzw Dropdownliste die möglichen Artikelgruppen (die ich ja vorher in tbl_Gruppen definiert habe) angezeigt werden!
Nur diese Artikelgruppen sollen zur Auswahl stehen!
In Access wäre das ja ganz einfach.
In der Combobox werden mir nun die GruppenID's aufgelistet.
Er schreibt sie dann auch mit einem "Senden"Befehl in die Datenbank.
Aber mir wird ja nur die GruppenID angezeigt! Wie mache ich es möglich das er mir in der Combobox die Gruppennamen anzeigt und trotzdem die ID in die Datenbank schreibt?
Ich hoffe ihr versteht was ich meine
Danke schon einmal
Hier mein Code
Private Sub cmdAdd_Click()
Rs.AddNew
Clear
txtArtikelbez.SetFocus
Set Rs2.ActiveConnection = Cn 'aktive Verbindung zuweisen
Rs2.LockType = adLockOptimistic
Sql = "SELECT tbl_Gruppen.GruppenID, " & " tbl_Gruppen.Gruppenname from" & _
"tbl_Gruppen"
Rs2.Open (Sql)
If Rs2.RecordCount > 0 Then
While Not Rs2.EOF
Combo1.AddItem Rs2("GruppenID")
Rs2.MoveNext
Wend
Combo1.Locked = False
End If
Rs2.Close
'TerminateConnection
End Sub | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: wb-soft | Datum: 06.10.06 08:15 |
| Hi!
Generell scheinst du noch nicht viel Erfahrung mit DB-Programmierung zu haben. Da kommt noch einiges an Problemen auf dich zu.
Ich würde dir empfehlen, ein Buch zu diesem Thema zu besorgen.
Dein aktuelle Problem ist so zu lösen:
Combo1.AddItem Rs2("Gruppenname")
Combo1.ItemData(Combo1.NewIndex) = Rs2("GruppenID") Damit sieht der User den Klartext, und die zu speichernde ID liegt in ItemData bereit.
mfg
WB | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 06.10.06 10:29 |
| Ja ich weiß! Jeder Anfang ist schwer
Kann mich noch nicht entscheiden welches Buch ich holen soll!
Welches würdet ihr empfehlen?
Und danke....jetzt funzt es nämlich auch. | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: wb-soft | Datum: 06.10.06 10:57 |
| Hi!
Empfehlenswert:
Die Visual Basic 6 Bibel: Enthält gute Kapitel zu DB-Programmierung. Ich glaube, davon gab es einmal ein E-Book.
Datenbanken mit Visual Basic 6, von Roger Jennings: Das ist die Bibel für DB-Programmierung. VB-Kenntnisse sollten aber bereits vorhanden sein.
Bei Michael Kofler ist vielleicht aus etwas dabei. Der schreibt sehr gute Bücher zu unterschiedlichen Themen rund um Computer.
mfg
WB | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 06.10.06 12:06 |
| Alles klar, werde mich mal schlau machen und eins Ordern.
Übrigens hat das mit deinem Code nur zum Teil geklappt.
Er schreibt immer den letzten Gruppennamen in die Datenbank hinein.
Wenn ich also einen neuen Artikel "Artikel5" anlege und in der Combobox die Artikelgruppe als z.b"(ladegerät) definieren, schreibt er mir immer als Gruppennamen "Akku" in die Datenbank! (Akku ist der letzte Datensatz in der tbl_Gruppen) | |
Re: Datenbankinhalte in Dropdownliste laden | | | Autor: berti | Datum: 06.10.06 13:09 |
| Habs nun doch hinbekommen , danke nochmal | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|