Bonjour,
Access 2002, win XP,je débute...
lorsque je lance le code suivant,
j'obtiens une erreur si un des champs est vide.
Quel est le moyen le plus simple d'éviter cette erreur ?
Dim cnc As ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
Set cnc = CurrentProject.Connection
Set cmd.ActiveConnection = cnc
cmd.CommandType = adCmdText
cmd.CommandText = "select distinct * from t_cons where id_constr = " &
id_Construc
Set rst = cmd.Execute
NomPayeur = rst("raison_s_c") 'champ texte à remplir
INSEE_Payeur = rst("insee_c")'champ texte à remplir
AdressePayeur = rst("adresse_c")'champ texte à remplir
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
david
Salut,
le probème est qu'il faut gérer la valeur NULL que peux stocker tes champs : NomPayeur = rst("raison_s_c") INSEE_Payeur = rst("insee_c") AdressePayeur = rst("adresse_c") ne fonctionne pas si un (ou +) des champs vaut NULL
Pour ce faire, (à chaque projet de bdd que tu fais), créer des fonctions simples VBA comme : Function ReadFeildText(byval fieldValue as Variant, optional byval NullValue as String="") as String If IsNull(fieldValue) Then replaceTextNull = NullValue Else replaceTextNull = CStr(fieldValue) End If End Function (tu peux refaire la même chose pour ReadFieldNum, ReadFieldDate, ...) Pense aussi à faire les fonctions inverses (WriteFieldText, WriteFieldNum, ...) qui retourne une valeur variant pouvant contenir NULL.
Maintenant que ces quelques fonctions existent, tu créés ta lecture de telle sorte : NomPayeur = ReadFieldText(rst("raison_s_c")) INSEE_Payeur = ReadFieldText(rst("insee_c"),"9999999999999.99") AdressePayeur = ReadFieldText(rst("adresse_c"))
Rq : le mot "optional" devant le 2° paramètre te permet, le cas échéant de spécifier une valeur remplaçant NULL (chaîne vide par défaut).
A+, david
Salut,
le probème est qu'il faut gérer la valeur NULL que peux stocker tes
champs :
NomPayeur = rst("raison_s_c")
INSEE_Payeur = rst("insee_c")
AdressePayeur = rst("adresse_c")
ne fonctionne pas si un (ou +) des champs vaut NULL
Pour ce faire, (à chaque projet de bdd que tu fais), créer des
fonctions simples VBA comme :
Function ReadFeildText(byval fieldValue as Variant, optional byval
NullValue as String="") as String
If IsNull(fieldValue) Then
replaceTextNull = NullValue
Else
replaceTextNull = CStr(fieldValue)
End If
End Function
(tu peux refaire la même chose pour ReadFieldNum, ReadFieldDate, ...)
Pense aussi à faire les fonctions inverses (WriteFieldText,
WriteFieldNum, ...) qui retourne une valeur variant pouvant contenir
NULL.
Maintenant que ces quelques fonctions existent, tu créés ta lecture
de telle sorte :
NomPayeur = ReadFieldText(rst("raison_s_c"))
INSEE_Payeur = ReadFieldText(rst("insee_c"),"9999999999999.99")
AdressePayeur = ReadFieldText(rst("adresse_c"))
Rq : le mot "optional" devant le 2° paramètre te permet, le cas
échéant de spécifier une valeur remplaçant NULL (chaîne vide par
défaut).
le probème est qu'il faut gérer la valeur NULL que peux stocker tes champs : NomPayeur = rst("raison_s_c") INSEE_Payeur = rst("insee_c") AdressePayeur = rst("adresse_c") ne fonctionne pas si un (ou +) des champs vaut NULL
Pour ce faire, (à chaque projet de bdd que tu fais), créer des fonctions simples VBA comme : Function ReadFeildText(byval fieldValue as Variant, optional byval NullValue as String="") as String If IsNull(fieldValue) Then replaceTextNull = NullValue Else replaceTextNull = CStr(fieldValue) End If End Function (tu peux refaire la même chose pour ReadFieldNum, ReadFieldDate, ...) Pense aussi à faire les fonctions inverses (WriteFieldText, WriteFieldNum, ...) qui retourne une valeur variant pouvant contenir NULL.
Maintenant que ces quelques fonctions existent, tu créés ta lecture de telle sorte : NomPayeur = ReadFieldText(rst("raison_s_c")) INSEE_Payeur = ReadFieldText(rst("insee_c"),"9999999999999.99") AdressePayeur = ReadFieldText(rst("adresse_c"))
Rq : le mot "optional" devant le 2° paramètre te permet, le cas échéant de spécifier une valeur remplaçant NULL (chaîne vide par défaut).