Bonjour le Forum,
J'utilise dans une macro une commande SQL bien pratique pour interroger un fichier sans l'ouvrir ! (merci à tous les contributeurs du forum sur ce sujet !)
ma commande est la suivante :
cde_SQL = "SELECT " & critere & " FROM [" & nomFeuille & "$] GROUP BY " & critere & " ORDER BY " & critere & " ASC"
L'ennui c'est que je rappatrie régulièrement des valeurs "NULL" qui ne peuvent pas ensuite être affectées, comme le préconise Michel_xld, dans un tableau intermédiaire (cf; ci dessous : ça bug à la 4ème ligne)
With rqst
.MoveFirst
Do While Not .EOF
monTab(0, nbEnr) = .Fields(0) 'CA PLANTE LA car .Fields(0) = NULL
monTab(1, nbEnr) = .Fields(1)
nbEnr = nbEnr + 1
ReDim Preserve monTab(1, nbEnr)
.MoveNext
Loop
End With
Ma question est donc : comment remplacer l'élément "NULL" par, par exemple, le texte alphabétique "Vide" ?
Merci d'avance pour vos réponses toujours utiles et avisées
Re : Syntaxe requête SQL : comment transformer les NULL ?
Bonjour Bruno,
Merci pour ta réponse...mais ça ne marche pas !
En plus, d'après ce que je comprends, ta solution EXCLUT les NULLS. Moi, je souhaite les remplacer par le texte 'Vide'.
J'ai essayé une syntaxe du type
cde_SQL = "SELECT ISNULL(" & critere & ",'Vide') FROM [" & nomFeuille & "$] GROUP BY " & critere & " ORDER BY " & critere & " ASC" mais ça plante toujours.....
Re : Syntaxe requête SQL : comment transformer les NULL ?
Bonjour
J'utilise Access mais pas MSQUERY mais
cde_SQL = "SELECT if(ISNULL(" & critere & "),'Vide',"& critere & ") FROM [" & nomFeuille & "$] GROUP BY " & critere & " ORDER BY " & critere & " ASC"
devrait être plus correct
Sous Access il existe une forme raccourcie grâce à la fonction NZ (dont une équivalence existe dans ORACLE) qui donne
NZ(critère,"vide")
mais je ne sais si MSQUERY la traite
Re : Syntaxe requête SQL : comment transformer les NULL ?
Bonsoir tous,
Code:
With rqst
.MoveFirst
Do While Not .EOF
If isNull(.Fields(0) then monTab(0,nbEnr)= "" else monTab(0,nbEnr)=.Fields(0)
' idem pour monTab(1)
nbEnr = nbEnr + 1
ReDim Preserve monTab(1, nbEnr)
.MoveNext
Loop
End With
Re : Syntaxe requête SQL : comment transformer les NULL ?
Bonsoir,
Code:
Sub RecupTableurSQL()
ChDir ActiveWorkbook.Path
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & ThisWorkbook.Path & "\" & "ADOsource.xls"
Set rs = cnn.Execute("SELECT nom,Prenom,Salaire FROM MaBD where nom<>''")
[A2].CopyFromRecordset rs
End Sub
Re : Syntaxe requête SQL : comment transformer les NULL ?
Chris, Hasco, JB,
Merci bcp pour vos réponses.
Après essai de chacune d'elles, je vais retenir celle de Hasco qui me parait la plus simple (en tout cas, c'est celle qui m'est intellectuellement accessible !) et qui fonctionne bien.
Je m'excitais sur la synthaxe de la commande SQL alors qu'il suffisait d'intervenir sur la commandes d'alimentation du tableau intemédiaire, comme quoi....