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 130
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 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
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 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
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 130
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
Rejoignez-nous