Hallo Dieter,
oder ich könnte doch einen zweiten temporären RecordSet mit anbinden ?
oder gibts Probleme wenn ich das mache bzw. zeitlich größere unterschiede?
Public Sub SetDBcon(dynID As Integer, DB_FileName As String, DB_SQLsyntax As _
String)
On Error Resume Next
' Con
With dynDB_Con(dynID)
.Close
.Provider = "Microsoft.Jet.OLEDB.4.0" ' Access2000
.CursorLocation = adUseClient
.Mode = adModeReadWrite ' adModeShareDenyNone
.ConnectionString = DB_FileName
.Open
End With
' RecordSet (SQL)
With dynDB_RS(dynID)
' aktive Verbindung zuweisen
Set .ActiveConnection = dynDB_Con(dynID)
' SQL Syntax an Recordset übergeben
.Source = DB_SQLsyntax
.CursorLocation = adUseClient
' Tabelle öffnen
.Open DB_SQLsyntax, dynDB_Con(dynID), adOpenStatic, adLockOptimistic
If Err.Number = &H80040E37 Then MsgBox "TabellenName nicht gefunden", _
vbCritical, "ERROR"
End With
' Hier meine Abfrage wieviel Daten Max in der DB sind!
Wieso zeigt VB einen Datensatz mehr an? als in wirklich das Access hat? (zählt VB einen mehr für das AddNew?)
Set modSevDataGrid.dynDB_MaxDatenRS = New ADODB.Recordset
' MaxDaten RecordSet (SQL)
With dynDB_MaxDatenRS
' aktive Verbindung zuweisen
Set .ActiveConnection = dynDB_Con(dynID)
' SQL Syntax an Recordset übergeben
.Source = DB_SQLsyntax
.CursorLocation = adUseClient
' Tabelle öffnen
.Open "SELECT " & dynDB_Form(dynID).dynDB_Tabel & ".* FROM " & _
dynDB_Form(dynID).dynDB_Tabel & ";", dynDB_Con(dynID), _
adOpenStatic, adLockOptimistic
If Err.Number > 0 Then MsgBox Err.Description, , Err.Number
dynDB_Form(dynID).stbStatusLeiste.Panels("EOF").Text = .RecordCount _
- 1
.Close
End With
Set modSevDataGrid.dynDB_MaxDatenRS = Nothing Komischerweise bekomm ich eine Fehlermeldung (hin und wieder) mit 3704: Der Vorgang ist für ein geschlossendes Objekt nicht zugelassen.
Leider find ich den Grund nicht
' Grid
With dynDB_Form(dynID).Grid1
' autom. Neuzeichnen des DataGrids unterbinden
.LockUpdate True
' Recordset Modus dem sevDataGrid zuweisen
.DataMode = Mode_Recordset
' Grid löschen (nötig damit kein anzeige BezeichnugsFeld fehler
' entsteht)
.Clear True ' #ERR-vom-beheben: sevDataGrid
' RecordSet anbinden
Set .Recordset = dynDB_RS(dynID)
' div. Grid einstellungen
.AllowColumnClick = True
.AllowColumnSizing = True
.AutoSort = True
.AllowEdit = True
.AutoUpdate = True
' zuletzt gespeicherte (Windows-Registry) Spaltenbreiten
' wiederherstellen
.ReadColumnWidth "ROSI-DB", "Grid" & dynID, "ColWidths"
' AutoSort nur refreshen
modAutoSort.MultiAutoSort dynID, 0, True
' Neuzeichnen des DataGrids wieder aktivieren
.LockUpdate False
' Grid Inhalt anzeigen
.Refresh ' #ERR-vom-beheben: sevDataGrid
End With
End Sub Gruß Tim
*greetz*
Tim
.
http://www.DotNetWorld.de |