Syntaxe requête SQL : comment transformer les NULL ?

BenHarber

XLDnaute Occasionnel
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

BH
 
C

Compte Supprimé 979

Guest
Re : Syntaxe requête SQL : comment transformer les NULL ?

Salut BenHarber,

As-tu essayé :
cde_SQL = "SELECT " & critere & " FROM [" & nomFeuille & "$] GROUP BY " & critere & " ORDER BY " & critere & " ASC WHERE " & critere & "IsNot Null "

A+
 

BenHarber

XLDnaute Occasionnel
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.....

BH
 

chris

XLDnaute Barbatruc
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
 
G

Guest

Guest
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

Ou

monTab(0)= IIF(IsNull(.Fields(0)),"",.Fields(0))

A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

JB
 

BenHarber

XLDnaute Occasionnel
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....

Cordialement,

BH
 

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 180
dernier inscrit
Vcr