Avatar billede jobless Nybegynder
16. marts 2003 - 17:38 Der er 43 kommentarer og
2 løsninger

DoCmd.TransferDatabase... import fra sikret db ??

Hej.

I min ene database importerer jeg nogle tabeller fra en anden db(ms access2000). Dette fungerer som det skal, 100% ok..... men.....
Nu har jeg fundet på at køre med 'sikkerhed på brugerniveau' i hoveddatabasen, altså den db jeg importerer fra.
Jeg har forsøgt mig med:

DoCmd.TransferDatabase acImport, "ODBC", "MS Access;DATABASE=c:\db\hoveddb.mdb;UID=mig;PWD=selv;", acTable, "tblKunder", "tblKunder"

men får beskeden at jeg ikke har rettighed til dette.
Efter min formening skal jeg også have sløjfet arbejdsgruppe-filen ind over, men hvordan??

MVH

JoBless
Avatar billede terry Ekspert
16. marts 2003 - 17:52 #1
I have never tried this but I think you should NOT be using and ODBC database

If you use this syntax do you not get prompted for the pwd etc?

DoCmd.TransferDatabase acImport, "Microsoft Access", _
    "C:\My Documents\NWSales.mdb", acReport, "NW Sales for April", _
    "Corporate Sales for April"
Avatar billede terry Ekspert
16. marts 2003 - 17:54 #2
Try setting the workgroup file as the default. This will mean that when you open the database you are importing to then you will need to enter user + password. Then see if you can use the "Access" syntax (NOT ODBC)
Avatar billede jobless Nybegynder
16. marts 2003 - 18:01 #3
Hej Terry.

Jeg er ikke altid sikker på at kunne sætte workgroup-filen som default, idet hoveddb ligger på et netværk, og at min 'client'-db måske kommer til at køre som en access runtime, uden at access er installeret.
Derfor vil jeg gerne støve en syntaks op, hvori jeg har brugernavn og password.
Avatar billede terry Ekspert
16. marts 2003 - 18:05 #4
HOW do you normally open the "hoveddb" if it is on a network drive if it uses a workgroup file?
Avatar billede terry Ekspert
16. marts 2003 - 18:08 #5
I dont quite understand WHY the "hoveddb" has to use a workgroup file but the client dB's need to import from it. cant you just put a database password on the "hoveddb"?
Avatar billede jobless Nybegynder
16. marts 2003 - 18:20 #6
Min hoveddb anvendes med web-brugerflade, og min 'client' er en access baseret mini-udgave af hoveddb. Når man så har min client på en bærbar pc, som er offline, opdaterer nogle records, og når man kommer hjem på netværket igen, opdaterer man hoveddb.
Avatar billede terry Ekspert
16. marts 2003 - 18:30 #7
so WHY are you using a workgroup file? Are yo saying that you OVERWRITE the tables in the client dB with the master?
Avatar billede jobless Nybegynder
16. marts 2003 - 18:33 #8
ja, det kan man godt sige (dvs. ja, nogle gange), men jeg returnerer også en del poster fra andre tabeller.
Avatar billede terry Ekspert
16. marts 2003 - 18:38 #9
OK, so you dont JUST use TransferDatabase ?
why dont you just LINK the tables when you link for the first time you will be asked to enter the database password (if you use a dB passwords and NOT WRKGRP) an dthen Access remembers it next time you open the linked tables
Avatar billede jobless Nybegynder
16. marts 2003 - 18:43 #10
det er lidt kompliceret. Jeg 'låser' nogle poster i hoveddb (min egen form for postlåsning), og henter så disse poster ud på clienten. Herefter ændrer/tilføjer/sletter jeg nogle poster, og når jeg skal returnere det hele til hoveddb, editerer jeg de respektive poster. Mit behov for at kopiere/importere tabeller er når jeg skal hente date over til clienten (altså fra starten). Her er der brug for en hel del ekstra tabeller, som aldrig ændres eksternt (f.eks kundetype, aftaletype m.m.).
Hvis jeg linker er jeg bange for at der går 'ged' i det hele, da der kan være en del client-brugere, og tabellerne skal også være tilgængelige på clienten når denne er offline.
Avatar billede terry Ekspert
16. marts 2003 - 18:47 #11
I have to ask again, so WHY are you using a workgroup file?
This is what is giving you problems and if you use a dB password instead of a WRKGRP file it "may" help!
Avatar billede jobless Nybegynder
16. marts 2003 - 19:47 #12
Jeg bruger en workgroup file fordi der er nogle få brugere som skal have rettighed til at åbne databasen i access, og læse i en bestemt tabel, og ellers skal der være lukket af for andre.
Avatar billede terry Ekspert
16. marts 2003 - 19:50 #13
so you could in fact use a dB password
Avatar billede jobless Nybegynder
16. marts 2003 - 19:54 #14
Så ville de brugere som kender dette password også have skrive-rettigheder, og kunne se/ændre alle tabeller, ikke ?
Avatar billede terry Ekspert
16. marts 2003 - 20:01 #15
yes, but they also would if they knew any of the passwords
Avatar billede jobless Nybegynder
16. marts 2003 - 20:05 #16
Når jeg kører sikkerhed på brugerniveau laver jeg 2 konti. Den ene er medlem af admin, og den bruges af web-brugerfladen. Den anden minimerer jeg rettighederne for, og giver til de få brugere som skal kunne læse direkte i access, uden at de kan ændre noget.
Avatar billede terry Ekspert
16. marts 2003 - 20:15 #17
OK, now I understand.

