[vb + access] synchronizatie en nog iets?

Pagina: 1
Acties:

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Topicstarter
hallo allemaal

voor een app die ik Visual Basic (geen VBA) aan het bouwen ben gebruik ik een access db om de gegevens uit te trekken.

Stel nu dat ik op een bepaalde pc (pc1) deze app draai en op een andere pc (pc2) (zonder netwerkverbinding oid) deze app + de db meeneem en wijzigingen aanmaak. Nu wil ik graag de wijzigingen die in die database gemaakt (op pc2 bijv) zijn ook door willen voeren in de database van pc1.

Kan iemand mij tips/suggesties/ideeën geven over hoe dit het beste aan te pakken? Alle records afgaan en kijken of ze ook in de andere db voorkomen lijkt me een beetje irritant karweitje (vooral bij de ongeveer 20k records in mijn db..)

En ten tweede, weet iemand hoe ik "compact en repair database" van access kan aanroepen in code? Of is dat niet mogelijk? Heb nl. nix kunnen vinden hierover.

En dan was er nog iets :) Is het mogelijk om een bepaalde menu in een MDI Form naast het menu van een (gemaximaliseerde) child-form te krijgen? Ik heb het nu nl. zo dat zodra de child-forms verschijnen (altijd gemaximaliseerd) dat het menu van de MDI-Form verdwijnt.

Alvast bedankt :+

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op woensdag 10 oktober 2001 22:29 schreef stylee het volgende:
Stel nu dat ik op een bepaalde pc (pc1) deze app draai en op een andere pc (pc2) (zonder netwerkverbinding oid) deze app + de db meeneem en wijzigingen aanmaak. Nu wil ik graag de wijzigingen die in die database gemaakt (op pc2 bijv) zijn ook door willen voeren in de database van pc1.
Dat gaat niet zo simpel. Denk bijvoorbeeld maar eens na over Autonummer id's, die moet je dan ook aanpassen. En alle gerelateerde tabellen met die id's ook.
En ten tweede, weet iemand hoe ik "compact en repair database" van access kan aanroepen in code? Of is dat niet mogelijk? Heb nl. nix kunnen vinden hierover.
Dat kan niet. Je kunt wel een kopie van je file maken, DBEngine.CompactDatabase() aanroepen en dan je originele filename laten schrijven.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Access heeft volgens mij een ingebouwde mogelijkheid om 2 databases te synchroniseren, probleem wordt denk ik alleen die dingen op de zelfde pc krijgen.. Kan je er anders niet gewoon een lannetje tussen hangen? ne2000 kaartjes krijg je bij 'n pakje boter ondertussen cross cabletje er tussen klaar, hoeft niet zo veel te kosten opzich en bespaard jou denk ik redelijk wat tijd..

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Verdiep je anders maar eens in Replica's. Volgens mij kan je dit ook gewoon in visual basic gebruiken, deze zullen dan precies doen wat jij wilt.

Om een database te repareren moet je volgens mij RepairCompact gebruiken. Moet je dat anders maar ff opzoeken in de help.

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Topicstarter
Yarvieh: Kan je er anders niet gewoon een lannetje tussen hangen? ne2000 kaartjes krijg je bij 'n pakje boter ondertussen cross cabletje er tussen klaar, hoeft niet zo veel te kosten opzich en bespaard jou denk ik redelijk wat tijd..

Nee helaas.. de lan ligt er zelfs al maar de database zal weleens naar een totaal andere locatie o pzip mee genomen kunnen worden, daar zit het probleem juist :'(

edit: mischien wel leuk voor het archief.. code dat ik gebruik voor compacten. Aangezien ik in mijn projectje gebruik maak van ADO heb ik dit maar ff als aparte util geïmplementeerd maar dan met DAO. Natuurlijk moet er wat aan de paden gesleuteld worden als je dit wilt gebruiken maar dat had je al door hoop ik :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub Main()
    On Error GoTo errhandler
    
    If (MsgBox("Wilt u doorgaan?", vbYesNo + vbQuestion, "Onderhoud") = vbNo) Then
      Exit Sub
    End If
        
    Dim strDB As String
    
    ' get settings from ini file
    strDB = GetFromINI("Settings", "loc_db", App.Path & "\..\..\settings.ini")
    
    ' error
    If (strDB = "") Then
      MsgBox "Uw database kon niet worden gelokaliseerd!", vbCritical + vbOKOnly, "Fout"
      Exit Sub
    End If
    
    ' make sure file is unique
    If (Dir(App.Path & "\compact.mdb") <> "") Then Kill App.Path & "\compact.mdb"
    
    ' compact database
    DBEngine.CompactDatabase strDB + "\boeketadm.mdb", App.Path & "\compact.mdb"
    
    Kill strDB + "\boeketadm.mdb"
    FileCopy App.Path & "\compact.mdb", strDB + "\boeketadm.mdb"
    Kill App.Path & "\compact.mdb"
    
    MsgBox "Database is gereed!", vbOKOnly + vbInformation, "Onderhoud"
    Exit Sub
    
errhandler:
    MsgBox "Er is een fout opgetreden. Beschrijving: " + Err.Description, vbOKOnly + vbCritical, "Fout!"
End Sub