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

VBA Access Discussion :

sql avec paramêtre une valeur definit en vba [AC-2016]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Gabrieel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut sql avec paramêtre une valeur definit en vba
    Bonjour

    je bute sur un probleme : soit une requete ajout dont un des champs est normalement le produit d'une table avec une de mes variables VBA malheureusement ça plante car
    Erreur d'exécution '3346':
    le nombre de valeurs de la requête doit coincider avec le nombre de champs de destination.
    il va sans dire qu'il n'y a pas un nombre de champs qui manque vraiment et quand je remplace ma variable par le nombre (0,78) je n'ai pas de pb

    voici le code sur le sql 2 j'ai mis la donnée en valeur
    dans le sql 2 j'ai mis la variable et la ça plante

    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
    Public Sub CalculDelaiSTK(ByVal dDeb As Date, ByVal dFin As Date)
     
        DoCmd.SetWarnings False
        Dim sql1, sql2, sql3 As String
        Dim dis As Variant
        dis = MsgBox(dDeb & " - " & dFin)
     
        'Efface la table calcul stockage
        sql1 = "delete * from tCalculStockage"
     
        'Rajoute les données par type fichier: d'abord le PVE ensuite le ZUVI
        sql2 = "INSERT INTO tCalculStockage ( [Sur Site], TypeAFFAIRE, [TGC?], CHASSIS, [Nb Chassis], PROPRIETAIRE, [DESTINATION FINALE], [DESTINATION TRANSPORT], DateIn, DateOut, DtDebStkTGC, DtDeb0, DtFin0, STK_RBL, STK_TGC, V_RBL, V_TGC ) SELECT ""Oui"" AS [Sur Site], Nz([AFFAIRE],""RBL Réseau"") AS TypeAFFAIRE, EstTGC([TypeAFFAIRE]) AS [TGC?], rEncours.CHASSIS, 1 AS [Nb Chassis], rEncours.PROPRIETAIRE, rEncours.[DESTINATION FINALE], rEncours.[DESTINATION TRANSPORT], rEncours.DateIn, CDate(0) AS DateOut, IIf([TGC?]=True,IIf([DateIn]<=#8/31/2017#,#8/31/2017#+1,[DateIn])+45,0) AS DtDebStkTGC, '" & dDeb & "'  AS DtDeb0, '" & dFin & "'  AS DtFin0, DelaiStkRBLMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockRBL, DelaiStkTGCMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockTGC, 0.78*[StockRBL] AS ValeurStckRBL, 0.78*[StockTGC] AS ValeurStckTGC FROM rEncours WHERE (((rEncours.[CODE CENTRE])=""cim0002S"")) ORDER BY rEncours.DateIn;"
        sql3 = "INSERT INTO tCalculStockage ( [Sur Site], TypeAFFAIRE, [TGC?], CHASSIS, [Nb Chassis], PROPRIETAIRE, [DESTINATION FINALE], [DESTINATION TRANSPORT], DateIn, DateOut, DtDebStkTGC, DtDeb0, DtFin0, STK_RBL, STK_TGC, V_RBL, V_TGC ) SELECT ""Non"" AS [Sur Site], Nz([AFFAIRES],""RBL Réseau"") AS TypeAFFAIRE, EstTGC([TypeAFFAIRE]) AS [TGC?], rSortie.chassis AS CHASSIS, 1 AS [Nb Chassis], rSortie.propriétaire AS PROPRIETAIRE, rSortie.[dest finale] AS [DESTINATION FINALE], rSortie.[dest tpt] AS [DESTINATION TRANSPORT], rSortie.DateIn, rSortie.DtSortie AS DateOut, IIf([TGC?]=True,IIf([DateIn]<=#8/31/2017#,#8/31/2017#+1,[DateIn])+45,0) AS DtDebStkTGC, '" & dDeb & "'  AS DtDeb0, '" & dFin & " '  AS DtFin0, DelaiStkRBLMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockRBL, DelaiStkTGCMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockTGC, " & lgPrixStockRBL & "*[StockRBL] AS ValeurStckRBL, " & lgPrixStockRBL & "*[StockTGC] AS ValeurStckTGC FROM rSortie ORDER BY rSortie.DateIn;"
        DoCmd.RunSQL sql1
        DoCmd.RunSQL sql2
        DoCmd.RunSQL sql3
     
        'reactive les alerte
        DoCmd.SetWarnings True
     
        'Affiche les requête
        DoCmd.OpenQuery "rCalculStockage_RBL"
        DoCmd.OpenQuery "rCalculStockage_TGC"
     
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    C'est un problème de "," vu que la valeur que tu insères dans le code SQL a des décimaux.
    Il faut utiliser la fonction Replace pour remplacer le virgule par un point.

    Si tu as le variable var, il faut mettre Cordialement.

  3. #3
    Membre confirmé Avatar de Gabrieel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    Bonjour

    merci de ton retour rapide j'ai modifié ma ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        sql3 = "INSERT INTO tCalculStockage ( [Sur Site], TypeAFFAIRE, [TGC?], CHASSIS, [Nb Chassis], PROPRIETAIRE, [DESTINATION FINALE], [DESTINATION TRANSPORT], DateIn, DateOut, DtDebStkTGC, DtDeb0, DtFin0, STK_RBL, STK_TGC, V_RBL, V_TGC ) SELECT ""Non"" AS [Sur Site], Nz([AFFAIRES],""RBL Réseau"") AS TypeAFFAIRE, EstTGC([TypeAFFAIRE]) AS [TGC?], rSortie.chassis AS CHASSIS, 1 AS [Nb Chassis], rSortie.propriétaire AS PROPRIETAIRE, rSortie.[dest finale] AS [DESTINATION FINALE], rSortie.[dest tpt] AS [DESTINATION TRANSPORT], rSortie.DateIn, rSortie.DtSortie AS DateOut, IIf([TGC?]=True,IIf([DateIn]<=#8/31/2017#,#8/31/2017#+1,[DateIn])+45,0) AS DtDebStkTGC, '" & dDeb & "'  AS DtDeb0, '" & dFin & " '  AS DtFin0, DelaiStkRBLMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockRBL, DelaiStkTGCMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockTGC, " & _
        Replace(vPrixStockRBL, ",", ".") & "*[StockRBL] AS ValeurStckRBL, " & Replace(vPrixStockRBL, ", ", ".") & "*[StockTGC] AS ValeurStckTGC FROM rSortie ORDER BY rSortie.DateIn;"
    mais même resultat

  4. #4
    Membre confirmé Avatar de Gabrieel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    pourtant quand je texte la syntaxe via l'executeur le sql m'a l'air propre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ? "INSERT INTO tCalculStockage ( [Sur Site], TypeAFFAIRE, [TGC?], CHASSIS, [Nb Chassis], PROPRIETAIRE, [DESTINATION FINALE], [DESTINATION TRANSPORT], DateIn, DateOut, DtDebStkTGC, DtDeb0, DtFin0, STK_RBL, STK_TGC, V_RBL, V_TGC ) SELECT ""Non"" AS [Sur Site], Nz([AFFAIRES],""RBL Réseau"") AS TypeAFFAIRE, EstTGC([TypeAFFAIRE]) AS [TGC?], rSortie.chassis AS CHASSIS, 1 AS [Nb Chassis], rSortie.propriétaire AS PROPRIETAIRE, rSortie.[dest finale] AS [DESTINATION FINALE], rSortie.[dest tpt] AS [DESTINATION TRANSPORT], rSortie.DateIn, rSortie.DtSortie AS DateOut, IIf([TGC?]=True,IIf([DateIn]<=#8/31/2017#,#8/31/2017#+1,[DateIn])+45,0) AS DtDebStkTGC, '" & dDeb & "'  AS DtDeb0, '" & dFin & " '  AS DtFin0, DelaiStkRBLMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockRBL, DelaiStkTGCMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockTGC, " & _
        Replace(vPrixStockRBL, ",", ".") & "*[StockRBL] AS ValeurStckRBL, " & Replace(vPrixStockRBL, ", ", ".") & "*[StockTGC] AS ValeurStckTGC FROM rSortie ORDER BY rSortie.DateIn;" 
    INSERT INTO tCalculStockage ( [Sur Site], TypeAFFAIRE, [TGC?], CHASSIS, [Nb Chassis], PROPRIETAIRE, [DESTINATION FINALE], [DESTINATION TRANSPORT], DateIn, DateOut, DtDebStkTGC, DtDeb0, DtFin0, STK_RBL, STK_TGC, V_RBL, V_TGC ) SELECT "Non" AS [Sur Site], Nz([AFFAIRES],"RBL Réseau") AS TypeAFFAIRE, EstTGC([TypeAFFAIRE]) AS [TGC?], rSortie.chassis AS CHASSIS, 1 AS [Nb Chassis], rSortie.propriétaire AS PROPRIETAIRE, rSortie.[dest finale] AS [DESTINATION FINALE], rSortie.[dest tpt] AS [DESTINATION TRANSPORT], rSortie.DateIn, rSortie.DtSortie AS DateOut, IIf([TGC?]=True,IIf([DateIn]<=#8/31/2017#,#8/31/2017#+1,[DateIn])+45,0) AS DtDebStkTGC, ''  AS DtDeb0, ' '  AS DtFin0, DelaiStkRBLMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockRBL, DelaiStkTGCMois([DtDeb0],[DtFin0],[DtDebStkTGC],[DateIn],[DateOut]) AS StockTGC, 0.78*[StockRBL] AS ValeurStckRBL, 0,78*[StockTGC] AS ValeurStckTGC FROM rSortie ORDER BY rSortie.DateIn;

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Et si tu fais un Debug.Print au lieu de "?" est-ce que tu as une expression SQL correcte qui peut être exécutée dans une requête ?

  6. #6
    Membre confirmé Avatar de Gabrieel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Et si tu fais un Debug.Print au lieu de "?" est-ce que tu as une expression SQL correcte qui peut être exécutée dans une requête ?
    bonjour

    j'ai comme message "Erreur de compilation: Argument non facultatif"

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

Discussions similaires

  1. [XL-2007] Comment paramétrer une valeur absolue avec décimale
    Par Patto33 dans le forum Excel
    Réponses: 8
    Dernier message: 06/04/2016, 08h44
  2. Réponses: 0
    Dernier message: 26/03/2014, 03h34
  3. Réponses: 4
    Dernier message: 02/11/2005, 18h58
  4. Réponses: 3
    Dernier message: 10/08/2005, 11h11
  5. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33

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