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

Access Discussion :

convertir SQL en VBA


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 39
    Points : 19
    Points
    19
    Par défaut convertir SQL en VBA
    Bonjour à tous,

    Je souhaiterais convertir une requete MAJ en vba, j'ai essayé de copier le sql dans un module, mais il y a des erreurs de syntaxe.

    Auriez vous une solution svp.

    UPDATE TABLE_ROULAND_D SET TABLE_ROULAND_D.DEPART = [Formulaires]![ROULAND_DAVID]![DEPART_J], TABLE_ROULAND_D.Heures_centiemes = CDate([Formulaires]![ROULAND_DAVID]![DEPART_J])*24-CDate([ARRIVEE])*24-CDate([PAUSE])*24, TABLE_ROULAND_D.HEURE_TRAVAIL = CDate([Formulaires]![ROULAND_DAVID]![DEPART_J])-CDate([ARRIVEE])-CDate([PAUSE]), TABLE_ROULAND_D.Nbr_de_dimanche = IIf(Date()=7,1,0)
    WHERE (((TABLE_ROULAND_D.[Date_])=Forms!ROULAND_DAVID!DATE_JOUR));
    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Bonjour,

    Peut-on voir le code VBA, puisque c'est là qu'il y a l'erreur ?

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre à l'essai
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    oui bien sûr

    Private Sub BOUTON_DEPART_Click() 'DEPART_JOUR
    Dim base As Database: Dim requete As String, k As Integer
    Set base = Application.CurrentDb
    Dim ligne As Recordset


    If (Me.SITE <> "") Then
    DoCmd.Requery

    Dim DEPART As Date
    Dim nbMin
    Dim MinFin
    Dim HeuFin
    Dim SecFin
    DEPART = Time()

    nbMin = Minute(DEPART) Mod 15
    MinFin = Minute(DEPART) - nbMin
    HeuFin = Hour(DEPART)
    SecFin = Second(0)
    Me.DEPART_J = Format(CDate(HeuFin & ":" & MinFin & ":" & SecFin), "h:mm:ss")

    requete = "UPDATE TABLE_ROULAND_D SET TABLE_ROULAND_D.DEPART = [Formulaires]![ROULAND_DAVID]![DEPART_J], TABLE_ROULAND_D.Heures_centiemes = CDate([Formulaires]![ROULAND_DAVID]![DEPART_J])*24-CDate([ARRIVEE])*24-CDate([PAUSE])*24, TABLE_ROULAND_D.HEURE_TRAVAIL = CDate([Formulaires]![ROULAND_DAVID]![DEPART_J])-CDate([ARRIVEE])-CDate([PAUSE]), TABLE_ROULAND_D.Nbr_de_dimanche = IIf(Date()=7,1,0)"" WHERE (((TABLE_ROULAND_D.[Date_])=Forms!ROULAND_DAVID!DATE_JOUR));"

    base.Execute requete


    'DoCmd.OpenQuery "Requête_MAJ_DEPART_ROULAND_D_JOUR", , acReadOnly
    'DoCmd.OpenQuery "Requête_MAJ_DEPART_ROULAND_D_JOUR_HISTORIQUE", , acReadOnly


    'DoCmd.OpenQuery "Requête_AJOUT_POINTAGE_ROULAND_D_JOUR", , acReadOnly


    'requete = "DELETE FROM TABLE_ROULAND_D"
    'base.Execute requete

    'DoCmd.Close

    Else
    MsgBox "Vous devez choisir un site de travail avant de pointer", vbCritical, "ATTENTION"
    End If


    End Sub

  4. #4
    Membre à l'essai
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    VOICI LE CODE ERREUR

    Nom : Capture.JPG
