Access Datenbankzugriff mit mehreren Usern.

  • VB6

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Lingo.

    Access Datenbankzugriff mit mehreren Usern.

    Hallo Leute,

    ich entwickle mit VB 6 ein Programm was durch eine Suchabfrage Datensätze aus einer Access Datenbank (EDIT: Die Access Datenbank wird durch eine Verknüpfte CSV befüllt) in eine ListView in VB einträgt.
    Dies klappt soweit auch sehr gut wenn nur ein User eine Suchabfrage startet.
    Jedoch soll das Programm von ca. 50 Personen benutzt werden und schon sobald 2 Leute gleichzeitig eine Suchabfrage starten läuft das Programm auf einen Fehler (Screenshot mit Fehlermeldung ist angehängt).
    Die Access DB habe ich bereits auch schon in den Einstellungen so konfiguriert das er die Datenbank NICHT exklusiv öffnet.

    Hier ist meine Connection zur Datenbank:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Global Conn As New ADODB.Connection, RS As New ADODB.Recordset, Item As ListItemGlobal onTop As New clsOnTop, i As Integer, SQL As String, Cancel As Boolean
    3. Public Sub dbConnect()
    4. Set Conn = New ADODB.Connection Conn.ConnectionString = strConnConn.mode = adModeShareDenyNone Conn.Open End Sub
    5. Public Function strConn() As StringstrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & frmMain.databasepfad & ";Persist Security Info=False" End Function



    Der Fehler der beim Debuggen angezeigt wird liegt bei dem RecordSet da ich eine Funktion habe mit CountResults der die gefundenen Datensätze durch ein SQL Statement zählt:

    Visual Basic-Quellcode

    1. Public Function countResults(theSQL2 As String) As Long
    2. Call dbConnectRS.Open SQL, Conn, adOpenDynamicIf Not RS.EOF Then RS.MoveFirst Do While Not RS.EOFcountResults = countResults + 1frmLoading.lblSub.Caption = "Inhalte werden geladen " & countResults RS.MoveNext DoEventsLoop End If RS.Close Conn.Close Set Conn = Nothing End Function



    In der Zeile " RS.Open SQL, Conn, adOpenDynamic" entsteht der Fehler wenn ein User z.B. eine Suchabfrage startet und ein anderer User über einen anderen PC auch eine Suchabfrage zur DB schicken will entsteht in der Zeile der Fehler.

    Zugriff auf die Datenbank ist von allen PC's Problem los möglich und die User haben dort volle Rechte somit kann auch die .ldb Datei korrekt erstellt werden, nur leider finde ich den Fehler nun nicht bzw. finde keine Hilfe was für Anpassungen ich vornhemen muss

    Danke schon mal im Voraus :)
    Bilder
    • Unbenannt.JPG

      17,03 kB, 373×202, 271 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „creeD202“ ()

    Ahoi,

    also soweit ich weiß ist Access nur als Singleuser-Anwendung einsetzbar. Für Multiuser nutze lieber eine echte Datenbank.
    MSSQL, MSSQLite MySQL, PostgreSQL ...
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Do the read-users put locks on tables?

    Not in any meaningful sense. Jet/ACE does have read locks, but they are there only for the purpose of maintaining state for individual views, and for refreshing data for the user. They do not lock out write operations of any kind, though the overhead of tracking them theoretically slows things down. It's not enough to worry about.


    Also sollte ja laut dem Artikel die ReadOnly User keine Sperrungen setzen. Aber wieso bekomme ich dann so eine Fehlermeldung ?

    Ich habe es auch schon mit Conn.Mode = adReadOnly probiert jedoch ohne Erfolg ...