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 :

[vba access] Pb d'execution requête SQL (requête simple)


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Par défaut [vba access] Pb d'execution requête SQL (requête simple)
    Bonjour amis developpeurs!

    J'ai fais un code vba qui me permet de faire une requête trés simple.

    Cette requête consiste à prendre 2 champs d'une table et les insérer dans une nouvelle table.

    J'ai ce code-ci mais access me trouve une erreur...Peut-être saurai-vous m'aiguiller?
    Voici mon 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
    Private Sub Commande26_Click()
    Dim sSQL As String
    Dim db As DAO.Database
    Dim myrst As DAO.Recordset
    
    'tu definis quelle est la BD étudiée, c'est celle qui est courante..
    Set db = CurrentDb
    
    'nom de ta table
    maTable = "2004_airbus_Usage_01"
    monAutreTable = "SIGLUM VIDE"
    
    'creation de la table
    DoCmd.RunSQL "CREATE TABLE [SIGLUM VIDE] (HostEmail String, Sigle String);"
    
    'requete sql (le order by, tu 'nes pas obligé, c'est juste pr trier
    sSQL = "SELECT HostEmail,Sigle from " & maTable & " ORDER BY HostEmail "
    
    'tu definis ton recordset qui va contenir le resultat de la requete
    Set myrst = db.OpenRecordset(sSQL)
    
    'si le recordset n'est pas vide
    If Not myrst.EOF Then
    ' tant qu'il n'est pas vide
    Do While Not myrst.EOF
    
    'recuperation des valeurs pour tes 2 champs
    sHostEmail = myrst.Fields("HostEmail").Value
    sSigle = myrst.Fields("Sigle").Value
    
    'sFunction = myrst.Fields("SEG_function").Value
    
    'requete d'insertion
    sSQLInsert = "INSERT INTO [SIGLUM VIDE] ([HostEmail], [Sigle], ) VALUES ( '" & sHostEmail & "' , '" & sSigle & "' )"
    
    'tu envoies l'execution de la requête insert
    
    dbBase.Execute sSQLInsert, dbFailOnError
    
    'tu passes a l'enregistrement suivant
    myrst.MoveNext
    
    Loop
    End If
    
    
    ' tu fermes/vides tout
    myrst.Close
    Set myrst = Nothing
    db.Close
    
    End Sub
    L'erreur se passe lors de l'execution de la requête, pourtant la requête est bonne et sans erreur.

    Voici le message d'erreur (cf doc joint)

    Pouvez-vous m'aider s'il vous plait?
    Images attachées Images attachées  

  2. #2
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut
    Qu'as-tu dans sHostEmail et sSigle ? Si tu as une cote, ça change complètement ta requete SQL. Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQLInsert = "INSERT INTO [SIGLUM VIDE] ([HostEmail], [Sigle], ) VALUES ( "& Chr(34) & sHostEmail & Chr(34) & " , " & Chr(34) & sSigle & Chr(34) & " )"

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Par défaut
    Merci de vos reponses rapides!!!

    Citation Envoyé par daplomb
    Qu'as-tu dans sHostEmail et sSigle ? Si tu as une cote, ça change complètement ta requete SQL. Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQLInsert = "INSERT INTO [SIGLUM VIDE] ([HostEmail], [Sigle], ) VALUES ( "& Chr(34) & sHostEmail & Chr(34) & " , " & Chr(34) & sSigle & Chr(34) & " )"

    ok il me semble avoir déjà essayé avec le chr(34) mais je vais retenter quant a jean paul lepetit, je crois pas que mon erreur viens du dbBase qui n'est pas défini car j'ai remplacé "dbBase.Execute sSQLInsert, dbFailOnError" par un DoCmd.RunSQL et cela marcher toujours pas.

    Je vais essayer vos propositions et je vous tiens au courant rapidement

    merci de vos reponses!!

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 105
    Par défaut
    voici mon code aprés quelques modifications:

    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
    Private Sub Commande26_Click()
    Dim sSQL As String
    Dim db As DAO.Database
    Dim myrst As DAO.Recordset
    
    'tu definis quelle est la BD étudiée, c'est celle qui est courante..
    Set db = CurrentDb
    
    'nom de ta table
    maTable = "2004_airbus_Usage_01"
    monAutreTable = "SIGLUM VIDE"
    
    'creation de la table
    DoCmd.RunSQL "CREATE TABLE [SIGLUM VIDE] (HostEmail String, Sigle String);"
    
    'requete sql (le order by, tu 'nes pas obligé, c'est juste pr trier
    sSQL = "SELECT HostEmail,Sigle from " & maTable & " ORDER BY HostEmail "
    
    'tu definis ton recordset qui va contenir le resultat de la requete
    Set myrst = db.OpenRecordset(sSQL)
    
    'si le recordset n'est pas vide
    If Not myrst.EOF Then
    ' tant qu'il n'est pas vide
    Do While Not myrst.EOF
    
    'recuperation des valeurs pour tes 2 champs
    sHostEmail = myrst.Fields("HostEmail").Value
    sSigle = myrst.Fields("Sigle").Value
    
    'sFunction = myrst.Fields("SEG_function").Value
    
    'requete d'insertion
    sSQLInsert = "INSERT INTO [SIGLUM VIDE] ([HostEmail], [Sigle], ) VALUES ( " & Chr(34) & sHostEmail & Chr(34) & " , " & Chr(34) & sSigle & Chr(34) & " )"
    
    'tu envoies l'execution de la requête insert
    
    DoCmd.RunSQL sSQLInsert
    
    
    'tu passes a l'enregistrement suivant
    myrst.MoveNext
    
    Loop
    End If
    
    
    ' tu fermes/vides tout
    myrst.Close
    Set myrst = Nothing
    db.Close
    
    End Sub
    Toujours la même erreur , au même endroit avec le même message d'erreur....

    J'ai suivi vos 2 conseils mais cela marche toujours pas...
    A moins qu'il y ait un problème au niveau de la requête en elle-même mais je suis sûr qu'elle est bonne...

    Peut-être existe-t'il un code similaire qui permet l'exécution d'une requête mais à la syntaxe différente de celui-ci?

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut
    J’ai encore 2 petites idées :
    - SHostEmail ou sSigle est déclaré numérique en base et donc il ne faut ni ‘ ni Chr(34)
    - la virgule après [Sigle] est en trop

  6. #6
    Membre émérite Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    849
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2005
    Messages : 849
    Par défaut
    Je viens de vérifier, c'est bien ce que dit daplomb

    Citation Envoyé par daplomb
    la virgule après [Sigle] est en trop

  7. #7
    Membre émérite Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    849
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2005
    Messages : 849
    Par défaut
    Salut,
    ton erreur est bien sur ta ligne RunSql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbBase.Execute sSQLInsert, dbFailOnError
    dbBase n'est pas défini, c'est db


    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
    Private Sub Commande26_Click()
    Dim sSQL As String
    Dim db As DAO.Database
    Dim myrst As DAO.Recordset
    
    'tu definis quelle est la BD étudiée, c'est celle qui est courante..
    Set db = CurrentDb
    
    'nom de ta table
    maTable = "2004_airbus_Usage_01"
    monAutreTable = "SIGLUM VIDE"
    
    'creation de la table
    DoCmd.RunSQL "CREATE TABLE [SIGLUM VIDE] (HostEmail String, Sigle String);"
    
    'requete sql (le order by, tu 'nes pas obligé, c'est juste pr trier
    sSQL = "SELECT HostEmail,Sigle from " & maTable & " ORDER BY HostEmail "
    
    'tu definis ton recordset qui va contenir le resultat de la requete
    Set myrst = db.OpenRecordset(sSQL)
    
    'si le recordset n'est pas vide
    If Not myrst.EOF Then
    ' tant qu'il n'est pas vide
    Do While Not myrst.EOF
    
    'recuperation des valeurs pour tes 2 champs
    sHostEmail = myrst.Fields("HostEmail").Value
    sSigle = myrst.Fields("Sigle").Value
    
    'sFunction = myrst.Fields("SEG_function").Value
    
    'requete d'insertion
    sSQLInsert = "INSERT INTO [SIGLUM VIDE] ([HostEmail], [Sigle], ) VALUES ( '" & sHostEmail & "' , '" & sSigle & "' )"
    
    'tu envoies l'execution de la requête insert
    
    db.Execute sSQLInsert, dbFailOnError
    
    'tu passes a l'enregistrement suivant
    myrst.MoveNext
    
    Loop
    End If
    
    
    ' tu fermes/vides tout
    myrst.Close
    Set myrst = Nothing
    db.Close
    
    End Sub

Discussions similaires

  1. Execution auto de requêtes SQL
    Par lbar012001 dans le forum SQL
    Réponses: 5
    Dernier message: 17/10/2007, 16h18
  2. Réponses: 13
    Dernier message: 26/07/2007, 08h50
  3. Execution d'une requête SQL INSERT
    Par damien27000 dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/07/2007, 21h35
  4. [VBA et SQL] Requête SQL utilisant une variable VBA
    Par Altrensa dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 06/07/2007, 10h23
  5. Réponses: 2
    Dernier message: 06/06/2005, 15h13

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