Access et VB

m_makhoukh Messages postés 114 Statut Membre -  
 Titeuf -
bonjour,
je ne sais pas pourquoi,quand je fais cette requete il il n'accepte la :"02"dans le where et il met( attendu:fin d'instruction)

Dim qdf As QueryDef
Dim chSQL As String
chSQL = "SELECT conso2.code_article, conso2.code_famille FROM conso2 
WHERE (((conso2.code_famille)="02"))  ;"
Set qdf = dbsBase.CreateQueryDef("NouvelleRequete", chSQL)
DoCmd.OpenQuery "NouvelleRequete"

merci d'avance.

5 réponses

  1. Titeuf
     
    (((conso2.code_famille)="02"))

    Je pense que tu devrai enlever les guillements à 02 si ce n'est pas une chaine de caractere; si tu as declare ton code_famille en entier alors enlève les guillemets
    ++
    0
  2. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    salut,

    pour continuer sur la lancée de Titeuf :

    si code_famille est déclaré comme chaîne de caractère, il faut entourer 02 par des apostrophes, pas par des guillemets : '02'.

    0
  3. m_makhoukh Messages postés 114 Statut Membre 2
     
    merci,
    mais jai un autre souci c'est que qd je veux executer la requete il me met nue erreur(*) comme quoii la requetes est une requete de selection ,comment SVP executer une requete de selection:
    
    chSQL = "SELECT * FROM conso2 Where conso2.code_famille=02  ;"
    qdf = dbsBase.CreateQueryDef("NouvelleRequete", chSQL)
    'On donne un nom a notre requete
    stDocName = "NouvelleRequete"
    'On execute la requete
    DoCmd.OpenQuery stDocName, acNormal, acEdit(*)
    
    
    
    0
  4. Utilisateur anonyme
     
    Salut,

    Ne serait-ce pas ?

    chSQL = "SELECT * FROM conso2 Where conso2.code_famille=" & """" & "02" & """" & " ;"

    Lupin
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. m_makhoukh Messages postés 114 Statut Membre 2
     
    merci,

    comment faire pour importer un fichier csv (separateur ,) sous access VB SVP.

    merci d'avance.
    0
    1. Titeuf
       
      Ca c'est du code vb pour charger des tables à partir de fichier texte de la forme suivante :

      champ1;champ2;chanmps3;champs4
      champ1a;champ2a;chanmps3a;champs4a
      champ1b;champ2b;chanmps3b;champs4b
      ...
      ...
      ...
      ...

      'Procédure chargemement charge les données dans les tables correspondantes
      'Pas de paramètres
      Public Sub chargement()
      
          'Déclaration des variables chaînes de caractères
          Dim fichier_import As String
          Dim fichier_table As String
          Dim msg_erreur As String
          Dim g As String
          Dim c As String
          Dim s As String
          Dim l As String
          
          'Déclaration d'un entier
          Dim choix As Integer
          
          'Déclaration des recordsets
          Dim rst As DAO.Recordset
          Dim rst_g As DAO.Recordset
          Dim rst_c As DAO.Recordset
          Dim rst_l As DAO.Recordset
          Dim rst_s As DAO.Recordset
          Dim rst_gest As DAO.Recordset
          Dim rst_cpt As DAO.Recordset
          Dim rst_lieu As DAO.Recordset
          Dim rst_serie As DAO.Recordset
      
          'En cas d'erreur on va à l'étiquette Gestion_Erreur
          On Error GoTo Gestion_Erreur
          
          'Initialisation des chaines de caractères
          g = "SELECT * FROM Tables WHERE Code_table='g'"
          s = "SELECT * FROM Tables WHERE Code_table='s'"
          c = "SELECT * FROM Tables WHERE Code_table='c'"
          l = "SELECT * FROM Tables WHERE Code_table='l'"
          
          
          'On demande à l'utilisateur si il veut vraiment charger les tables
          choix = MsgBox("Voulez vous charger les tables?", vbYesNo + vbQuestion, "Demande chargement")
          
          'Si non
          If choix = vbNo Then
              'Affichage d'un message pour lui dire que le chargemement a été annulé
              MsgBox "Chargement annulé", vbInformation, "Arrêt"
              'On sort de la procédure
              Exit Sub
          Else 'Si il confirme le chargemement
          
              'On active le sablier
              DoCmd.Hourglass True
              
              'On ouvre la fenêtre Etat
              DoCmd.OpenForm "Etat"
              
              'Affichage de l'état d'avancement
              Call Forms("Etat").Progress("IMPORTATION", "Consultation de la table PARAMETRES")
              'Boucle de temporisation pour la lecture du message
              For i = 1 To 5000000
              Next i
              
              'Si la table paramètre n'est pas renseigné
              'On prévient l'utilisateur et on va à l'étiquette Exit_chargemement
              If parametre("chemin_fichier") = "Non renseigné" Then
                  msg_erreur = "Chargement abandonné. Répertoire de travail non renseigné dans la table des paramètres."
                  MsgBox msg_erreur, vbOKOnly + vbCritical + vbDefaultButton1, "Importation"
                  GoTo Exit_Chargement
              End If
              
              'On ferme la fenêtre état
              DoCmd.Close acForm, "Etat"
              
              'On appelle la procédure purge
              Call purge
              
              'On ouvre la fenêtre Etat
              DoCmd.OpenForm "Etat"
              
              'Affichage de l'état d'avancement
              Call Forms("Etat").Progress("CHARGEMENT", "Chargement des données dans la table IMMOBILISATION")
              'Boucle de temporisation pour la lecture du message
              For i = 1 To 5000000
              Next i
              
              'On importe le fichier immobilisation.txt selon les spécifications d'importations
              fichier_import = parametre("chemin_fichier") & "immobilisation.txt"
              DoCmd.TransferText acImportDelim, "Spécification d'importation", "Immobilisation", fichier_import, False
              
              'Affichage de l'état d'avancement
              Call Forms("Etat").Progress("CHARGEMENT", "Chargement des données dans les tables correspondantes")
              'Boucle de temporisation pour la lecture du message
              For i = 1 To 5000000
              Next i
              
              'On importe le fichier tables.txt selon les spécifications d'importation
              fichier_table = parametre("chemin_fichier") & "tables.txt"
              DoCmd.TransferText acImportDelim, "Tables Spécification d'importation", "Tables", fichier_table, False
              
              
              'Initialisation de tous les recordsets
              Set rst_gest = CurrentDb.OpenRecordset("Gestion")
              Set rst_cpt = CurrentDb.OpenRecordset("Compte")
              Set rst_lieu = CurrentDb.OpenRecordset("Lieu utilisation")
              Set rst_serie = CurrentDb.OpenRecordset("Série Articles")
              Set rst_c = CurrentDb.OpenRecordset(c, dbOpenDynaset)
              Set rst_g = CurrentDb.OpenRecordset(g, dbOpenDynaset)
              Set rst_l = CurrentDb.OpenRecordset(l, dbOpenDynaset)
              Set rst_s = CurrentDb.OpenRecordset(s, dbOpenDynaset)
            
              'On répartit les données de la table Tables dans la table gestion
              'Lorsque le code_table='g'
              Do Until rst_g.EOF
                 rst_gest.AddNew
                 rst_gest("Code_gestion_achat") = rst_g("Champ1")
                 rst_gest("Code_gestion_utilisatrice") = rst_g("Champ2")
                 rst_gest("Libellé") = rst_g("Champ3")
                 rst_gest("Code_table") = rst_g("Code_table")
                 rst_gest.Update
                 rst_g.MoveNext
              Loop
              'Fermeture des recordset utilisés
              rst_g.Close
              rst_gest.Close
              
             'On répartit les données de la table Tables dans la table compte
             'Lorsque le code_table='c'
             Do Until rst_c.EOF
                  rst_cpt.AddNew
                  rst_cpt("N°Compte") = rst_c("Champ1")
                  rst_cpt("Libellé") = rst_c("Champ2")
                  rst_cpt("Code_table") = rst_c("Code_table")
                  rst_cpt.Update
                  rst_c.MoveNext
              Loop
              'Fermeture des recordsets utilisés
              rst_c.Close
              rst_cpt.Close
            
             'On répartit les données de la table Tables dans la table lieu_utilisation
             'Lorsque le code_table='l'
              Do Until rst_l.EOF
                  rst_lieu.AddNew
                  rst_lieu("Code_lieu_utilisation") = rst_l("Champ1")
                  rst_lieu("Libellé") = rst_l("Champ2")
                  rst_lieu("Code_table") = rst_l("Code_table")
                  rst_lieu.Update
                  rst_l.MoveNext
              Loop
              'Fermeture des recordsets utilisés
              rst_l.Close
              rst_lieu.Close
              
             'On répartit les données de la table Tables dans la table lsérie
             'Lorsque le code_table='s'
              Do Until rst_s.EOF
                  rst_serie.AddNew
                  rst_serie("Code_série_articles") = rst_s("Champ1")
                  rst_serie("Libellé") = rst_s("Champ2")
                  rst_serie("Code_table") = rst_s("Code_table")
                  rst_serie.Update
                  rst_s.MoveNext
              Loop
              'Fermeture des recordsets utilisés
              rst_s.Close
              rst_serie.Close
              
              'On ouvre la table immobilisation
              Set rst = CurrentDb.OpenRecordset("Immobilisation")
              
              If Not rst.EOF Then
                  rst.MoveFirst
                  Do Until rst.EOF
                      rst.Edit
                      'On modifie le Montant_achat et le Montant_reprise_enregistrement01 pour les avoir en €
                      rst("Montant_achat") = rst("Montant_achat") / 100
                      rst("Montant_reprise_enregistrement01") = rst("Montant_reprise_enregistrement01") / 100
                      rst.Update
                      rst.MoveNext
                  Loop
              End If
              
              'On désactive le sablier
              DoCmd.Hourglass False
              'on ferme la fenêtre Etat
              DoCmd.Close acForm, "Etat"
              'On affiche un message pour prévenir que l'opération s'est déroulée corrrectement
              MsgBox "Chargement terminé", vbInformation, "Chargement réussi"
              
          End If
      Exit Sub
          
      'Etiquette de sortie du chargement
      Exit_Chargement:
          'On désactive le sablier
          DoCmd.Hourglass False
          'On ferme la fenêtre Etat
          DoCmd.Close acForm, "Etat"
          'On affiche un message d'erreur
          MsgBox "Problème lors du chargement", vbCritical, "Erreur"
          'On sort de la procédure
          Exit Sub
              
      'Etiquette de gestion des erreurs
      Gestion_Erreur:
          'Selon le numéro d'erreur on affiche le message approprié et on va
          'à l'étiquette Exit_chargement
          Select Case Err
              Case 3011
                  msg_erreur = "Importation abandonnée. Fichier " & fichier_import & " non trouvé."
                  MsgBox msg_erreur, vbOKOnly + vbCritical + vbDefaultButton1, "Chargement"
                  Resume Exit_Chargement
               Case 3044
                  msg_erreur = "La disquette n'est pas insérée ou le chemin " & lfichier_import & " n'est pas valide."
                  MsgBox msg_erreur, vbOKOnly + vbCritical + vbDefaultButton1, "Chargement"
                  Resume Exit_Chargement
               Case Else
                  MsgBox "Erreur n° " & Err & "  : " & Err.Description
                  Resume Exit_Chargement
          End Select
          
      End Sub
      
      
      
      0