Avatar billede ulrina Nybegynder
07. maj 2004 - 01:04 Der er 7 kommentarer og
1 løsning

Delt adgang på ms access

Hejsa!

Hvordan gør jeg sådan at jeg kan få adgang til en ms access database fra mere end en maskine af gangen altså delt adgang?

På forhånd tak :)
Avatar billede tubber Juniormester
07. maj 2004 - 01:41 #1
SQL skulle løse det problem.
Du skal bruge referencen MicroSoft DAO 3.51 Object Library
'Preparation
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset

'Connection to DB and read from it
Set ws = Workspaces(0)
Set db = ws.OpenDatabase("\\computername\dbname.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tablename")

'Using records
If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        List1.AddItem(rs!fieldname)
    Loop
End If

'Writing to db
Set ws = Workspaces(0)
Set db = ws.OpenDatabase("\\computername\dbname.mdb")
db.Execute "INSERT INTO tablename (field1, field2) VALUES ('" & Text1.Text & "','" & Text2.Text & "');"

'Deleting record
Set ws = Workspaces(0)
Set db = ws.OpenDatabase("\\computername\dbname.mdb")
db.Execute "DELETE FROM tablename WHERE (Field1 = '" & Text1.Text & "')"

Håber det kan hjælpe dig lidt på vej :)

/Tubber
07. maj 2004 - 06:19 #2
Access er som standard en flerbruger-database. Der skal ikke gøres noget specifikt for at få flere brugere på
Avatar billede ulrina Nybegynder
07. maj 2004 - 12:18 #3
Hmm hvis jeg åbner mit program på mere end en maskine med fælles database får jeg at vide at databasen allerede bruges af en anden bruger og så lukker programmet :(
07. maj 2004 - 12:23 #4
Er det bare når du åbner databasen med Access? Eller er det når du opretter en forbindelse hva VB/VBA? Kan du forklare lidt nærmere? Evt vise din VB-kode (hvis det er sådan du tilgår databasen)?
Avatar billede tubber Juniormester
07. maj 2004 - 13:12 #5
hov du skal self lukke connection hver gang du er færdig :)

'Connection to DB and read from it
Set ws = Workspaces(0)
Set db = ws.OpenDatabase("\\computername\dbname.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tablename")

'Using records
If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        List1.AddItem(rs!fieldname)
    Loop
End If
db.Close

'Writing to db
Set ws = Workspaces(0)
Set db = ws.OpenDatabase("\\computername\dbname.mdb")
db.Execute "INSERT INTO tablename (field1, field2) VALUES ('" & Text1.Text & "','" & Text2.Text & "');"
db.Close

'Deleting record
Set ws = Workspaces(0)
Set db = ws.OpenDatabase("\\computername\dbname.mdb")
db.Execute "DELETE FROM tablename WHERE (Field1 = '" & Text1.Text & "')"
db.Close
Avatar billede tubber Juniormester
07. maj 2004 - 13:13 #6
Hvis du ikke lige kan hitte ud af det må du gerne maile mig projektet på tubber@krog-frandsen.dk

Så vil jeg gerne prøve at sætte det ind med SQL i stedet for data controllen hvis det er den du bruger :)
Avatar billede ulrina Nybegynder
07. maj 2004 - 17:49 #7
tubber -> Jeg tror nok dit eksempel virker :) ser sådan ud :) smider du et svar?

Jeg ved ikke om det er fordi jeg bruger "Microsoft ActiveX Data Objects v2.5" at jeg ikke kunne få det til at virke?
Avatar billede tubber Juniormester
07. maj 2004 - 18:09 #8
Fint du fik det til at virke :) glad for at kunne hjælpe :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester