Zusätzliche Tabellen können nicht geöffnet werden

18/06/2008 - 10:14 von Jan Eisner | Report spam
Hallo NG,

ich möchte euch heute wieder einmal mit einer dummen Frage belàstigen.
Unter AC97 kommt die Meldung: "Zusàtzliche Tabellen können nicht geöffnet
werden"
Ich öffne die Datenbank(Connection) in VB mit ADO mit:
CN.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; ..."
CM.CurserLocation = adUseServer


1. Recordsets werden nach Benutzung geschlossen und Nothing gesetzt.
2. Es existiert nur ein Connectionobjekt je Datenbank innerhalb der gesamten
Programmlaufzeit(insgesamt 8)
3. Es existieren keine permanenten Tabellenverknüpfungen zwischen den
Datenbanken
4. Die Daten liegen lokal.
5. Die Datenbankgröße bzw. Kompexitàt der Abfragen scheint nicht schuldig zu
sein, da Kunden mit doppelt so großen Datenbanken (ca. 300MB) das Problem
nicht haben.

Hat jeamand eine Idee woran es noch liegen könnte?
Bringt ein Umstieg nach AC2000+ ind diesem Falle etwas (oder generell)?

Ich sag schon mal DANKE für alle konstruktiven Vorschlàge


MfG

Jan Eisner
Sosoft@web.de
 

Lesen sie die antworten

#1 Peter Götz
18/06/2008 - 13:29 | Warnen spam
Hallo Jan,

Unter AC97 kommt die Meldung: "Zusàtzliche Tabellen
können nicht geöffnet werden"



Bei welcher Codezeile genau bekommst Du diese
Fehlermeldung?

Ich öffne die Datenbank(Connection) in VB mit ADO mit:
CN.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; ..."
CM.CurserLocation = adUseServer



Warum möchtest Du mit serverseitigem Cursor arbeiten?
Gibt es dafür einen zwingenden Grund?

1. Recordsets werden nach Benutzung geschlossen
und Nothing gesetzt.



Wie (Code) öffnest Du diese Recordsets?

2. Es existiert nur ein Connectionobjekt je
Datenbank innerhalb der gesamten
Programmlaufzeit(insgesamt 8)
3. Es existieren keine permanenten Tabellenverknüpfungen
zwischen den Datenbanken
4. Die Daten liegen lokal.
5. Die Datenbankgröße bzw. Kompexitàt der Abfragen
scheint nicht schuldig zu sein, da Kunden mit doppelt
so großen Datenbanken (ca. 300MB) das Problem
nicht haben.



Die DB-Grösse 300 MB sagt nichts darüber, wie
gross die zu ladende Datenmenge (Recordsets) ist.
Generell sind 300 MB für eine *.mdb nichts Besonderes.


Hat jeamand eine Idee woran es noch liegen könnte?
Bringt ein Umstieg nach AC2000+ ind diesem Falle
etwas (oder generell)?



Ohne zu wissen wie Dein konkreter Code
Öffnen/Schliessen Connection, Öffnen/Schliessen
Recordsets) aussieht kann man dazu kaum was
sagen.


Hier mal ein Beispiel, welches 8 Connections zu
acht verschiedenen *.mdb öffnet und aus diesen
jeweils ein Recordset làdt.

Option Explicit
Private mConnections(7) As ADODB.Connection
Private mRecordsets(7) As ADODB.Recordset

Private Sub Form_Load()
Dim i As Integer
Dim DBName As String
Dim Cnn As ADODB.Connection
Dim RS As ADODB.Recordset

For i = 1 To 8
DBName = "D:\Verzeichnis\DB" & CStr(i) & ".mdb"
Set Cnn = New ADODB.Connection
With Cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = DBName
.Mode = adModeShareDenyNone
.CursorLocation = adUseClient
.Open
End With
Set mConnections(i - 1) = Cnn

Set RS = New ADODB.Recordset
With RS
Set .ActiveConnection = Cnn
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.Source = "Select * From Tabelle"
.Open
End With
Set mRecordsets(i - 1) = RS
Next i
End Sub

Private Sub Form_QueryUnload _
(Cancel As Integer, UnloadMode As Integer)

Dim i As Integer

For i = 0 To UBound(mConnections)
Select Case True
Case mConnections(i) Is Nothing
Case (mConnections(i).State And adStateOpen) _
= adStateOpen

mConnections(i).Close
End Select

Select Case True
Case mRecordsets(i) Is Nothing
Case (mRecordsets(i).State And adStateOpen) _
= adStateOpen

mRecordsets(i).Close
End Select
Next i
End Sub


Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen