Avatar billede schoesler Nybegynder
27. oktober 2003 - 22:37 Der er 27 kommentarer og
2 løsninger

Er der en super ekspert som kan lave en kode som kan..

Har 2 databaser som indeholder same tabeller, er der en VBA kode som kan kontrollere om felterne i tabellerne også er ens og hvis ikke oprettes disse felter automatisk.??
Avatar billede sjap Praktikant
27. oktober 2003 - 22:41 #1
Du kan oprette en forespørgsel med uiden "Find dubletter".
Avatar billede sjap Praktikant
27. oktober 2003 - 22:41 #2
uiden = guiden  ;o)
Avatar billede henrik13 Nybegynder
27. oktober 2003 - 22:43 #3
Hej, oprettede thomas kode dem ikke ens i alle 18 bak-end.  :o)
Avatar billede jkrons Professor
27. oktober 2003 - 22:44 #4
superjap-> Jeg opfater spørgsmålet som om det er felterne, der skal være ens, ikke deres indhold.
Avatar billede sjap Praktikant
27. oktober 2003 - 22:46 #5
jkrons-> Jeg tror du har ret. :0)
Avatar billede schoesler Nybegynder
27. oktober 2003 - 22:47 #6
Det er korrekt det er felterne der skal være ens, ikke indholdet :-)
Henrik, nej det var tabellerne der blev sammenlignet og manglende kopieret
Avatar billede schoesler Nybegynder
27. oktober 2003 - 22:48 #7
nu er det ens tabeller i begge db'er, men nu skal felterne tjekkes at de er ens. Har siddet med det længe men har ikke fået lavet noget brugbart
Avatar billede larsjordan Nybegynder
28. oktober 2003 - 07:17 #8
Mit firma har udviklet program der kan nøjagtig dette. Den holder også styr på indexes, defaultværdier osv......
Jeg kan dog ikke give dig koden gratis...Er det privat eller forretningsmæssigt du skal bruge det?
Avatar billede schoesler Nybegynder
28. oktober 2003 - 07:42 #9
det er privat!
Avatar billede larsjordan Nybegynder
28. oktober 2003 - 07:51 #10
I så fald er du nok ikke interesseret i at betale for det.
Det bedste jeg kan gøre for dig er så at give dig et par retningslinjer...

Du skal lave et VB program der åbner de 2 databaser.
Du bør bruge DAO og anvende samlingerne tabledefs, querydefs, indexes på objektet database. Dette giver dig mulighed for at checke om tabeller, forspørgsler og indexes eksisterer.
For hver tabledef, skal du så bruge samlingen fields, til at checke om alle felter eksisterer..

Go fornøjelse
Avatar billede schoesler Nybegynder
28. oktober 2003 - 09:43 #11
jan@schoesler.com
Avatar billede overchord Nybegynder
28. oktober 2003 - 10:01 #12
Det burde kunne goeres ved at loebe igennem feltnavnene og chekke om de er forskellige:

dim db1 as database
dim db2 as database
dim tdf1 as tabeldef
dim fld1 as field
dim tdf2 as tabledefs
dim fld2 as field
dim i as integer
dim x as integer
dim SameTable as Boolean

set db1 = currentdb
setdb2 = opendatabase("c:\dindatabase.mdb")

with db1
  for each tdf in .tabledefs

      with db2
          for each tdf2 in .tabledefs
              sametable = true
              for i = 1 to tdf.fields.count
                      if tdf.field(i).Name = tdf2.field(i).Name then
                        'Tabellerne har pt samme struktur
                      else
                        sametable = false 'Tabellerne er forskellige
                      end if
                next i
                'Hvis sametable stadig er true er de to tabeller ens og du 
                  kan kalde en funktion her.
          next tdf2
      end with

  next tdf
end with

Denne funktion antager:
1) At felterne i tabellerne ligger i samme raekkefoelge
2) At navnene paa tabellerne ikke noedvendigvis er ens

Haaber det hjaelper
Avatar billede schoesler Nybegynder
28. oktober 2003 - 10:26 #13
'overchord' får fejl på: field(i)

If tdf.Field(i).Name = tdf2.Field(i).Name Then
28. oktober 2003 - 10:47 #14
Lars Jordan, hvor arbejder du?
Avatar billede terry Ekspert
28. oktober 2003 - 13:25 #15
larsjordan>I seem to recall that you once said we were here to help each other! How about helping out here then instead of just talking?
Avatar billede overchord Nybegynder
28. oktober 2003 - 14:18 #16
ok proev evt med fields(i) istedet....
Avatar billede schoesler Nybegynder
28. oktober 2003 - 14:56 #17
'overchord' har rettet lidt i koden, meeen den virker ikke rigtig!

Dim db1 As database
Dim db2 As database
Dim tdf1 As TableDefs
Dim fld1 As Field
Dim tdf2 As TableDefs
Dim fld2 As Field
Dim i As Integer
Dim x As Integer
Dim SameTable As Boolean

Set db1 = CurrentDb
Set db2 = opendatabase("c:\testDB.mdb")

With db1
  For Each tdf In .TableDefs

      With db2
          For Each tdf2 In .TableDefs
              SameTable = True
              For i = 1 To tdf.Field.Count
                      If tdf.Field(i).Name = tdf2.Field(i).Name Then
                        'Tabellerne har pt samme struktur
                      Else
                        SameTable = False 'Tabellerne er forskellige
                      End If
                Next i
                'Hvis sametable stadig er true er de to tabeller ens og du kan kalde en funktion her.
          Next tdf2
      End With

  Next tdf
End With
Avatar billede larsjordan Nybegynder
28. oktober 2003 - 17:53 #18
Terry>>I never said that
ThomasJeppesen>>LJ Software og C2 System ApS
schoesler >> Du kan få programmet som du bare skal kalde med 2 parametre. En til den eksisterende base, og en til master basen (med alle de rigtige felter osv). Men jeg kan desværre ikke udlevere koden til hele programmet....
Avatar billede schoesler Nybegynder
28. oktober 2003 - 17:58 #19
'larsjordan' Det vil jeg meget gerne have. jan@schoesler.com
Avatar billede terry Ekspert
28. oktober 2003 - 19:09 #20
larsjordan>Sorry about that comment of mine, I got you mixed up with someone else.
Avatar billede overchord Nybegynder
28. oktober 2003 - 22:40 #21
ok - schoesler hvis du stadog bruger den kode jeg har skrevet proev evt med:

If tdf.Fields(i).Name = tdf2.Fields(i).Name Then
Avatar billede schoesler Nybegynder
01. november 2003 - 13:36 #22
'overchord' og 'larsjordan' er lige kommet online i Tyrkiet vil kigge på jeres foreslag og vende tilbage
Avatar billede terry Ekspert
01. november 2003 - 13:56 #23
Hi Jan, whats the weather like down there? Its awfull here :o(
Have a good "vacation" :o)
Avatar billede schoesler Nybegynder
01. november 2003 - 15:38 #24
Hi terry. Vejret er nogenlunde, solskin og 16 grader, men det er ikke hvad man forbinder med Tyrkiet. Men det er ok.
Avatar billede schoesler Nybegynder
01. november 2003 - 15:44 #25
'overchord' gider du prøve koden af, kan ikke få den til at virke?

Private Sub Command0_Click()
Dim db1 As database
Dim db2 As database
Dim tdf1 As TableDefs
Dim fld1 As Field
Dim tdf2 As TableDefs
Dim fld2 As Field
Dim i As Integer
Dim x As Integer
Dim SameTable As Boolean

Set db1 = CurrentDb
Set db2 = opendatabase("c:\testDB.mdb")

With db1
  For Each tdf In .TableDefs

      With db2
          For Each tdf2 In .TableDefs
              SameTable = True
              For i = 1 To tdf.Field.Count
                      If tdf.Fields(i).Name = tdf2.Fields(i).Name Then
                        'Tabellerne har pt samme struktur
                      Else
                        SameTable = False 'Tabellerne er forskellige
                      End If
                Next i
                'Hvis sametable stadig er true er de to tabeller ens og du kan kalde en funktion her.
          Next tdf2
      End With

  Next tdf
End With
End Sub
Avatar billede schoesler Nybegynder
03. november 2003 - 22:03 #26
'overchord' har du givet op.!
Avatar billede larsjordan Nybegynder
04. november 2003 - 06:34 #27
Har du ikke set på det jeg har sendt til dig?
Avatar billede schoesler Nybegynder
08. november 2003 - 08:01 #28
hjæææælp ønskes til at få 'overchord' kode til at virke
Avatar billede terry Ekspert
13. november 2003 - 20:02 #29
whats the status on this question, does anyone have an answer for Jan or have we all given up?
Poot guy is getting desperate here :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