Utilisation non autorisée de Null avec un ADODB.Recordset

Résolu
cs_opala
Messages postés
34
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2007
- 25 janv. 2007 à 11:48
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
- 25 janv. 2007 à 13:05
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

cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
25 janv. 2007 à 12:19
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
3
cs_Exploreur
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
25 janv. 2007 à 11:53
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
0
cs_opala
Messages postés
34
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2007

25 janv. 2007 à 12:17
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
0
cs_opala
Messages postés
34
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2007

25 janv. 2007 à 12:28
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
0

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

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

25 janv. 2007 à 12:39
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
0
cs_Exploreur
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
25 janv. 2007 à 13:05
Excuse moi de t'avoir mal orienter.

A+
Exploreur
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
25 janv. 2007 à 13:05
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.
0