Vb2005 & SQL between date et variable

Résolu
cs_lucki Messages postés 11 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 18 novembre 2006 - 8 mai 2006 à 18:32
TheBuzzer Messages postés 19 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 25 août 2009 - 13 déc. 2006 à 18:20
bonjour à tous
J'utilise Visual Basic 2005 Express et SQL Express
j'entre dans un form deux variables date : date1 et date2 :


Dim date1
As
Date

Dim date2
As
Date
date1 = DateTimePicker1.Text
date2 = DateTimePicker2.Text

Me.Table1TableAdapter.FillBy(
Me.FactureDataSet.Table1)

ensuite j'utilise requete SQL pour afficher dans datagridview toutes les données entre deux dates :

SELECT [Cléf unique], Date, Objet, Credit, Debit
FROM Table1
WHERE (Date BETWEEN '&date1' AND '&date2')

le Problème : j'ai une erreur SQL : echec de la convertion d'une valeur datetime à partir d'une chaine de caractère.

Comment je dois procéder pour que mon code soit valide?
merci

14 réponses

cs_lucki Messages postés 11 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 18 novembre 2006
11 mai 2006 à 14:04
J'ai trouvé le problème:) = voici le nouveau code :
SELECT [Cléf unique], Date, Objet, Credit, Debit FROM dbo.Table1
WHERE Date BETWEEN @date1 AND @date2

Pour créer une variable il faut utiliser @ et non &
Enfin les ' ' sont utilisés pour une expression ainsi que %

Merci pour votre participation.
3
cs_AzertyH Messages postés 69 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 18 janvier 2007
13 mai 2006 à 03:51
Salut c'est encore moi, je viens de réussir à faire ma requette Between avec l'assistant de Vb2005. C'était tout con, mais il fallait quand même savoir le faire.

Pour info, Acces et SQL Express sont effectivement différent au niveau des commandes de VB2005.

Voici la gueule de la requette:
SELECT [date] FROM intervention
WHERE ([date] BETWEEN ? AND ?)

Avec access, on met des "?" au lieu des variables.
Après fermeture de l'assistant, VB2005 créait automatiquement des variables "date" et "date1" (qui sont bien sure celles représentées par des "?").

Ensuite dans le code de la Form, pour charger le DataSet, il faut écrire:


Me.InterventionTableAdapter.Fill(
Me.BddsavDataSet.intervention, s_date, s_date1)

où s_date et s_date1 sont des variables inventées par moi-même, elles servent à envoyer des valeurs dates à nos fameux "?".

J'espère que j'aurais été utile.
3
youil Messages postés 67 Date d'inscription vendredi 28 mars 2003 Statut Membre Dernière intervention 12 juillet 2011
8 mai 2006 à 18:43
Essaie

