rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[access] Variable dans une requete sql

Posté par lord_in, le vendredi 15 juin 2007 à 14:12:32
Variable dans une requete sql

Je n’arrive pas à intégrer une variable dans une instruction sql

Voilà mon code
Dim T as date
Dim T1 as date



T = Val(Datett.Value)
T1 = DateAdd("m", 1, T)
DoCmd.RunSQL "INSERT INTO Table1tampon ( Material, [material description], [zone], mois, forecasts ) SELECT TableTotal.Material, TableTotal.[material description], TableTotal.zone, TableTotal.mois, TableTotal.forecasts FROM TableTotal WHERE (((TableTotal.zone)=zonett.value) AND ((TableTotal.mois)=datett.value));", -1

DoCmd.RunSQL "INSERT INTO Table2tampon ( Material, [material description], [zone], mois, forecasts ) SELECT TableTotal.Material, TableTotal.[material description], TableTotal.zone, TableTotal.mois, TableTotal.forecasts FROM TableTotal WHERE (((TableTotal.zone)=zonett.value)) AND ((TableTotal.mois)= T1 ) ;", -1

Et quand j’exécute il me demande la valeur de la variable T


Dattett = la date que je tape dans mon formulaire

Merci de votre aide
Configuration: Windows XP
Internet Explorer 6.0
Répondre à lord_in  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 15 juin 2007 à 14:33:36
Salut,

il faut sortir T1 du texte de la requête :
Dim StrSql as string
Strsql = "INSERT INTO Table2tampon ( Material, [material description], [zone], mois, forecasts ) "
StrSql = StrSql + "SELECT TableTotal.Material, TableTotal.[material description], TableTotal.zone, TableTotal.mois, TableTotal.forecasts FROM TableTotal WHERE (((TableTotal.zone)=zonett.value)) "
StrSql = StrSql + "AND ((TableTotal.mois)= '" + T1 + "') ;"
DoCmd RUNSQL (Strsql,-1)
Et éventuellement mettre la date entre # si TableTotal.mois est de type date...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le vendredi 15 juin 2007 à 15:32:02
En fait il me met type incompatible pour cette ligne
StrSql = StrSql + "AND ((TableTotal.mois)= '" + T1 + "')

J’ai vérifié mes tables et le mois et bien du type date
Et pour les # j’avais déjà essayé mais ca marche pas !!!

PS : j’ai changé « DoCmd RUNSQL (Strsql,-1) » en DoCmd.RunSQL StrSql
Parce qu il voulait pas prendre la 1ère
Répondre à lord_in

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 15 juin 2007 à 15:43:48
le mois et bien du type date
Mais que contient-il : un mois ou une date ?
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le vendredi 15 juin 2007 à 15:47:24
il contient une date sous forme ex 01/05/2006
et mois c'est le nom du champ
Répondre à lord_in

5


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 15 juin 2007 à 15:49:24
StrSql = StrSql + "AND ((TableTotal.mois)= #" + T1 + "#) ;"
???
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le vendredi 15 juin 2007 à 16:04:24
tjrs le meme problème !!!!
Répondre à lord_in

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 15 juin 2007 à 16:11:42
MsgBox T1
???
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le vendredi 15 juin 2007 à 16:18:57
bizarre
il me retourne la valeur 31/01/1900
alors que dans mon datett j'ai tapé 01/04/2006
Répondre à lord_in

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 15 juin 2007 à 16:45:35
Oui, mais tu transformes ta saisie T en numérique et non en date !

Il faudrait plutôt faire T=cdate(datett.value), ça devrait aller mieux...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le mardi 19 juin 2007 à 12:28:31
salut blux

t'as raison pour Cdate
mais le problème c'est il ne prend tjrs pas la valeur de T1
il me met erreur de syntaxe sachant que T1= 01/05/2006
Répondre à lord_in

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 19 juin 2007 à 13:23:34
erreur de syntaxe sur quelle ligne ?
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le mardi 19 juin 2007 à 13:44:07
sur celle la
StrSql = StrSql + "AND ((TableTotal.mois)= #" + T1 + "#)
au niveau de T1
Répondre à lord_in

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 19 juin 2007 à 14:02:11
C'est normal, T1 est une variable DATE, elle ne peut pas se concaténer avec une chaine...

