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

cs_opala 34 Messages postés jeudi 9 octobre 2003Date d'inscription 19 novembre 2007 Dernière intervention - 25 janv. 2007 à 11:48 - Dernière réponse : cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 25 janv. 2007 à 12:19
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_DARKSIDIOUS
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 25 janv. 2007 à 11:53
0
Utile
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
Commenter la réponse de cs_Exploreur
cs_opala 34 Messages postés jeudi 9 octobre 2003Date d'inscription 19 novembre 2007 Dernière intervention - 25 janv. 2007 à 12:17
0
Utile
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
Commenter la réponse de cs_opala
cs_opala 34 Messages postés jeudi 9 octobre 2003Date d'inscription 19 novembre 2007 Dernière intervention - 25 janv. 2007 à 12:28
0
Utile
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
Commenter la réponse de cs_opala
cs_opala 34 Messages postés jeudi 9 octobre 2003Date d'inscription 19 novembre 2007 Dernière intervention - 25 janv. 2007 à 12:39
0
Utile
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
Commenter la réponse de cs_opala
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 25 janv. 2007 à 13:05
0
Utile
Excuse moi de t'avoir mal orienter.

A+
Exploreur
Commenter la réponse de cs_Exploreur
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 25 janv. 2007 à 13:05
0
Utile
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.
Commenter la réponse de cs_DARKSIDIOUS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.