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 : 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
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
 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.