ADO en bezet houden database

Status
Niet open voor verdere reacties.

jvsoest

Gebruiker
Lid geworden
2 okt 2000
Berichten
741
Hallo,

Ik heb een access XP database die ik met ADO via VB-app uitlees zodat gebruikers telefoonummers kunnen opzoeken. Ik wil dus dat gebruikers alleen kunnen opzoeken.

Vervelende is nu dat wanneer de VB-app opstart de database bezet gehouden wordt, hij meldt dit ook bij openen (database is alleen readonly). Er kunnen dus geen updates gedaan worden zolang er een gebruiker de VB-app open heeft staan.

Is er een mogelijheid dat de VB-app de database niet bezet houdt?
Volgende code heb ik gebruikt adhv een voorbeeld. Bedankt vast voor tips e.d.

Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDatabase & ";"

Set adoPrimaryRS = New ADODB.Recordset
adoPrimaryRS.Open "select NAAM,TELEF_NR,DNST_AFD,KAMER_NR from tblTeleGids Order by NAAM", db, , adLockReadOnly, adLockReadOnly
 
Access db bezet

Het read-only ligt aan het feit dat je dat zo opgeeft bij het openen van je recordset.
adLockReadOnly

Een voorbeeld:
Code:
str_Sql = "select * from tblMijnDatabaseTabel"
' Eventueel uit te breiden met 'where-clause' en eventuele sortering door 'order by'
adoPrimaryRS.Open str_Sql, cnMijnDbVerbinding, adOpenDynamic, adLockOptimistic
De codewoorden adOpenDynamic en adLockOptimistic zorgen ervoor dat je recordset dynamisch (aanpasbaar) en met een gedeelde locking (jij kan wijzigen, anderen lezen) geopend wordt.

Je moet wel rekening houden met de wijze waarop de database is aangemaakt.
Als je die aanmaakt met de database environment in VB kan er maar 1 gebruiker tegelijk de database aanspreken en wijzigen.
Als je de database met Access Professional hebt aangemaakt kunnen meerdere gebruikers tegelijk gegevens lezen en aanpassen.

Je kan eventueel overwegen om een andere database te gebruiken zoals bijvoorbeeld mySQL of SQLserver die je door middel van een ODBC driver kan aanspreken met gebruikmaken van ADO in je programma. Beiden zijn gratis en SQLserver is van Microsoft. Je dient dan wel een databaseserver programma op de serverPC te installeren. Databases van deze types zijn altijd multiuser. En ze zijn gewoonlijk ook sneller in werking.
In je programma hoef je dan enkel nog de '*' wildcard voor gebruik in je SQL commando's bij vb like '*xyz' te vervangen door een procentteken '%' dat de standaard wildcard is in SQL. Access vormt hierin een uitzondering. (Dank u zeer Micro$oft...)
Maar als begin is Access zeker niet slecht.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan