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 :

Probleme de type, dans la création d'une requette


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut Probleme de type, dans la création d'une requette
    Bonjour,

    Le but, est dans une table ici Table1, de trouver une ligne dont la valeur du champ1 est 1, du champ2 est 2 et du champ3 est 4 puis de modifier les valeurs du champ 4 et 5 correspondant. Toutes les types des entrées de la Table sont du texte.

    dans le code ci-dessous, j'ai un problème de type de donnée incompatible.
    la variable qdf est déclaré comme étant Variant. Je me demande si le problème ne viendrait pas de la! Car une requête est du texte, mais je ne sais plus trop où chercher.
    INFO: j'utilise access 2003.

    Merci d'avance pour votre aide.


    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
    Option Compare Database
     
    Public Sub GO()
    'Exemple D'appel de la Function Generique....
    'Call UpDateFunction("Nom Table", "On Veux Champs1=?", "On Veux Champs2=?", "On Veux Champs3=?", "On Ecrira Dans ChampsX=?", "Nom Du ChampsX")
     
        Call UpDateFunction("Table1", "1", "2", "4", "3", "NbComposants")
        Call UpDateFunction("Table1", "1", "2", "4", "2", "NbCanaux")
    End Sub
     
    Sub UpDateFunction(TableZ As String, a As String, b As String, c As String, ReplaceZ As String, ChampsZ As String)
    'TableZ: nom de la table à modifier; a,b,c les valeurs des champs à rechercher;
    'ReplaceZ: élément à mettre à jour dans la table; ChampZ: Champs dans lequel changer la valeur ReplaceZ;
     
     
    Dim StrSql As String: Dim qdf As Variant
     
     
    'Construction De La String Contenant La Requette SQL...
        StrSql = "UPDATE " & [TableZ] & " AS Tab1"
        StrSql = StrSql + " SET [Tab1]." & ChampsZ & " = '" & [ReplaceZ] & "'"
        StrSql = StrSql + " WHERE ([TableZ].IdType=" & [a] & " And "
        StrSql = StrSql + " [Tab1].IdBoitier=" & [b] & " And "
        StrSql = StrSql + " [Tab1].IdCode=" & [c] & ");"
     
    'Afficher Le Resultat Dans Debug : CLICK DROIT BARRE OUTILS : ACTIVER DEBUGAGE : CLIQUER SUR FENETRE EXECUTION... POUR VOIR LE RESULTAT
    Debug.Print StrSql
     
    'Creation Du Compteneur/Executeur De Requette
    Set qdf = CurrentDb.CreateQueryDef("", StrSql)
     
    Debug.Print StrSql
     
    'Execution De La Requette Precedement Créée
    qdf.Execute ("StrSql")
    'dbFailOnError
     
    End Sub

  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 015
    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 015
    Points : 24 548
    Points
    24 548
    Par défaut
    bonjour,

    Une requete est de type Querydef.

    Il faut chercher dans le tuto DAO tu y trouvera les infos et explications.

    Cordialement,

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Quelqu'un peut il m'expliquer pourquoi dans le premier code, ça fonctionne alors que dans la deuxième j'ai une erreur
    Trop peu de paramètres. <Nombre de paramètres> attendu. (Erreur 3061)
    Les propriété des tables sont identiques! les 3 premier champs sont de types numérique et les 2 derniers sont de types texte.

    1er 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
    Public Sub GO()
    'Exemple D'appel de la Function Generique....
    'Call UpDateFunction("Nom Table", "On Veux Champs1=?", "On Veux Champs2=?", "On Veux Champs3=?", "On Ecrira Dans ChampsX=?", "Nom Du ChampsX")
     
        Call UpDateFunction("Table1", "1", "2", "4", "bijour", "Champ4")
        Call UpDateFunction("Table1", "1", "2", "4", "999", "Champ5")
    End Sub
     
     
    Sub UpDateFunction(TableZ, a, b, c, ReplaceZ, ChampsZ)
    Dim StrSql As String: Dim qdf As Variant
     
     
    'Construction De La String Contenant La Requette SQL...
        StrSql = "UPDATE " & TableZ & " AS Tab1 "
        StrSql = StrSql + " SET Tab1." & ChampsZ & " = '" & ReplaceZ & "'"
        StrSql = StrSql + " WHERE (Tab1.Champ1=" & a & " And "
        StrSql = StrSql + " Tab1.Champ2=" & b & " And "
        StrSql = StrSql + " Tab1.Champ3=" & c & ");"
     
    'Afficher Le Resultat Dans Debug : CLICK DROIT BARRE OUTILS : ACTIVER DEBUGAGE : CLIQUER SUR FENETRE EXECUTION... POUR VOIR LE RESULTAT
    Debug.Print StrSql
     
    'Creation Du Compteneur/Executeur De Requette
    Set qdf = CurrentDb.CreateQueryDef("", StrSql)
     
     
    'Execution De La Requette Precedement Crée
    qdf.Execute dbFailOnError
     
    End Sub
    2eme 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
    Public Sub GO()
    'Exemple D'appel de la Function Generique....
    'Call UpDateFunction("Nom Table", "On Veux Champs1=?", "On Veux Champs2=?", "On Veux Champs3=?", "On Ecrira Dans ChampsX=?", "Nom Du ChampsX")
     
        Call UpDateFunction("Table2", "1", "2", "4", "salut", "NbrComposants")
        Call UpDateFunction("Table2", "1", "2", "4", "666", "NbrCanaux")
    End Sub
     
     
    Sub UpDateFunction(TableZ, a, b, c, ReplaceZ, ChampsZ)
    Dim StrSql As String: Dim qdf As Variant
     
     
    'Construction De La String Contenant La Requette SQL...
        StrSql = "UPDATE " & TableZ & " AS Tab1"
        StrSql = StrSql + " SET Tab1." & ChampsZ & " = '" & ReplaceZ & "'"
        StrSql = StrSql + " WHERE (TableZ.IdType=" & a & " And "
        StrSql = StrSql + " Tab1.IdBoitier=" & b & " And "
        StrSql = StrSql + " Tab1.IdCode=" & c & ");"
     
    'Afficher Le Resultat Dans Debug : CLICK DROIT BARRE OUTILS : ACTIVER DEBUGAGE : CLIQUER SUR FENETRE EXECUTION... POUR VOIR LE RESULTAT
    Debug.Print StrSql
     
    'Creation Du Compteneur/Executeur De Requette
    Set qdf = CurrentDb.CreateQueryDef("", StrSql)
     
     
    'Execution De La Requette Precedement Créée
    qdf.Execute dbFailOnError
     
    End Sub

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonsoir,
    Citation Envoyé par thor18 Voir le message
    Quelqu'un peut il m'expliquer pourquoi dans le premier code, ça fonctionne alors que dans la deuxième j'ai une erreur
    Ca se ressemble beaucoup...

    Celà vient peut être de la Table2 pour laquelle il n'existerait pas de champs nommés "NbrComposants" et "NbrCanaux" ?
    _

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    c'est là le problème! ils existent bien ces champs dans la table2!

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Dans la troisième ligne de construction du SQL
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    StrSql = StrSql + " WHERE (TableZ.IdType=" & a & " And "
    tu as mis TableZ au lieu de Tab1.
    Ou alors il faut écrire
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    StrSql = StrSql + " WHERE (" & TableZ & ".IdType=" & a & " And "
    A+

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Et dire que j'avais la réponse sous les yeux! j'ai cherché pendant des heures!
    merci à toi LedZeppII

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

Discussions similaires

  1. problème dans la création d'une requête
    Par LeCogiteur dans le forum Langage SQL
    Réponses: 0
    Dernier message: 25/02/2008, 00h43
  2. Réponses: 2
    Dernier message: 10/12/2007, 18h47
  3. Réponses: 8
    Dernier message: 01/06/2007, 00h13
  4. SVP Probleme dans la création d'une table
    Par sephirothmana dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/11/2006, 17h12
  5. Contrainte de date dans la création d'une table
    Par snoopy69 dans le forum Administration
    Réponses: 1
    Dernier message: 21/11/2006, 10h16

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