Jobless we are into areas I havent played around with so much so I am just guessing.
Normally you wont be able to pass the user name and password to the master dB because you have to tell Access which workgroup file you are using and this can only be done by either having the workgroup file as the deafult OR starting Access with a shortcut which includes the workgroup file and the user+password. Its also possible in VB to set which workgroup file is to be used BEFORE opening Access, but this can not be done in Access BECAUSE Access is already running.
Please try setting the workgroup file as the defauly JUST to see if it works. Then I will explain how to use the workgroup file for a specific Access dB.
Avatar billede jobless Nybegynder
16. marts 2003 - 20:27 #18
ok, ny har jeg sat min workgroup file op som default.......
Nu spørger access om user/pass, når jeg åbner .mdb filen direkte (som den skal)...
What to do, next?
Avatar billede terry Ekspert
16. marts 2003 - 20:40 #19
Lets just make sure what we have done!
You have set your workgroup file as the default, then you open the client PC and run the code which imports from the server dB, and it works, is that correct?
Avatar billede jobless Nybegynder
16. marts 2003 - 20:47 #20
ikke helt....
Jeg har sat workgroup filen som default. Når jeg kører min client kode, importerer den som om der ikke var sikkerhed på hoveddb, idet jeg ikke har ændret koden (der er ikke angivet user/pass, nogen steder i min kode):

DoCmd.TransferDatabase acImport, "Microsoft Access", "c:\db\hoveddb.mdb", acTable, "tblKunder", "tblKunder"