SELECT [Cléf unique], Date, Objet, Credit, Debit
FROM Table1
WHERE (Date BETWEEN #" & date1 & "# AND #" & date2 & "#)
0
cs_lucki Messages postés 11 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 18 novembre 2006
8 mai 2006 à 19:18
Merci Youil,
Mais sql express ne reconnait pas cette syntaxe...

je cherche plutot à trouver une syntaxe SQL supplementaire (car la mienne est accèpté dans l'assistant configuration de requètes tableAdapter)
qui permetterais de convertir la chaine de caractère de "date1" et "date2" pour etre compatible avec la colone date de ma table (system.datetime)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lucki Messages postés 11 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 18 novembre 2006
9 mai 2006 à 16:05
j'ai peut etre une solution mais je n'arrive pas à faire une syntaxe correct.

L'utilisation de la commande CONVERT ou CAST...
Est-ce que quelqun peut m'expliquer comment l'intégrée de manière correcte pour que la variable &date1 et &date2, qui a priori sont des charactères, ce tranforment en datetime????

merci
0
youil Messages postés 67 Date d'inscription vendredi 28 mars 2003 Statut Membre Dernière intervention 12 juillet 2011
9 mai 2006 à 17:55
Utilise DateTimePicker1.value et la il est en date
0
georgiogp Messages postés 3 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 11 mai 2006
9 mai 2006 à 18:48
Lucki, Bonjour,

Ta cde SQL

SELECT [Cléf unique], Date, Objet, Credit, Debit
FROM Table1
WHERE (Date BETWEEN '&date1' AND '&date2')

Souvenir d'Oracle SQL : si tu entres dans le formulaire une date JJMMAAAA -->

SELECT [Cléf unique], Date, Objet, Credit, Debit
FROM Table1
WHERE (Date BETWEEN TO-DATE('&date1', 'JJMMAAAA') AND

TO-DATE('&date2', 'JJMMAAAA')
)

Mais je ne sia si cette syntaxe existe en SQL Express.

Georgiogp
0
cs_lucki Messages postés 11 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 18 novembre 2006
9 mai 2006 à 19:28
Merci pour le code value, çe code sera plus propre. seulement c'est le générateur de requete qui fait l'erreur de convertion.Donc avant d'employer le code visual basic. autrement-dit, c'est la requete SQL qui dérange.

Pour le code oracle, en effet, sql ne reconnait pas la commande to-date...

Merci quand même.
Je continuerais à chercher de mon coté en plus de vos aides présieuses
0
cs_AzertyH Messages postés 69 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 18 janvier 2007
13 mai 2006 à 00:55
Bonjour,

Je suis confronté à ce problème consernant l'utilisation de between et ses variables date1 et date2. Moi, j'utilise ACCESS et non pas SQL. J'utilise aussi VB 2005.

Dans le dernier message de lucki, je comprend pas pourquoi il écrit "dbo.Table1". Moi j'aurais plutôt mis Table1 (sans le dbo).
D'autre part, sa veut dire quoi : [Cléf unique] ? Je n'est jamais utilisé cela dans mes requette.

Voila, moi aussi je doit utiliser between, pour rechercher dans ma base Access des infos comprises entre telle date et telle date.

Voici ce que j'ai écrit dans l'assistant de mon DataSet :
SELECT [date] FROM intervention WHERE [date] BETWEEN @date1 AND @date2

Mais VB2005 n'est pas content, il me signale une erreur :
"Erreur dans la clause WHERE à coté de [mailto:'@' '@']. Impossible d'analyser le texte de la requette."

Par ailleur, il faut aussi charger les données dans le DataSet avec la fameuse instruction:
Me.InterventionTableAdapter.Fill(
Me.BddsavDataSet.intervention)

Pouvez vous me compléter cette dernière avec les variable date1 et date2.

Merci pour votre aide;
Amicalement AzertyH
0
cs_lucki Messages postés 11 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 18 novembre 2006
13 mai 2006 à 02:25
Bonjour AzertyH

Pour information, il ya 13 ans j'ai appris à faire des softs sous Quick Basic de Ms-dos... Aujourd'hui je réapprend tout, cela fait deux semaine que je me suis mis à visual basic 2005... Donc ça va être dur de t'aider, mais je ferais mon possible pour le faire

Pour commencer, pour l'histoire du "dbo.", c'est le générateur de requètes qui l'a mis... Regarde les requètes que tu as ; par exemple pour moi et sous sql, j'ai la requète fill.getData() qui a été faite automatiquement. Pour moi, le "dbo.*" est présent. Si cela n'est pas le cas chez toi, ou que il n'y a pas de mess d'erreur (ce qui est le cas à prioris) c'est que cela n'est valable que sous SQL.

Pour le problème de tes variables, je n'ai pas la solution, je regarderais dans les msdn et autres....

Pour la question de l'execution de ta requete sous Vbasic, lorsque la requete sera OK visual reconnaitra les variables : ensuite, pour ma part, je n'ai pas réussi à lier la variable "dim date1"et "dim date2" et celles de ma requete donc :
j'ai utilisé un menu toolStrip :
En bas de ton formulaire (version concepteur) tu doit avoir la fonction : "InterventionTableAdapter"
Fait un clique droit dessus
Choisit "ajouter une requete"
Selectionne ta table et choisit "nom de requete existant"
Selectionne Fill()
Et fait Ok
: Dans ton form, tu as maintenant des TextBox et un bouton pour valider

Seul problème je n'ai pas réussi à faire que les TextBox intègrent la fonction Datetime, donc l'utilisateur est obligé de mettre en texte"12/05/2006" par exemple....
0
cs_lucki Messages postés 11 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 18 novembre 2006
13 mai 2006 à 04:00
Super.

Pour l'instant je refait mon programme.
Cette fois-ci avec un projet écrit à l'avance...
Donc avec du temps, pour visualiser des table je devrai surement utiliser ta commande fill(*.*, variable1, variable2)

Donc merci
Bonne écriture pour ton projet
0
cs_AzertyH Messages postés 69 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 18 janvier 2007
13 mai 2006 à 04:05
Merci, bonne continuation
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 4
21 juin 2006 à 09:15
Salut AzertyH

J'avais le même problème pour faire un between dans VB2005 sur Acces.
Merci d'avoir reposter apres avoir trouvé la solution.

Bon developpement a tous

MANUANTIBES [:p]
0
TheBuzzer Messages postés 19 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 25 août 2009
13 déc. 2006 à 18:20
La variante avec les # m'a bcp aidé en vb sur access 2003 si jamais qqun cherche la synthaxe de recherche de date sous access!

Merci et bonne journée!
0