t1 = cstr(cdate(datett.value)) ?
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le mardi 19 juin 2007 à 15:02:13
il me met tjrs incompatibilté du type dans l'expression
Répondre à lord_in

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le mardi 19 juin 2007 à 15:49:00
J’ai trouvé le cours du problème
Je te rappelle mon code
Private Function sliptdesforecastsparmoissurlestable2()
Dim StrSql As Variant
Dim T As Date
Dim T1 As Date

T = CDate(Datett.Value)
T1 = DateAdd("m", 1, T)
T2 = CStr(CDate(T1))

StrSql = "INSERT INTO Table2tampon ( Material, [material description], [zone], mois, forecasts ) "
StrSql = StrSql + "SELECT TableTotal.Material, TableTotal.[material description], TableTotal.zone, TableTotal.mois, TableTotal.forecasts FROM TableTotal WHERE (((TableTotal.zone)=zonett.value)AND((TableTotal.mois)= #" & T1 & "#)) ;"

DoCmd.RunSQL StrSql

End Function

La syntaxe est correcte
Le prob c’est moi je tape 01/04/2006 (1eravril 2006)
Et donc T1= 01/05/2006

Alors pour que ca marche il faut que T1 soit sous cette forme T1= #05/01/2006#
Voilà
Alors si t’as une solution stp je suis preneur
Merci d’avance
Répondre à lord_in

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 19 juin 2007 à 16:08:02
AND((TableTotal.mois)= #" & T2 & "#)) ;" ???
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le mardi 19 juin 2007 à 16:28:49
Excuse moi c t bien T2
Et T2= 05/01/2006 ce qui est bon
Mais pour que ca marche
Il faut que osit sous la forme T2= #05/01/2006#
(je l’ai pas mis tt a l’heure mais j’ai déclaré T2 as variant)
J’ai essayé de mettre
T3 = #T2# (mais il n’accepte pas )
En fait je voulais mettre le T3 dans l’instruction SQL
Répondre à lord_in

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 19 juin 2007 à 16:48:11
Je teste chez moi et je te tiens au courant (sûrement demain)...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lord_in, le mardi 19 juin 2007 à 16:50:03
merci
Répondre à lord_in

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le mardi 19 juin 2007 à 17:07:01
Bon, j'ai trouvé (je le savais, mais j'avais oublié), en SQL il faut que les dates soient au format anglais, donc un truc comme ça peut marcher (à adapter chez toi) :
Private Sub Bout_Cher_Click()
Dim StrSql As String
Dim aa As String
Dim mm As String
Dim jj As String
Dim T As String
jj = Left(Chx_date.Value, 2)
mm = Mid(Chx_date.Value, 4, 2)
aa = Right(Chx_date.Value, 4)
T = mm + "/" + jj + "/" + aa
MsgBox T
StrSql = "UPDATE table_date SET toto = 'ttut' where jour = #" & T & "#;"
MsgBox StrSql
DoCmd.RunSQL (StrSql)
End Sub
--
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 lord_in, le vendredi 29 juin 2007 à 16:10:55
merci blux (c bon j'ai reussi )

excuse pour le retard lol
Répondre à lord_in
Logiciels pertinents trouvés dans les téléchargements
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger OpenOffice.org 2.4.1OpenOffice.org - OpenOffice est une suite bureautique complète entièrement gratuite, compatible avec la suite Microsoft Office. Elle...Catégorie: Suite bureautique
Licence: Open Source
Télécharger PowerISO 4.2PowerISO - PowerISO est un outil de gestion d'images de CD et DVD, capable d'ouvrir, d'extraire, de créer, d'éditer, de compresser et...Catégorie: Gravure
Licence: Demo
Télécharger Visual Basic 6 Runtime (VB6 DLL) 6.0 SP5Visual Basic 6 Runtime (VB6 DLL) - Le Runtime Visual Basic 6 contient l'ensemble des librairies (DLL) nécessaires pour exécuter des programmes écrits en...Catégorie: Librairies (DLL)
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [access] Variable dans une requete sql »