IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Query SQL VBA (Insert INTO) avec Conditions en variable (Date) [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut Query SQL VBA (Insert INTO) avec Conditions en variable (Date)
    Bonjour à tous,

    Voila aprés plusieurs essais et aprés plusieurs jours de recherche, je me tourne une fois de plus vers vous.
    Je rencontre un probléme de concernant mon CODE SQL voir ci dessous:

    Comme d'habitude je créer ma query avec l'assistant access puis je transpoe en SQL pour y inclure mes variables (rien d'extraordinaire), seulement mes clause "where" déconne je ne sais pas pour quelles raison. la query ne me génére rien du tout ou la totalité des enregistrement...

    Je deviens fou à force de retourner ce code dans tout les sens, est ce que quelqu'un pourrait me dire si quelque chose vous semble étrange???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Private Sub Run_ADD_New_Processing_Click()
     
    Dim SQL As String
     
    Dim Date_deb_inf As Date
    Dim Date_deb_sup As Date
    Dim Date_fin_inf As Date
    Dim Date_fin_sup As Date
     
    If IsNull(Forms![142 NEW_PROCESSING]!Txtbx_Date_deb_inf.Value) Then
    Date_deb_inf = "01/01/1900"
    Else
    Date_deb_inf = Forms![142 NEW_PROCESSING]!Txtbx_Date_deb_inf.Value
    End If
     
    If IsNull(Forms![142 NEW_PROCESSING]!Txtbx_Date_deb_sup.Value) Then
    Date_deb_sup = "31/12/3000"
    Else
    Date_deb_sup = Forms![142 NEW_PROCESSING]!Txtbx_Date_deb_sup.Value
    End If
     
    If IsNull(Forms![142 NEW_PROCESSING]!Txtbx_Date_fin_inf.Value) Then
    Date_fin_inf = "01/01/1900"
    Else
    Date_fin_inf = Forms![142 NEW_PROCESSING]!Txtbx_Date_fin_inf.Value
    End If
     
    If IsNull(Forms![142 NEW_PROCESSING]!Txtbx_Date_fin_sup.Value) Then
    Date_fin_sup = "31/12/3000"
    Else
    Date_fin_sup = Forms![142 NEW_PROCESSING]!Txtbx_Date_fin_sup.Value
    End If
     
    SQL = "INSERT INTO M_DATA_MANU_PROCESSING ( Pstrav, Article, Désignation_article, Origbes, Stat, Qté_A_venir, Début, Fin, Statut_ord_glob, Date_MAJ ) SELECT M_DATA_CM07.Pstrav, M_DATA_CM07.Article, M_DATA_CM07.Désignation_article, M_DATA_CM07.Origbes, M_DATA_CM07.Stat, M_DATA_CM07.Qté_A_venir, M_DATA_CM07.Début, M_DATA_CM07.Fin, M_DATA_CM07.Statut_ord_glob, M_DATA_CM07.Date_MAJ FROM M_DATA_CM07 INNER JOIN M_DATA_WP_PROCESSING_SELECT ON M_DATA_CM07.Pstrav = M_DATA_WP_PROCESSING_SELECT.[Poste de travail] WHERE (((M_DATA_WP_PROCESSING_SELECT.[Select])=True) AND ((M_DATA_CM07.Début)>" & CDate(Date_deb_inf) & ") And ((M_DATA_CM07.Début)<" & CDate(Date_deb_sup) & ") AND ((M_DATA_CM07.Fin)>" & CDate(Date_fin_inf) & ") And ((M_DATA_CM07.Fin)<" & CDate(Date_fin_sup) & "));"
     
    DoCmd.RunSQL SQL
     
     
    DoCmd.Close
    End Sub

    Un grand Merci d'avance

    Alex,

  2. #2
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    quel est le SGBD dans lequel tu exécute ta requête SQL que tu génère? MySQL, SQL server, ORACLE, autre?
    n'est-ca pas un PB de format "date",
    je ne connais pas access mais n'y a t'il pas une fonction du style DATE_FORMAT(date, '%d/%m/%Y %Hh%imin%ss') ou dans le genre pour préciser le format de date

    as tu un message d'erreur explicite? si oui, le poster

  3. #3
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    Hello,

    Il s'agit d'un type mySQL utilisé dans Access. le format de date ne doit pas etre un probléme vu que j'initialise mes variables DATE et (au cas ou) je reconverti mes variables en date avec la fonction "cdate()"

    Pas de message d'erreur la query s'execute sans problémes. Mais ma clause WHERE n'est apparement pas prise en compte dans l'exécution du code (pour mes variables uniquement) ???

    La clause: M_DATA_WP_PROCESSING_SELECT.[Select])=True est bien prise en compte.

    Merci pour ton aide,

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour Deustalos,

    Le format de la date doit être mm/jj/aaaa soit US.

    Le Where clause doit inclure "#" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "AND ((M_DATA_CM07.Début)>#" & Format$(Date_deb_inf, "mm-dd-yyyy") & "#)..."
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    Bonjour Robert,


    Merci pour ta réponse, par contre je ne connais pas bien la fonction format$() et cette dernière ne marche apparemment pas bien dans mon code. Je ne trouve pas beaucoup de tuto sur cette fonction.
    Je vais essayer en reconstruisant la date par éléments.

    En tout cas merci pour la solution, je vous tiens au courant des résultats et posterai le résultat avant de passer en résolu.

    Merci

    Deust

  6. #6
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,

    Je pense que c'est une erreur de frappe de Robert. Essaye avec "format" et non "format$".

    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  7. #7
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    Bonjour à tous,

    Bon après plusieurs essais cela ne marche toujours pas...
    je n'ai pas de message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "INSERT INTO M_DATA_MANU_PROCESSING ( Pstrav, Article, Désignation_article, Origbes, Stat, Qté_A_venir, Début, Fin, Statut_ord_glob, Date_MAJ ) SELECT M_DATA_CM07.Pstrav, M_DATA_CM07.Article, M_DATA_CM07.Désignation_article, M_DATA_CM07.Origbes, M_DATA_CM07.Stat, M_DATA_CM07.Qté_A_venir, M_DATA_CM07.Début, M_DATA_CM07.Fin, M_DATA_CM07.Statut_ord_glob, M_DATA_CM07.Date_MAJ FROM M_DATA_CM07 INNER JOIN M_DATA_WP_PROCESSING_SELECT ON M_DATA_CM07.Pstrav = M_DATA_WP_PROCESSING_SELECT.[Poste de travail] WHERE (((M_DATA_WP_PROCESSING_SELECT.[Select])=True) AND (M_DATA_CM07.Début > #" & Format(Date_deb_inf, "mm/dd/yyyy") & "#) AND (M_DATA_CM07.Début < #" & Format(Date_deb_sup, "mm/dd/yyyy") & "#) AND (M_DATA_CM07.Fin > #" & Format(Date_fin_inf, "mm/dd/yyyy") & "#) And (M_DATA_CM07.Fin < #" & Format(Date_fin_sup, "mm/dd/yyyy") & "#))"
    Il n'y aurait-il pas de probléme de format entre le champ M_DATA_CM07.Début de mon formulaire en type date et la fonction Format(Date_deb_sup, "mm/dd/yyyy") qui doit renvoyer un champs de type string?

    le resultat retourné par la requete n'est malheureusement pas conforme aux critères.

    Quelqu'un aurait une idée?


    Dans le doute je vous poste l'enssemble du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Private Sub Run_ADD_New_Processing_Click()
     
    DoCmd.OpenQuery ("142_R_ADD_NEW_PROCESSING")
    Forms![14 F_DEVERSEMENT_TRAITEMENT].Refresh
     
    Dim SQL As String
     
    Dim Date_deb_inf As Date
    Dim Date_deb_sup As Date
    Dim Date_fin_inf As Date
    Dim Date_fin_sup As Date
     
    If IsNull(Forms![142 NEW_PROCESSING]!Txtbx_Date_deb_inf.Value) Then
    Date_deb_inf = "01/01/1900"
    Else
    Date_deb_inf = Forms![142 NEW_PROCESSING]!Txtbx_Date_deb_inf.Value
    End If
     
    If IsNull(Forms![142 NEW_PROCESSING]!Txtbx_Date_deb_sup.Value) Then
    Date_deb_sup = "31/12/3000"
    Else
    Date_deb_sup = Forms![142 NEW_PROCESSING]!Txtbx_Date_deb_sup.Value
    End If
     
    If IsNull(Forms![142 NEW_PROCESSING]!Txtbx_Date_fin_inf.Value) Then
    Date_fin_inf = "01/01/1900"
    Else
    Date_fin_inf = Forms![142 NEW_PROCESSING]!Txtbx_Date_fin_inf.Value
    End If
     
    If IsNull(Forms![142 NEW_PROCESSING]!Txtbx_Date_fin_sup.Value) Then
    Date_fin_sup = "31/12/3000"
    Else
    Date_fin_sup = Forms![142 NEW_PROCESSING]!Txtbx_Date_fin_sup.Value
    End If
     
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
     
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("SELECT max(N°_PROCESSING) as max_ID FROM M_DATA_HEADING_PROCESSING")
    LAST_N°_PROCESSING = oRst.Fields("max_ID").Value
     
    SQL = "INSERT INTO M_DATA_MANU_PROCESSING ( Pstrav, Article, Désignation_article, Origbes, Stat, Qté_A_venir, Début, Fin, Statut_ord_glob, Date_MAJ ) SELECT M_DATA_CM07.Pstrav, M_DATA_CM07.Article, M_DATA_CM07.Désignation_article, M_DATA_CM07.Origbes, M_DATA_CM07.Stat, M_DATA_CM07.Qté_A_venir, M_DATA_CM07.Début, M_DATA_CM07.Fin, M_DATA_CM07.Statut_ord_glob, M_DATA_CM07.Date_MAJ FROM M_DATA_CM07 INNER JOIN M_DATA_WP_PROCESSING_SELECT ON M_DATA_CM07.Pstrav = M_DATA_WP_PROCESSING_SELECT.[Poste de travail] WHERE (((M_DATA_WP_PROCESSING_SELECT.[Select])=True) AND (M_DATA_CM07.Début > #" & Format(Date_deb_inf, "mm/dd/yyyy") & "#) AND (M_DATA_CM07.Début < #" & Format(Date_deb_sup, "mm/dd/yyyy") & "#) AND (M_DATA_CM07.Fin > #" & Format(Date_fin_inf, "mm/dd/yyyy") & "#) And (M_DATA_CM07.Fin < #" & Format(Date_fin_sup, "mm/dd/yyyy") & "#))"
    DoCmd.RunSQL SQL
     
     
    oRst.Close
    oDb.Close
     
    Set oRst = Nothing
    Set oDb = Nothing
    DoCmd.Close
    End Sub

    Encore un grand Merci pour votre aide.

    Alex

  8. #8
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    Bonjour à tous,

    J'ai trouver le problème, il s'agissait d'une erreur simple de champs aucun rapport avec le code SQL suite à vos conseilles.

    Je passe donc en résolut.

    Merci encore pour votre aide, je passe en résolut.

    A bientot

    Alexis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insert into avec condition
    Par xavioche77 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/04/2010, 23h56
  2. insert into avec condition
    Par xavioche77 dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/04/2010, 12h33
  3. Insert into avec condition
    Par tibss dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/04/2009, 10h40
  4. requete Insert into avec conditions
    Par alexkickstand dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/07/2008, 17h38
  5. INSERT INTO avec conditions
    Par theoffss dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/05/2008, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo