Access DB mit VB 6 bearbeiten

Hi Tom,

habe das o.g. ausprobiert und folgende Probleme:

- ich kann die source Eigenschaft des Datagrid nicht benutzen (VB erkennt sie nicht - 'Methode oder Mitgliedsdaten nicht gefunden' fehlermeldung)

- die Verbindung zur Datenbank kommt nicht zustande (Laufzeitfehler'-2147467259(80004005)[Microsoft odbc][Driver Manager]der Datenquellenname wurde nicht gefunden - es wurde kein Standardtreiber angegeben)

Hier der Code, den ich bis jetzt übernommen habe:

Code:
Private Sub cmd1_Click()
Dim rs As adodb.Recordset
Set rs = New adodb.Recordset

With rs
    
    .ActiveConnection = "D:\Datenbank\Autovision.mdb"
    .LockType = adoptimistic
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .Open "Select * from tab_name"
    
End With

'Set DataGrid1.Source = rs.Source

End Sub
 
Servus!

Meinte eigentlich einen ConnectionString der Form:

Code:
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Administrator;Data Source=D:\Datenbank\Autovision.mdb;Persist Security Info=False"

...activeConnection = strCon ...

versuchs mal mit:

set DataGrid1.RecordSet = rs
Gruss Tom
 
So,

das habe ich jetzt getan. Folgender Code:

Code:
Private Sub cmd1_Click()
Dim rs As adodb.Recordset
Set rs = New adodb.Recordset
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Administrator;Data Source=D:\Datenbank\Autovision.mdb;Persist Security Info=False"

With rs
    
    .ActiveConnection = strCon
    .LockType = adoptimistic
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .Open "Select * from tab_name"
    
End With

Set DataGrid1.Recordset = rs

End Sub

- Die recordset Eigenschaft von DataGrid1 wird nicht zur Auswahl gestellt

- Wenn das Programm gestartet wird, erscheint folgende Fehlermeldung:
"Laufzeitfehler'-2147217843(80040e4d)': Die Anwendung kann nicht gestartet werden. Die Informationsdatei für die Arbeitsgruppe fehlt, oder ist exclusiv von einem anderen Benutzer geöffnet."

Der Debugger verweist auf diese Zeile des Codes:
Code:
.ActiveConnection = strCon
(Sorry, wenn ich mich ein wenig ungeschickt anstelle - ich mache das noch nicht lange und das ganze ist noch recht kompliziert für mich
:) )

Danke im voraus...
 
Servus!

Zum Connection String:

Leg auf deiner Form wie im Video gezeigt ein AdoDC ab ...
-geh in die eigenschaften (mit Rechter Maustatste -> Eigenschaften im Context Menu
-Verbindungszeichenfolge erstellen ...
-> OLE DB 4.0 JET blablabla ...
-> Datei auswählen
-> Benutzernamen gegebenenfalls ändern und Verbindung testen
-> jetzt müsse eigentlich bei Verbindungszeichenfolge ein etwas längerer Text stehen ... das ist dein ConnectionString ...

versuchs mal ...

zum zweiten problem kann ich dir jetzt nicht viel sagen, da ich hier in der Firma nur Access /VBA zu Verfügung habe und "mein" DataGrid1 als OLE Objekt eingebunden ist und somit nicht die erforderlichen Schnittstellen aufweist ... ich schau aber nachher mal zuhause ...
Experimientier einfach mal ein wenig damit rum ...#

oder mal statt

set DataGrid1 ....

einfach nur mal

msgbox "" & rs.getString ...

Dann bekommst du eine STring Repräsentation deines RecordSets an der du schon erkennen kannst ob's funzt oder nicht ...

Gruss Tom
 
Hi Tom :)

jetzt tut sich endlich was...:-)

Also ich habe jetzt ein bisschen rumprobiert und folgendes festgestellt:

- mit einer kleineren Tabelle funktioniert die Datenausgabe sowohl im DataGrid als auch in der MsgBox

- bei Zugriff auf die große Tabelle startet das Programm und nach ca. 10 Minuten erscheinen dann auch die Daten im DataGrid..

Folgender Code:

Code:
Private Sub cmd1_Click()
Dim rs As adodb.Recordset
Set rs = New adodb.Recordset
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Datenbank\Autovision.mdb;Mode=ReadWrite;Persist Security Info=False"

With rs
    
    .ActiveConnection = strCon
    .LockType = adLockOptimistic
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .Open "Select * from tab_coachingabende"
    
End With
'MsgBox ("" & rs.GetString)
Set DataGrid1.DataSource = rs

End Sub

Wie bekomme ich denn die große Tabelle userfreundlich bearbeitet?
 
Zuletzt bearbeitet:
Servus!

Etwas kompliziert aber machbar ....

benutze das Flexgrid Steuerelement und zeige immer nur einen "Teil" der Daten an...

an die einzelnen Felder des RecordSets kommst du mit
Code:
Dim fld as Field

rs.movefirst 

while not rs.eof

for each fld in rs.fields
   msgbox fld.name & ": " & fld.value 
next fld

rs.movenext 
wend
-----------------------

Flexgrid: In den Eigenschaften des Flexgrids kannst du angeben wieviele Spalten und Zeilen du darstellen willst ... Spalten(Columns) müssen mit der Anzahl der DB Spalten des RecordSets zusammenpassen die Zeilen stellst du ein ... je nachdem welche du anzeigen willst ...

Text kannst du ins Flexgrid bringen mit :
Code:
Flexgrid1.TextMatrix(Zeile,Spalte) = Wert

Bsp.:

Zeile 4, Spalte 7 ---> "hallo"
Flexgrid1.TextMatrix(4,7) = "Hallo"
...wird aber sehr mühsam ...

Gruss Tom
 
Hallo,

also das mit dem FlexGrid brauchte ich nicht zu machen, weil ich ja im Prinzip nur einzelne Felder aus der großen Tabelle anzeigen lassen will und nie den gesamten Inhalt. Dann stimmt das auch mit der Performance...:) Is mir natürlich erst jetzt eingefallen..:-(

Jetzt habe ich also die Daten in einem DataGrid drin; wie kann ich den Inhalt einer markierten Zeile im DataGrid in einem neuen Formular in ein Labelfeld oder ein anderes DataGrid schreiben?

Mein Code bis jetzt:

Code:
Private Sub cmd1_Click()
Dim rs As adodb.Recordset
Set rs = New adodb.Recordset
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Datenbank\Autovision.mdb;Mode=ReadWrite;Persist Security Info=False"

With rs
    
    .ActiveConnection = strCon
    .LockType = adLockOptimistic
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .Open "SELECT tab_Name.[Namen-Nr], tab_Name.Name, tab_Name.Vorname, tab_Gründer.[geplante Idee] FROM tab_Gründer INNER JOIN tab_Name ON tab_Gründer.[Gründer-Nr] = tab_Name.[Gründer-Nr]WHERE (((tab_Gründer.[geplante Idee]) Is Not Null));"

End With
Set DataGrid1.DataSource = rs
End Sub

Private Sub Command1_Click()
End
End Sub

Private Sub DataGrid1_DblClick()
x = DataGrid1....???
frmMain.Hide
frmName.Show
End Sub

x habe ich als globale Variable in einem Modul deklariert.

Wer kann mir nen Tipp geben, wie ich weiterkomme..?

Danke
-dave
 
Zurück