Jeg får fejlen at jeg ikke har tilladelser
Avatar billede terry Ekspert
16. marts 2003 - 20:59 #21
OK then I dont think you can :o(
I was hopeing that by starting the first dB with the workgroup file that Access would use the user/password when trying to import from the server dB. Now we know that it doesnt :o(

Your problem is that it is NOT the Access database which authorises you to use the dB but Access. In other words Access gets started with the user+pwd and then Access opens the dB using this information. When you double click on a dB or include it in a TransferDatabase string Access starts BEFORE it gets this information and then it is too late :o(

So just adding the user and pwd to the TransferDatabase string isnt going to work, or at least I dont think so.

So I think you are going to have to look at other ways to do this. One possibility is to use NT security on the folder where the dB is and let only some users read/write and others just read.
Avatar billede jobless Nybegynder
16. marts 2003 - 21:05 #22
Er der istedet andre måder (evt. sql) at overføre en komplet tabel på, da jeg sagtens kan få forbindelse til hoveddb genne en jet4 driver
Avatar billede terry Ekspert
16. marts 2003 - 21:26 #23
well if you can make a connection then make a recordset in Access and then loop through all records and then you can INSERT INTO ..... into your table(s)
Avatar billede jobless Nybegynder
17. marts 2003 - 16:38 #24
Ja, det har jeg tængt på, men det er vigtigt at når jeg skal returnere posterne, kan jeg bruge de rigtige(originale) nøgler (autoinc), for at være sikker på at jeg opdaterer de rigtige poster.
Avatar billede terry Ekspert
17. marts 2003 - 17:31 #25
jobless>I dont have any idea as to how your database is design but IF you are UPDATING a table in the master with data from the lient PC then it sup to ypu to make sure that the correct records are updated.
Avatar billede jobless Nybegynder
17. marts 2003 - 17:44 #26
Ja, selvf.
Jeg opdaterer hoved-record med den client-record som har samme autoinc (jeg sætter en boolean til true i clienten, hvis den pågældende record skal opdateres).
Avatar billede terry Ekspert
17. marts 2003 - 17:51 #27
sounds OK :o)
Avatar billede terry Ekspert
18. marts 2003 - 14:18 #28
jobless hows it going here?
Avatar billede jobless Nybegynder
18. marts 2003 - 17:29 #29
Jeg er ved at overveje om jeg kan sætte en DSN forbindelse op, og lave docmd.transferdatabase igennem den, da det vil være en masiv omskrivning af min kode, hvis jeg først skal til at oprette tabellerne dynamisk, og derefter importere data via sql.
Burde jeg ikke kunne lave dette nummer med en DSN-forbindelse?
Avatar billede terry Ekspert
18. marts 2003 - 18:06 #30
No I dont think so, but there is only one way to be 100% sure and that is try it!
Avatar billede jobless Nybegynder
27. marts 2003 - 15:57 #31
Nu er jeg kommet om ved et nyt alternativ (som jeg heller ikke kan få til at virke):
       
Dim DBE As PrivDBEngine
    Dim W As dao.Workspace
    Dim Db As dao.Database
    Dim objSecuredDB as Access.Application
   
    Set DBE = New PrivDBEngine
           
    DBE.SystemDB = "C:\db\secured.mdw"
    DBE.DefaultPassword = "password"
    DBE.DefaultUser = "username"
           
    Set W = DBE.CreateWorkspace("", "username", "password", dbUseJet)
    Set Db = W.OpenDatabase("C:\db\db.mdb")
    Set objSecuredDB = GetObject(W)

    objSecuredDB.DoCmd.TransferDatabase acExport, "microsoft access", CurrentDb.Name, acTable, "MinTabel", "MinTabel"

Set DBE = Nothing
Set W = Nothing
Set Db = Nothing


Det er lidt af en blanding mellem flere forskellige sources.
Min fejl er, at jeg ikke kan komme til at køre en docmd.transferdatabase på mit object 'db'.

Kan dette fikses, da min ide er at få den sikrede database til at eksportere til den aktuelle database??

MVH

JoBless
Avatar billede terry Ekspert
27. marts 2003 - 18:36 #32
jobless it looks great, but there is one problem and that is Access has already opened the default mdw so it is too late try and open another.
Avatar billede jobless Nybegynder
27. marts 2003 - 19:14 #33
Jeg har fint fat i (og åbnet) den sikrede db, da jeg f.eks kan få antallet af tabeller med linien 'debug.print db.tabledefs.count'.

Derfor må db'en være åben, og funktionel, men jeg kan ikke lige finde kommandoen til at køre docmd.transferdatabase
Avatar billede terry Ekspert
27. marts 2003 - 19:24 #34
jobless>Are you doing this in Access or VB because IF you are in Access then I am 99% sure that you can NOT do what your saying. If you are in VB then you can.
Avatar billede terry Ekspert
27. marts 2003 - 19:30 #35
whats GetObject(W)?
Avatar billede jobless Nybegynder
27. marts 2003 - 19:51 #36
Jeg kører det inde fra vba i access

Jeg har delvist haft success med:

Dim strDB As String
Dim strCmd As String
Dim objSecuredDB As Access.Application
  strDB = "C:\db\db.mdb"
  strCmd = SysCmd(acSysCmdAccessDir) & "\MSAccess.exe " _
      & strDB & " /wrkgrp " & "c:\db\secured.mdw" _
      & " /user username /pwd password"
  Call Shell(strCmd, vbHide)
'Stop
  DoEvents: DoEvents: DoEvents
  Set objSecuredDB = GetObject(strDB)
 
objSecuredDB.DoCmd.TransferDatabase acExport, "microsoft access", CurrentDb.Name, acTable, "minTabel", "minTabel"

DoEvents: DoEvents: DoEvents
 
objSecuredDB.CloseCurrentDatabase
objSecuredDB.Quit


Herved får jeg rigtigt importeret min tabel (faktisk eksporteret fra den sikrede db), men min kode når at køre videre inden handlingen er gennemført, og derved får jeg en fejl, idet jeg forsøger at bruge en importeret tabel, inden den er importeret.

Kan jeg med denne kode stoppe udførelsen, indtil jeg har fået min tabel rigtigt over?
Avatar billede terry Ekspert
27. marts 2003 - 19:55 #37
according to the bible Jet Database Engine Programmers Guide Second Edition then you cant!

Jobless we are into areas which I havent played around with so much so it will mean that I would have to make a setup to simulate what your doing and I must admit it is taking a LONG TIME an din theend it may not be possible.
Suggestion make a VB program and try it.
Avatar billede jobless Nybegynder
27. marts 2003 - 20:11 #38
Ok, det vil være et godt alternativ, hvis det kan lade sig gøre fra VB6.

Jeg importerer en del tabeller via den kode som jeg forsøger at lave, så jeg vil gerne have nogle tips til hvordan jeg laver noget vb som jeg kan kalde med det tabel-navn jeg skal have importeret.
Avatar billede terry Ekspert
27. marts 2003 - 20:38 #39
jobless, dont get me wrong but we've been at this for 11 days :o(
Avatar billede jobless Nybegynder
09. juni 2003 - 10:43 #40
Løsningen pt. er at jeg kører ovenstående kode, som ihvertfald virker med alm. mdb-fil i access. Jeg har endnu ikke testet det med en runtime version
Avatar billede stigdk Nybegynder
12. juli 2005 - 21:15 #41
jobless hvad er din HP's ADR?
Avatar billede jobless Nybegynder
13. juli 2005 - 08:42 #42
website?
Avatar billede terry Ekspert
13. juli 2005 - 08:50 #43
?
Avatar billede jobless Nybegynder
13. juli 2005 - 08:55 #44
terry: spørgsmål til hvad stigdk mener med 'HP's ADR'
Avatar billede terry Ekspert
13. juli 2005 - 12:00 #45
:o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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