Avatar billede sbhansen Nybegynder
29. september 2000 - 11:20 Der er 1 kommentar og
1 løsning

Connection til flere DB i Access2000 ADODB... hvordan

Er der en, der har VBA liggende, der viser mig HVORDAN jeg connecter til 3 forskellige databaser, sådan at jeg kan selecte og update på kryds og tværs. Jeg har hidtil blot sammenkædet tabellerne over i fælles db, CurrentDB, men hvordan arbejder jeg med forskellige DB - i Samme workspace, eller?

(Det her vil jeg:)
1. indlæse csv-fil
- For hver linje i csv:
2. sammenligne med 2 eksisterende db\'s recordsets
3. oprette ukendte entiteter i én eller begge db, hvis entiteten er ny i enten den ene eller begge DB.
4. update\' info mellem de 2 db, således at de kender nøglen for tilsvarende entitet i den anden tabel.
5. meget mere
6. osv

Jeg kan nemt udføre det, hvis der er kæder, men den holder jo ikke i virkeligheden ;-)

På forhånd: Muchos Gracias Senõr  - for alt hjælp...
Avatar billede powell Nybegynder
29. september 2000 - 12:08 #1
Jeg har et script her, håber du kan bruge det:
Option Explicit
Option Compare database

Dim db as Database
Dim rs as Recordset
Dim td As TableDef
Dim fl As Field

\'Åbne databaserne
\'Her er der flere muligheder...
DATABASE1.DatabaseName = App.Path & \"\\NAVN_PÅ_FIL\"
DATABASE2.DatabaseName = App.Path & \"\\NAVN_PÅ_FIL2\"
\'Eller sådan her
Set db = Current DB() \'Kan bruges hvis en database findes på stedet.
\'Eller sådan her
Set dbWorkspace = DBEngine.Workspaces(0)


\'Når alle databaserne er åbne, så vil du måske sammenligne to celler i en record i hele databasen

Do until DATABASE1.eof or database2.eof
if DATABASE1!NAVN-PÅ-CELLE = DATABASE2!Navn_På-Celle then
  msgbox \"De er ens!\"
end if
DATABASE1.Movenext
DATAbase2.Movenext

loop
Avatar billede lkp Nybegynder
29. september 2000 - 12:17 #2
Hej sbhansen

Hvis du fra Access 2000 ønsker at arbejde med flere connections, opretter du flere connections.

Jeg går ud fra, at du har en reference til ADO (sat som standard).

Nedenstående kode er lidt triviel, men viser hvordan du opretter 3 connections, der opretter fobindelse til hhv. C:\\DB1.mdb, C:\\DB2.mdb samt C:\\DB3.mdb, og opretter et dynamisk recordset baseret på tblMain i hver database.

Du må selv tilrette recordset typen, samt evt. options i connection strengen.

---Kode start---

Public Function TestCon()
   
    \'Deklarerer variable

    Dim cnnCon1 As ADODB.Connection
    Dim cnnCon2 As ADODB.Connection
    Dim cnnCon3 As ADODB.Connection
   
    Dim rstRecordset1 As ADODB.Recordset
    Dim rstRecordset2 As ADODB.Recordset
    Dim rstRecordset3 As ADODB.Recordset
   
    \'Opretter objekter
   
    Set cnnCon1 = New ADODB.Connection
    Set cnnCon2 = New ADODB.Connection
    Set cnnCon3 = New ADODB.Connection
   
    Set rstRecordset1 = New ADODB.Connection
    Set rstRecordset2 = New ADODB.Connection
    Set rstRecordset3 = New ADODB.Connection
   
    \'Angiver DB samt tabel
   
    cnnCon1.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\DB1.MDB\"
    cnnCon2.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\DB2.MDB\"
    cnnCon3.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\DB3.MDB\"
   
    rstRecordset1.Open \"tblMain\", cnnCon1, adOpenDynamic
    rstRecordset2.Open \"tblMain\", cnnCon2, adOpenDynamic
    rstRecordset3.Open \"tblMain\", cnnCon3, adOpenDynamic
   
    \'Her kan du arbejde med de 3 recordsets
   
   
   
    \'Lidt oprydning
   
    rstRecordset1.Close
    rstRecordset2.Close
    rstRecordset3.Close
       
    Set rstRecordset1 = Nothing
    Set rstRecordset2 = Nothing
    Set rstRecordset3 = Nothing
   
    cnnCon1.Close
    cnnCon2.Close
    cnnCon3.Close
       
    Set cnnCon1 = Nothing
    Set cnnCon2 = Nothing
    Set cnnCon3 = Nothing
   
End Function

---Kode slut---

Jeg håber, at det var svar på dit spørgsmål, ellers skriv igen.

Med venlig hilsen

LKP

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