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:
L'appel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
A chaque exécution, j'ai une erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
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.
Partager