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

Messages postés
327
Date d'inscription
mardi 8 octobre 2002
Statut
Membre
Dernière intervention
6 octobre 2010
- - Dernière réponse : 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
Afficher la suite 

6 réponses

Messages postés
520
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
3 mars 2008
1
0
Merci
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
Commenter la réponse de olixelle
Messages postés
262
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
27 avril 2007
0
Merci
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
Commenter la réponse de asecher
Messages postés
327
Date d'inscription
mardi 8 octobre 2002
Statut
Membre
Dernière intervention
6 octobre 2010
0
Merci
J'ai rajouté une fonction dans mon appel qui transforme un champ Null en chaine de caractere vide et ca fonctionnne.

Merci
Commenter la réponse de cs_globule
Messages postés
520
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
3 mars 2008
1
0
Merci
ne met pas ca dans l'appel mais plutot dans la fonction...c plus propre

Rollerman
Commenter la réponse de olixelle
Messages postés
327
Date d'inscription
mardi 8 octobre 2002
Statut
Membre
Dernière intervention
6 octobre 2010
0
Merci
Je ne peux pas le mettre dans la fonction. C'est appel qui plante si la valeur est NULL
Commenter la réponse de cs_globule
Messages postés
180
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
26 novembre 2007
1
0
Merci
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.
Commenter la réponse de medelidrissi