Avatar billede keldo Nybegynder
13. juli 2005 - 15:20 Der er 31 kommentarer og
2 løsninger

Åbne en anden access database ved hjælp af kommando knap?

Jeg vil gerne fra en formular kunne åbne og finde en bestemt post i en anden access database ved klik på en kommande knap.
Ex. har jeg et felt i formularen med kunde nr 220. Nu vil jeg gerne finde den post som har nr 220 i en anden database jeg har. Så når jeg klikke på komandokanppen åbner den anden database sig med den rigtige formuler og finder kunde nr 220.
Det kan sagtens gøres med "Åben fomuler" og herefter kriterier men kun i samme database. Tricket her er at det er en anden database.
Hvordan gøres det?
Avatar billede 2dbornot2db Nybegynder
13. juli 2005 - 15:40 #1
F.eks. ved at sammenkæde tabellerne fra den 'eksterne' database. Så kan de beregnes og manipuleres akkurat som dem du har liggende nu.
Avatar billede keldo Nybegynder
13. juli 2005 - 15:47 #2
jo, men det er en formular den skal vise og ikke en tabel?
Avatar billede 2dbornot2db Nybegynder
13. juli 2005 - 15:51 #3
Ja, men formularen har jo en tabel som kilde. I stedet for at bruge dem du har liggende i databasen bruger du så en af de sammenkædede
Avatar billede keldo Nybegynder
13. juli 2005 - 15:52 #4
jo men hvordan sammenkæder jeg en formular?? Jeg kan sagtens få den til at åbne min tabel, men det er den tilhørende formular jeg vil se, da den jo er meget mere læse venlig og også indeholder data fra andre tabeller.
Avatar billede 2dbornot2db Nybegynder
13. juli 2005 - 15:58 #5
Du sammenkæder ikke formularen. Du sammenkæder tabellen.
Du kan kode dig ud af, at ændre postkilden til formularen og derved nøjes med én formular, men du kan også blot importere (og ikke sammenkæde) formularen fra den eksterne database.
Dvs:
1. Sammenkæd tabellen
2. Importer formularen
3. Tjek at postkilden til den importerede formular er den sammenkædede tabel
Avatar billede terry Ekspert
14. juli 2005 - 11:14 #6
for 30 points>Use automation to open your Access database and earch for the record in the form
Avatar billede terry Ekspert
14. juli 2005 - 11:17 #7
This is a VERY simple example, you WILL need to alter/add to get it do do whatyou want. But once you have the dB open then its not much different to doing it in your own dB

Function OpenAccess()
Dim ObjA As Access.Application


    Set ObjA = CreateObject("Access.application")
   
    With ObjA
        .Visible = True
        .OpenCurrentDatabase "C:\Openme.mdb"
       
        .DoCmd.OpenForm "form1"

        'From here you will need to play around a bit, I  havent tried myslef

        .Forms!Form1.text1 = "Some Shit" '???

End With

Set ObjA = Nothing
End Function
Avatar billede keldo Nybegynder
14. juli 2005 - 11:18 #8
Jeg troede bare at ligesom jeg kunne bruge en kommando knap til at åbne en bestemt wordfil eller excelfil, at så kunne det også gøres med en anden access fil. Det bedste vil være at åbne den anden database og finde den bestemte post i formularen, således at man let kan redigere i felterne hvis det ønskes. Det kan jo sagtens gøres manuelt, men det ville da være oplagt en komandeknap.
Avatar billede keldo Nybegynder
14. juli 2005 - 11:26 #9
terry.... interessent..... hvor skal jeg skrive det henne?? I funktion "ved klik"?
Avatar billede terry Ekspert
14. juli 2005 - 11:31 #10
good place to put it :o)


You CAN also open another database, just like you can with a Word or Excel, but after that you would need to do it by hand, (just just like you would with a Word or Excel) but by usng automation you can do it all in code :o)
Avatar billede keldo Nybegynder
14. juli 2005 - 11:39 #11
Der kommer en fejl når prøver: Ambiguous name detectede:OpenAccess

Hvad er det?
Avatar billede 2dbornot2db Nybegynder
14. juli 2005 - 11:40 #12
Keldo ->
Hvorfor er det vigtigt, at åbne en ny udgave af Access? Hvorfor er det "...det bedste..." i din situation?
Avatar billede keldo Nybegynder
14. juli 2005 - 11:42 #13
2dbornot2db - primært fordi jeg skal kunne lave ændringer i den db jeg åbner. Og hvis det ikke er den orginale, hjælper det jo ikke meget at åbne den. Så skal jeg alligevel gøre det manuelt.
Avatar billede 2dbornot2db Nybegynder
14. juli 2005 - 11:43 #14
Det kan du da også sagtens med den metode jeg beskriver. Som jeg skrev i indledningen: "...Så kan de beregnes og manipuleres akkurat som dem du har liggende nu."
Avatar billede keldo Nybegynder
14. juli 2005 - 11:49 #15
2dbornot2db - du har nok ret, men det er vigtigt at jeg ikke blander de to db sammen, jeg vil ikke have at nogle af dataerne fra den anden db er tilgængelig i den første db. Hvis jeg ex. sender db til en anden bruger skal den bruger ikke kunne se de andre data. Summa sumarum, det kunne gøres ved at åbne den anden db. Ellers vil jeg hellere gøre det manuelt.
Avatar billede 2dbornot2db Nybegynder
14. juli 2005 - 11:51 #16
OK, det skrev du bare ikke i starten :-) Så er terry's forslag helt oplagt. Held og lykke med projektet.
Avatar billede terry Ekspert
14. juli 2005 - 11:58 #17
14/07-2005 11:39:35 > OpenAccess!

