Utilisation non autorisée de Null avec un ADODB.Recordset [Résolu]

Signaler
Messages postés
34
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2007
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
bonjour,

J'ai implémenté ce code (cnx est initialisé ailleur)

Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT NOM, PRENOM FROM CLIENT", cnx
Dim myNom As String
Dim myPrenom As String
myNom = rst("NOM")
myPrenom = rst("PRENOM")


Si j'ai dans ma base, NOM=TOTO et PRENOM non renseigné (donc Null), j'ai une erreur "Utilisation non autorisée de Null"

La base est SQL SERVEUR

Merci

7 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
118
Il faut testé si ta valeur est nulle ou pas avant de l'affecter à ta variable :

If not isnull(rst.Fields("PRENOM").value) then Let myPrenom = rst.Fields("PRENOM").Value
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Salut,
Je pense que le problème est lié à ta table, ou ton champ doit être déclaré en acceptant une valeur nul(vide), propriété : chaine vide autorisé, mettre oui
A+
Exploreur
Messages postés
34
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2007

salut,
Dans ma table, j'ai mis null autorisé pour la colonne Prenom. Je peux pas rendre obligatoire la colonne, car elle est rempli avec un chargement de fichier qui ne dépend pas de moi. :(. Je vais essayer de regarder si je peux modifier la requete genre SELECT replace(PRENOM,NUll, "")

merci
Messages postés
34
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2007

je vais tester ca de suite. La j'avais commencé a faire cette fonction de surcharge.

Public Function rstNull(ByRef rst As ADODB.Recordset, szChaine) As String
On Error GoTo rstNullError
rstNull = rst(szChaine)
Exit Function
rstNullError:
rstNull = ""
End Function


mais c'est assez bourrin
Messages postés
34
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2007

Public Function rstNull(ByRef rst As ADODB.Recordset, szChaine) As String
On Error GoTo rstNullError
If Not IsNull(rst.Fields(szChaine).Value) Then Let rstNull = rst.Fields(szChaine).Value
Exit Function
rstNullError:
rstNull = ""
End Function
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Excuse moi de t'avoir mal orienter.

A+
Exploreur
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
118
Pas besoin d'encapsuler dans une fonction avec une routine de traitement d'erreur : la fonction IsNull te permettra justement de ne pas lever d'erreur même si le champ est null.