[VB.net] Problème de synchronisation d'une base
Bonjour à tous,
J'ai un problème avec la fonction DEVICETODESKTOP de la dll adofltr.dll provenant de Active Sync.
Cette fonction doit me permettre de copier en convertisant un fichier .cdb de PPC vers un fichier .mdb sur mon PC.
Dans le sens inverse (DEKTOPTODEVICE), cela fonctionne très bien.
Le code des fonctions:
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 35
| Module CopyFileToDevice
Public Function BoolToShort(ByVal Value As Boolean) As Short
If Value = False Then
Return 0
Else
Return 1
End If
End Function
Declare Function DESKTOPTODEVICE Lib "c:\Program files\Microsoft ActiveSync\adofiltr.dll" _
(ByVal desktoplocn As String, _
ByVal tablelist As String, _
ByVal sync As Boolean, _
ByVal overwrite As Integer, _
ByVal devicelocn As String) As Long
Declare Function DEVICETODESKTOP Lib "c:\Program files\Microsoft ActiveSync\adofiltr.dll" _
(ByVal desktoplocn As String, _
ByVal tablelist As String, _
ByVal sync As Boolean, _
ByVal overwrite As Integer, _
ByVal devicelocn As String) As Long
Public Function DesktopToDevice(ByVal DesktopLocation As String, ByVal TableList As String, _
ByVal Sync As Boolean, ByVal Overwrite As Boolean, ByVal DeviceLocation As String) As Integer
Return DesktopToDevice(DesktopLocation, TableList, Sync, BoolToShort(Overwrite), DeviceLocation)
End Function
Public Function DeviceToDesktop(ByVal DesktopLocation As String, ByVal TableList As String, _
ByVal Sync As Boolean, ByVal Overwrite As Boolean, ByVal DeviceLocation As String) As Integer
Return DeviceToDesktop(DesktopLocation, TableList, Sync, BoolToShort(Overwrite), DeviceLocation)
End Function
End Module |
L'appel:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| If myRAPI.DeviceFileExists("\My Documents\RMS\Soteg.cdb") Then
Dim result As Integer = DEVICETODESKTOP(Application.StartupPath & "\transfertSoteg.mdb", "", False, True, "\My Documents\RMS\Soteg.cdb")
Select Case result
Case 0
MsgBox("Transfert des données à partir du terminal terminé avec succès !", MsgBoxStyle.Exclamation)
Case -2147024894
MsgBox("Aucun terminal n'est connecté!", MsgBoxStyle.Critical)
Case -2146824447
MsgBox("Les tables de destination existent déjà!", MsgBoxStyle.Critical)
Case -2147217865
MsgBox("Les tables n'existent pas sur le PC !", MsgBoxStyle.Critical)
Case Else
MsgBox(result & " Une erreur est survenue durant le transfert des données !", MsgBoxStyle.Critical)
End Select
Else
MsgBox("Aucun fichier de données sur le terminal!", MsgBoxStyle.Critical)
End If
myRAPI.Disconnect() |
A chaque exécution, j'ai une erreur:
Arithmetic operation resulted in an overflow.
Je ne vois pas du tout ou est le problème. Cette erreur est envoyée par l'appell à la fonction de la DLL dans mon module.
Quelqu'un pourrait m'aider sur ce point? L'erreur n'a pas de sens lors d'un transfert de données. Ou alors des données de ma base ne conviennent pas pour le PC, mais je n'y crois pas vraiment.
Merci d'avance.