Select sur datatable

Ouggada Messages postés 38 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 4 mars 2009 - 26 févr. 2009 à 16:13
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 26 févr. 2009 à 19:31
Bonjour,

j'espère que je vais trouver de l'aide parce que là je sature grave!

voila le topo :

DataGridViewRecap.Rows.Add(oTable.Select("Count(XCOMDAT_0) WHERE " & Mid("XCOMDAT_0", 4, 7) & "='01/" & Mid(DateDeb, 7, 4) & "' AND SHIDAT_0 >= '" & DateDeb & "' AND SHIDAT_0 <= '" & DateFin & "' AND XBQABR_0 = '" & ReportAutoBq.ComboBoxTrigram.SelectedItem & "';"))
           
et j'ai comme message d'erreur : opérande manquant dans la clause 'WHERE'.
Sachant que j'utilise les mid car ma colonne contenant des dates est en fait déclarer dans la base de donnée en string et je n'ai pas le droit de changer cet état de fait...

et si je fais comme ceci :

DataGridViewRecap.Rows.Add(oTable.Select("Count(XCOMDAT_0)"))

j'ai comme message d'erreur :

l'exxpression de filtre 'Count(XCOMDAT_0' ne peut pas correspondre à un terme bouleean....?????

et la honnêtement je ne comprend vraiment plus rien, mais vraiment rien de rien....

en attendant un répose positive, cordialement ,
Ouggada.
A voir également:

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 févr. 2009 à 19:31
Salut
Ton code serait plus lisible et plus facile à débuguer avec ce format :
DataGridViewRecap.Rows.Add( oTable.Select(
   "Count(XCOMDAT_0) " & _
   " WHERE " & Mid("XCOMDAT_0", 4, 7) ='01/" & Mid(DateDeb, 7, 4) & "'" & _
   "   AND SHIDAT_0 >= '" & DateDeb & "' " & _
   "   AND SHIDAT_0 <= '" & DateFin & "' " & _
   "   AND XBQABR_0 = '" & ReportAutoBq.ComboBoxTrigram.SelectedItem & "';"))

Moi, je vois qu'il y a des " en trop au niveau de Mid("XCOMDAT_0", 4, 7)
Tel que tu l'as écrit, MID est interprété par le monde VB, pas SQL
Que représente XCOMDAT_0 ? Une variable VB ou le nom d'un champ SQL ?
VB : Il faut retirer les "
SQL : Mid (ici dans le monde VB) est normalement (*) remplacé par SubString en SQL
(*) MID fonctionne peut-être sous Access, mais Access est un cas particulier
Ta ligne pourrait ressembler à ça :
   " WHERE SubString(XCOMDAT_0, 4, 7) = '01/" ...
A vérifier : Il me semble que le SubString SQL numérote ses caractères à partir de 0 (et pas de 1)

Sinon, la vraie solution consiste à considérer les dates comme des dates et à utiliser des fonctions liées aux dates.
Il existe aussi une instruction BETWEEN pour éviter de tester monChamp > et monChamp <

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous