Ik probeer middels C# twee Access databases te repliceren. Heb eerst met VBA getest en daar werkt onderstaande code goed:
Tot dusver werkt het goed. Als ik echter in Visual Studio 2003 in C# de volgende code probeer:
Dan krijg ik een COM Exception op de regel 'rep.ActiveConnection = ...'
Deze exception luidt:
An COM Exception has occured: Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Ook als ik het in VB.Net probeer krijg ik precies dezelfde fout dus zal het in .Net->COM moeten zitten.
Wat ik al geprobeerd heb:
De string omzetten naar een Byte-array => zelfde fout.
Het internet afgestruind naar JRO.Replica implementaties => allen gaan uit van JRO.MakeReplica welke wel onder C#.Net werkt.
Wat trouwens nog van belang is is dat ActiveConnection een object i.p.v. een string verwacht. Vandaar dat ik dacht dat ik het misschien naar ASCII moest omzetten om Unicode<=>ASCII problemen te voorkomen; maar dat leek niet te helpen.
Nu mijn vraag: hoe krijg ik een .Net applicatie zover om middels JRO.Replica mijn db's te repliceren. Natuurlijk kan ik een tooltje maken (bijv. in Delphi of C++) die het wel doet en die aanroepen maar liefst zou ik het gewoon in m'n C# app implementeren.
Visual Basic .NET:
1
2
3
4
| Dim Rep As New JRO.Replica Rep.ActiveConnection = "C:\Slave.mdb" Rep.Synchronize "C:\Master.mdb", jrSyncTypeImpExp, jrSyncModeDirect Set Rep = Nothing |
Tot dusver werkt het goed. Als ik echter in Visual Studio 2003 in C# de volgende code probeer:
C#:
1
2
3
4
5
6
7
8
9
10
11
| try { JRO.Replica rep = new JRO.Replica(); rep.ActiveConnection = @"C:\Slave.mdb"; rep.Synchronize(@"C:\Master.mdb", JRO.SyncTypeEnum.jrSyncTypeImpExp, JRO.SyncModeEnum.jrSyncModeDirect); } catch(System.Runtime.InteropServices.COMException cexc) { System.Console.WriteLine("An COM Exception has occured: "+cexc.Message); } System.Console.ReadLine(); |
Dan krijg ik een COM Exception op de regel 'rep.ActiveConnection = ...'
Deze exception luidt:
An COM Exception has occured: Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Ook als ik het in VB.Net probeer krijg ik precies dezelfde fout dus zal het in .Net->COM moeten zitten.
Wat ik al geprobeerd heb:
De string omzetten naar een Byte-array => zelfde fout.
Het internet afgestruind naar JRO.Replica implementaties => allen gaan uit van JRO.MakeReplica welke wel onder C#.Net werkt.
Wat trouwens nog van belang is is dat ActiveConnection een object i.p.v. een string verwacht. Vandaar dat ik dacht dat ik het misschien naar ASCII moest omzetten om Unicode<=>ASCII problemen te voorkomen; maar dat leek niet te helpen.
Nu mijn vraag: hoe krijg ik een .Net applicatie zover om middels JRO.Replica mijn db's te repliceren. Natuurlijk kan ik een tooltje maken (bijv. in Delphi of C++) die het wel doet en die aanroepen maar liefst zou ik het gewoon in m'n C# app implementeren.