Try changing the funstion name to something else for example

MyOpenAccess
Avatar billede keldo Nybegynder
14. juli 2005 - 12:10 #18
What is wrong with this?

Private Sub Tekst32_Click()
Function menandyou()
Dim ObjA As Access.Application


    Set ObjA = CreateObject("Access.application")
   
    With ObjA
        .Visible = True
        .OpenCurrentDatabase "c:\pma\abonnementssystem.mdb"
       
        .DoCmd.OpenForm "kundedata"

        .Forms!Kundedata.Tids -Abnr = "100 250 100"

End With

Set ObjA = Nothing
End Function
End Function

I get "compile error: Expected End sub"
??
Avatar billede terry Ekspert
14. juli 2005 - 12:17 #19
Private Sub Tekst32_Click()
Function menandyou()
Dim ObjA As Access.Application


    Set ObjA = CreateObject("Access.application")
   
    With ObjA
        .Visible = True
        .OpenCurrentDatabase "c:\pma\abonnementssystem.mdb"
       
        .DoCmd.OpenForm "kundedata"

        .Forms!Kundedata.Tids -Abnr = "100 250 100"

End With

Set ObjA = Nothing

End sub
>>>End Function
>>>End Function
Avatar billede terry Ekspert
14. juli 2005 - 12:18 #20
this may also ogive an error

.Forms!Kundedata.Tids -Abnr = "100 250 100"
Avatar billede keldo Nybegynder
14. juli 2005 - 12:19 #21
Private Sub Tekst32_Click()
Function menandyou()
Dim ObjA As Access.Application


    Set ObjA = CreateObject("Access.application")
   
    With ObjA
        .Visible = True
        .OpenCurrentDatabase "c:\pma\abonnementsystem.mdb"
       
        .DoCmd.OpenForm "kundedata"

        .Forms!Kundedata.Tids -Abnr = "100 250 100"

End With

Set ObjA = Nothing

End Sub

Same problem....?
Avatar billede 2dbornot2db Nybegynder
14. juli 2005 - 12:22 #22
Private Sub Tekst32_Click()
'Function menandyou()
Dim ObjA As Access.Application


    Set ObjA = CreateObject("Access.application")
   
    With ObjA
        .Visible = True
        .OpenCurrentDatabase "c:\pma\abonnementsystem.mdb"
       
        .DoCmd.OpenForm "kundedata"

        .Forms!Kundedata.[Tids -Abnr] = "100 250 100"

End With

Set ObjA = Nothing

End Sub
Avatar billede keldo Nybegynder
14. juli 2005 - 12:30 #23
'Function menandyou()
.... Compile error: Sub or function not defined  ?
Avatar billede terry Ekspert
14. juli 2005 - 12:38 #24
you dont need a function if you put the code (which is in a fucntion) in a sub

Private Sub Tekst32_Click()
Dim ObjA As Access.Application


    Set ObjA = CreateObject("Access.application")
   
    With ObjA
        .Visible = True
        .OpenCurrentDatabase "c:\pma\abonnementsystem.mdb"
       
        .DoCmd.OpenForm "kundedata"

        .Forms!Kundedata.Tids -Abnr = "100 250 100"

End With

Set ObjA = Nothing

End Sub
Avatar billede keldo Nybegynder
14. juli 2005 - 12:53 #25
ok, nu virker det, det hjalp da jeg fjernede "funcktion..."

Men du har også ret terry, at
"this may also ogive an error

.Forms!Kundedata.Tids -Abnr = "100 250 100"  giver et problem. I virkerligheden skal "100 250 100" erstattes af det tal som står i min db hvor jeg trykker "klik"
Avatar billede terry Ekspert
14. juli 2005 - 14:18 #26
"this may also ogive an error"!!! does it  give an error?

if so, then ".Tids -Abnr" is very likely your problem. If this is a field name then chane it to

[.Tids -Abnr]


if you want to replace "100 250 100" with a value from your dB then




Forms!Kundedata.[Tids -Abnr] = me!NameOfFieldGoesHere
Avatar billede terry Ekspert
18. juli 2005 - 13:51 #27
status?
Avatar billede keldo Nybegynder
19. juli 2005 - 09:29 #28
Er på ferie nu, men skriver når jeg er tilbage. tak indtil videre
Avatar billede terry Ekspert
19. juli 2005 - 12:02 #29
OK, og god ferie
Avatar billede terry Ekspert
23. august 2005 - 19:44 #30
Hi keldo, hope you had a good holiday?
Avatar billede terry Ekspert
01. september 2005 - 20:17 #31
I which my holidays were as long :o)
Avatar billede keldo Nybegynder
03. september 2005 - 15:11 #32
hi Terry... sorry. It works now... more or less.
Avatar billede terry Ekspert
03. september 2005 - 15:37 #33
thanks keldo

..more or less!

do you need help with anything?
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