Modifier la declaration de ma fonction pour quelle accepte une valeur NULL ?

cs_globule Messages postés 327 Date d'inscription mardi 8 octobre 2002 Statut Membre Dernière intervention 6 octobre 2010 - 5 juil. 2006 à 14:48
medelidrissi Messages postés 180 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 26 novembre 2007 - 10 juil. 2006 à 12:13
Bonjour,

Jutilise la fonction suivante pour convertir les caracteres d'une base Access vers MySQL qui est en UTF-8

Public Function AToUTF8(wText As String) As String
    Dim vNeeded As Long
    Dim vSize   As Long

    vSize = Len(wText)
    vNeeded = WideCharToMultiByte(CP_UTF8, 0, StrPtr(wText), vSize, "", 0, 0, 0)
    AToUTF8 = String(vNeeded, 0)
    WideCharToMultiByte CP_UTF8, 0, StrPtr(wText), vSize, AToUTF8, vNeeded, 0, 0
End Function

Je rencontre un probleme. Lors de l'appel de cette fonction, il se peut que mon champ soit vide (en gros WText=NULL). Dans ce cas VB plante et me repond que Null n'est pas autorisé

Comment modifier la declaration de ma fonction pour quelle accepte une valeur NULL ?. Je ne peut pas tester chaque champ au préalable, j'en ai plusieurs centaines

Merci

6 réponses

olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
5 juil. 2006 à 16:18
salut,

a mon avis ton probleme ne vient pas de la déclaration de ta fonction mais du code qui est dedans:

if isnothing(wText) then
   wText = ""
end if
   Dim vNeeded As Long
    Dim vSize   As Long

    vSize = Len(wText)
    vNeeded = WideCharToMultiByte(CP_UTF8, 0, StrPtr(wText), vSize, "", 0, 0, 0)
    AToUTF8 = String(vNeeded, 0)
    WideCharToMultiByte CP_UTF8, 0, StrPtr(wText), vSize, AToUTF8, vNeeded, 0, 0

Rollerman
0
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
6 juil. 2006 à 00:52
Ou encore appeler ta fonction en donnant :
strResultatUTF8=AToUTF8("" & strAscii), par contre, il faut peut-être préciser que ton paramètre est "ByVal")
Par contre, je ne comprends pas la dernière ligne de ta fonction....

Cordialement,

Alain 31
0
cs_globule Messages postés 327 Date d'inscription mardi 8 octobre 2002 Statut Membre Dernière intervention 6 octobre 2010
6 juil. 2006 à 08:05
J'ai rajouté une fonction dans mon appel qui transforme un champ Null en chaine de caractere vide et ca fonctionnne.

Merci
0
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
6 juil. 2006 à 09:49
ne met pas ca dans l'appel mais plutot dans la fonction...c plus propre

Rollerman
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_globule Messages postés 327 Date d'inscription mardi 8 octobre 2002 Statut Membre Dernière intervention 6 octobre 2010
6 juil. 2006 à 12:00
Je ne peux pas le mettre dans la fonction. C'est appel qui plante si la valeur est NULL
0
medelidrissi Messages postés 180 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 26 novembre 2007 2
10 juil. 2006 à 12:13
Salut
essaye l'appel suivant (pas testé) :
Public Function AToUTF8(wText As variant) As String
 
Puis fais un traitement de ce cas dans ta fonction .
If IsNull(wText) Then .......

Bonne programmation.
Cordialement medelidrissi

<hr />En Informatique, rien n'est impossible. mais, ce n'est pas toujours évident.
0
Rejoignez-nous