OVH Cloud OVH Cloud

Probleme SQL de Base

1 réponse
Avatar
Laurent DUB
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

rst.Close
cnc.Close

D'avance Merci.
Cordialement LrD

1 réponse

Avatar
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