Smilla Geschrieben 19. Juni 2007 Geschrieben 19. Juni 2007 Hallo zusammen, bin dabei ein "Wer wird Millionär" Spiel zu programmieren in VB6. Die Fragen liegen in einer Access Datenbank. Wie kann ich beides miteinander verknüpfen um von meiner VB6 Anwendung auf die Fragen in der Tabelle zugreifen zu können? Danke schonmal! Zitieren
Amstelchen Geschrieben 19. Juni 2007 Geschrieben 19. Juni 2007 wahlweise mit ADO/DAO/ODBC oder deiner bevorzugten zugriffsmethode. ansonsten bitte mehr informationen. willst du die daten nur darstellen oder auch bearbeiten können? ansonsten, zum einlesen: VB-Tec / Daten / Datenbank - Datenbank. findet sich übrigens über google s'Amstel Zitieren
Smilla Geschrieben 19. Juni 2007 Autor Geschrieben 19. Juni 2007 Mit ADO oder DAO oder so hab ich noch nie was gemacht. Was ist das genau? Die Daten sollen in meinem VB6 Formular nur dargestellt werden. Wird ja ein Wer wird Millionär Spiel und dafür muss ich die Fragen aus der Access Datenbank Tabelle wo sie drin stehen auslesen können! Brauchst du noch weitere Informationen? Zitieren
Amstelchen Geschrieben 19. Juni 2007 Geschrieben 19. Juni 2007 Mit ADO oder DAO oder so hab ich noch nie was gemacht. Was ist das genau? grob gesagt, sind ADO und DAO zwei modelle, wie man auf (relationale) daten sowie metadaten (tabellen, spalten, felder, ...) zugreifen kann. eine kurze recherche dazu wird dir genaue informationen liefern, wie die beiden modelle arbeiten. realisiert wird das in VB/VBA so, dass du die entsprechenden DLLs/OCXes bei den verweisen/projekteigenschaften einbindest und dort dann arbeitest. für dich als programmierer stehen dann objekte wie Recordset, Connection, Command, usw. zur verfügung. wenn du mit ADO arbeiten willst, fang da an: ActiveVB - Der große ADO-Kurs - Seite 1 Brauchst du noch weitere Informationen? nö, belassen wirs mal dabei :floet: s'Amstel Zitieren
Smilla Geschrieben 19. Juni 2007 Autor Geschrieben 19. Juni 2007 Irgendwie blick ich da nicht durch und funktionieren tuts bei mir auch nicht Zitieren
Amstelchen Geschrieben 19. Juni 2007 Geschrieben 19. Juni 2007 die aussage "funktionieren tuts nicht" ist halt leider dann doch etwas zu magere information - was funktioniert nicht? was hast du denn schon, sprich: was ist deine (derzeitige) ausgangslage? hast du dir die beiden links angesehen und versucht zu verstehen? s'Amstel Zitieren
Smilla Geschrieben 20. Juni 2007 Autor Geschrieben 20. Juni 2007 Ja die Links hab ich angeschaut! Der erste Link geht doch um SQL oder? Hab ja ne Access Datenbank. Bei dem zweiten blick ich das nicht so ganz! Momentan hab ich nur folgendes (sehr mager, ich weis, aber ich blick absolut nicht durch): Option Explicit Dim con As New ADODB.Connection Dim rst As New ADODB.Recordset Dim com As New ADODB.Command Private Sub Form_Load() con.Provider = "Microsoft.Jet.OLEDB.4.0" con.Properties("Data Source") = "C:\Dokumente und Einstellungen\ljunginger\Desktop\WWM\FrageDB.mdb" End Sub Ich hab so n Adodc Object von VB6 im Formular eingebunden. Hab wo anders gelesen das man es auch damit machen kann... :confused: Zitieren
Amstelchen Geschrieben 20. Juni 2007 Geschrieben 20. Juni 2007 du bist schon auf dem richtigen weg. basierend auf der Connection kannst du ja jetzt ein Recordset verwenden, um mit den daten umzugehen, oder ein Command, um eben einen SQL-befehl direkt in die datenbank zu "schiessen", wobei die ergebnisse des letzteren nicht in DS-form verarbeitbar sind. s'Amstel Zitieren
Smilla Geschrieben 20. Juni 2007 Autor Geschrieben 20. Juni 2007 OK ich werds mal versuchen. Kann ich das Recordset genauso aufbauen/schreiben wie wenn es intern in Access wäre? (Habe in Access schon Recordsets verwendet um etwas aus einer tabelle zu holen, war aber alles in access, nicht so wie jetzt mit VB). Bin grad so am ausprobieren (hab das im Internet entdeckt). Bekomme aber den Fehler "Das Microsoft Jet Datenbank Modul findet die Eingangstabelle "tblFragen" nicht. Stellen Sie sicher das sie existiert und der Name richtig eingegeben wurde!" ... :confused: Wenn ich dann auf Debuggen klick, wird das .Open beim Recordset markiert. Dim Cnn As ADODB.Connection Dim RS As ADODB.Recordset Dim strFileName As String Dim strDBPassword As String Dim strSQL As String Dim CursorLocation As CursorLocationEnum Dim CursorType As CursorTypeEnum Dim LockType As LockTypeEnum Dim CommandTimeOut As Long Private Sub Form_Load() ' \\\ Öffnen der Connection (Datenbank öffnen) strFileName = "C:\Dokumente und Einstellungen\ljunginger\Desktop\WWM\FrageDB.mdb" CursorLocation = adUseClient Set Cnn = New ADODB.Connection With Cnn .Provider = "Microsoft.Jet.OLEDB.4.0" .Properties("Data Source") = strFileName If CommandTimeOut > 0 Then .CommandTimeOut = CommandTimeOut End If If Len(strDBPassword) Then .Properties("Jet OLEDB:Database Password") = strDBPassword End If If CursorLocation <> 0 Then .CursorLocation = CursorLocation End If .Properties("Persist Security Info") = False .Open End With If (Cnn.State And adStateOpen) = adStateOpen Then ' \\\ Öffnen des Recordsets strSQL = "Select * From tblFragen" CursorType = adOpenStatic LockType = adLockOptimistic Set RS = New ADODB.Recordset With RS Set .ActiveConnection = Cnn .Source = strSQL .CursorType = CursorType .CursorLocation = CursorLocation .LockType = LockType .Properties("IRowsetIdentity") = True .Open End With If (RS.State And adStateOpen) = adStateOpen Then ' ******************************************* ' hier erhält Dein DataControl nun _ einen Verweis auf das Recordset Set Adodc.Recordset = RS ' ******************************************* ' ******************************************* ' Du kannst Deine Controls aber genausogut _ gleich direkt an das Recordset binden, ohne _ überhaupt ein DataControl zu verwenden. ' ******************************************* ' \\\ Recordset z.B. an ein DataGrid binden Set DataGrid.DataSource = RS ' \\\ Recordset z.B. an Textboxen binden '' txtX(0).DataField = RS.Fields(0).Name '' txtX(1).DataField = RS.Fields(1).Name '' '' '' Set txtX(0).DataSource = RS '' Set txtX(1).DataSource = RS End If End If End Sub Zitieren
DevHB Geschrieben 20. Juni 2007 Geschrieben 20. Juni 2007 Hi, ersteinmal schmeiß das ADODC wieder raus, denn gebundene Steuerelemente bringen nur Ärger und Du lernst dabei nix! Zudem hast Du ja schon den richtigen Anfang mit ADODB.Recordst und Connection gemacht, brauchst also das ADODC nicht mehr. Zur Fehlermeldung: Die sagt klar und deutlich aus, was falsch ist, nämlich der Tabellenname, sprich die Tabelle heißt anders oder ist gar nicht vorhanden. Private Sub Form_Load() ' \\\ Öffnen der Connection (Datenbank öffnen) strFileName = "C:\Dokumente und Einstellungen\ljunginger\Desktop\WWM\FrageDB.mdb" CursorLocation = adUseClient Set Cnn = New ADODB.Connection With Cnn .Provider = "Microsoft.Jet.OLEDB.4.0" .Properties("Data Source") = strFileName If CommandTimeOut > 0 Then .CommandTimeOut = CommandTimeOut End If If Len(strDBPassword) Then .Properties("Jet OLEDB:Database Password") = strDBPassword End If If CursorLocation <> 0 Then .CursorLocation = CursorLocation End If .Properties("Persist Security Info") = False .Open End With 'unnötig: If (Cnn.State And adStateOpen) = adStateOpen Then ' funktioniert auch so: If Cnn.State = adStateOpen Then ' \\\ Öffnen des Recordsets strSQL = "Select * From tblFragen" CursorType = adOpenDynamic LockType = adLockOptimistic Set RS = New ADODB.Recordset With RS Set .ActiveConnection = Cnn .Source = strSQL .CursorType = CursorType .CursorLocation = CursorLocation .LockType = LockType .Properties("IRowsetIdentity") = True .Open End With 'unnötig: 'If (RS.State And adStateOpen) = adStateOpen Then ' funktioniert auch so: If RS.State = adStateOpen Then ' ******************************************* ' hier erhält Dein DataControl nun _ einen Verweis auf das Recordset ' brauchst du nicht mehr ' Set Adodc.Recordset = RS ' ******************************************* ' ******************************************* ' Du kannst Deine Controls aber genausogut _ gleich direkt an das Recordset binden, ohne _ überhaupt ein DataControl zu verwenden. ' ******************************************* ' \\\ Recordset z.B. an ein DataGrid binden Set DataGrid.DataSource = RS ' \\\ Recordset z.B. an Textboxen binden '' txtX(0).DataField = RS.Fields(0).Name '' txtX(1).DataField = RS.Fields(1).Name '' '' '' Set txtX(0).DataSource = RS '' Set txtX(1).DataSource = RS End If End If End Sub Ich würde zudem, zumindest unter VB 6, wie gesagt keine gebundenen Controls verwenden. Schreib Dir eine Methode, die Dein Recordset durchläuft und die Daten über "Rs.Fields("FeldName").Value" in die entspr. Steuerelemente setzt. Schau Dir dies Beispiel mal an: http://www.activevb.de/cgi-bin/upload/download.pl?id=2444 Zitieren
Smilla Geschrieben 21. Juni 2007 Autor Geschrieben 21. Juni 2007 OK hab das ADODC Object wieder vom Formular gelöscht. Aber die Tabelle gibt es definitiv und die heißt auch so! Das ist ja das komische... :confused: Edit: Die Tabelle hieß nur "Fragen". Hab sie jetz mal umgeändert, mal gucken obs geht! Bin es gewohnt das man bei uns Tabellennamen mit "tbl" beginnt, von daher hab ich angenommen das es da auch so ist Zitieren
DevHB Geschrieben 21. Juni 2007 Geschrieben 21. Juni 2007 OK hab das ADODC Object wieder vom Formular gelöscht. Sehr gut Edit: Die Tabelle hieß nur "Fragen". Hab sie jetz mal umgeändert, mal gucken obs geht! Bin es gewohnt das man bei uns Tabellennamen mit "tbl" beginnt, von daher hab ich angenommen das es da auch so ist Finde ich auch richtig. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.