Affichages : 190
Taille : 24,6 KoNom : Capture.JPG
Affichages : 190
Taille : 24,6 Ko

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    C'est une erreur de syntaxe SQL ?

    Est-ce que [Formulaires]![ROULAND_DAVID] correspond à Me ?

    Si c'est le cas pourquoi ne pas utiliser directement Me.DEPART_J et autre dans la requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...TABLE_ROULAND_D.DEPART = #" & format(me.DEPART_J.value, "dd/mm/yyyy") & "#, TABLE_ROULAND_D.Heures_centiemes...
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Membre à l'essai
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Oui, je teste maintenant

    Merci

  7. #7
    Membre à l'essai
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    voila ce que j'ai fait mais cela ne fonctionne pas

    requete = "UPDATE TABLE_ROULAND_D SET TABLE_ROULAND_D.DEPART = #" & Format(Me.DEPART_J.Value, "dd/mm/yyyy") & "#, TABLE_ROULAND_D.Heures_centiemes = CDate( #" & Format(Me.DEPART_J.Value, "dd/mm/yyyy") & "#)*24-CDate([ARRIVEE])*24-CDate([PAUSE])*24, TABLE_ROULAND_D.HEURE_TRAVAIL = CDate( #" & Format(Me.DEPART_J.Value, "dd/mm/yyyy") & "#)-CDate([ARRIVEE])-CDate([PAUSE]), TABLE_ROULAND_D.Nbr_de_dimanche = IIf(Date()=7,1,0)"" WHERE (((TABLE_ROULAND_D.[Date_])= #" & Format(Me.DATE_JOUR.Value, "dd/mm/yyyy") & "#));"

  8. #8
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 419
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    en revanche je ne comprends pas IIf(Date()=7,1,0)
    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
    Sub test()
    requete = "UPDATE TABLE_ROULAND_D " & _
    "SET DEPART =" &  TrouveTypeSql(Me.DEPART_J.Value) & "," & _ 
        "Heures_centiemes =" & TrouveTypeSql((CDate(Me.DEPART_J.Value)*24)-(CDate([PAUSE])*24)) & "," &  _
        "HEURE_TRAVAIL =" & TrouveTypeSql(CDate(Me.DEPART_J.Value)-CDate([ARRIVEE])-CDate([PAUSE])) & "," & _ 
        "Nbr_de_dimanche = IIf(Date()=7,1,0)"  & - 
        "WHERE ((([Date_])= " & TrouveTypeSql(Me.DATE_JOUR.Value) & ";"
    end sub
     
     
    Function TrouveTypeSql(V)
    TrouveTypeSql = Trim("" & V)
    If Trim("" & TrouveTypeSql) = "" Then TrouveTypeSql = "Null": Exit Function
    If IsDate(TrouveTypeSql) = True And InStr(TrouveTypeSql, "/") <> 0 And InStr(TrouveTypeSql, ":") <> 0 Then TrouveTypeSql = "#" & Format(TrouveTypeSql, "yyyy-mm-dd hh:mm") & "#": Exit Function
    If IsDate(TrouveTypeSql) = True And InStr(TrouveTypeSql, "/") <> 0 Then TrouveTypeSql = "#" & Format(TrouveTypeSql, "yyyy-mm-dd") & "#": Exit Function
    If IsNumeric(Replace(TrouveTypeSql, ".", ",")) = True Then TrouveTypeSql = Replace(TrouveTypeSql, ",", "."): Exit Function
    TrouveTypeSql = "'" & Replace(TrouveTypeSql, "'", "''") & "'"
    End Function

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Citation Envoyé par olive323 Voir le message
    VOICI LE CODE ERREUR

    Nom : Capture.JPG
Affichages : 190
Taille : 24,6 KoNom : Capture.JPG
Affichages : 190
Taille : 24,6 Ko
    Je n'avais pas vu ce message.

    Effectivement le date()=7 est étrange. Je pense que tu stockes des heures dans tes champs dates, tu as mis un format pour n'afficher que l'heure et tu pense que ça va marcher. C'est un peut plus complexe que ça.

    Un champ date stocke TOUJOURS un double, quelque soit ce qu'il y a à l'affichage : date, date heure, heure... c'est toujours un double composé de la partie date (les entiers) et la partie minute, seconde... (les décimales).

    Calculer des heures à partir de ce type de colonne doit ce faire suivant une méthode établie.
    Regarde ceci avant de stocker n'importe quoi dans ta table.

    https://access.developpez.com/faq/?p...fHeureCentieme

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  10. #10
    Membre à l'essai
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Merci pour votre retour,

    c'est pour mettre un 1 si le jour est un dimanche ( EDIT Loufab : NON NON ET NON !!! DATE()=7 teste si la date du jour est le 06/01/1900)


    J'ai testé le code de Thumb mais il se mets en rouge

  11. #11
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 419
    Points : 2 178
    Points
    2 178
    Par défaut
    Le dimanche est le premier jour de la semaine chez les américains qui on développer le VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ilf(Weekday(date)=1,1,0)

  12. #12
    Membre à l'essai
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Merci vive le dimanche

    Il n'y a pas plus simple pour faire une mise a jour d'un champ de la table en vba?

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Bonjour,

    Je me suis permis de corriger une fausse affirmation dans ton message précédent. Pour les lecteurs c'est mieux.

    Date()=7 en clair c'est : Est-ce que la date du jour est le 06/01/1900 ?

    Le premier conseil qu'on peut donner à quelqu'un qui débute c'est de bien savoir ce qu'il utilise. Ne pas préjuger de ce que ça fait mais se référer à la doc ou tester ce que ça renvoi (la fenêtre d'Exécution de VBE est, entre autre, faites pour cela.

    3 techniques pour la mise à jour d'un champ en vBA

    1) le Sql, comme tu fais actuellement,
    2) DAO/ADO 2 bibliothèques d'accès aux données (plus simple ? peut-être pas)
    3) mettre à jour directement le formulaire, si tant est qu'il soit ouvert.

    A noter qu'entre SQL, DAO et ADO il y a une raison technique à utiliser l'un des 3. Même si pour les cas basiques les 3 peuvent être utilisés.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. [AC-2013] Convertir requete SQL en VBA
    Par cgalindo dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/03/2020, 12h05
  2. [AC-2003] Executer/convertir SQL Oracle en VBA
    Par Maude_84 dans le forum Access
    Réponses: 3
    Dernier message: 06/11/2013, 10h57
  3. Conversion d'une requête SQL en VBA
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/10/2004, 17h33
  4. [SQL][MACRO VBA]Pb de syntaxe
    Par Stef.proxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/08/2004, 09h11
  5. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

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