Discussion: Lire une table access

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : décembre 2014
    Messages : 12
    Points : 2
    Points
    2

    Par défaut Lire une table access

    Bonjour,
    je rencontre une petite difficulté,
    je me permets donc de vous demander de l'aide.

    J'ai une base de donnée en access.
    Je voudrais pouvoir la lire depuis un programme windev.

    Les premières étapes sont je pense bonnes.
    j'arrive à me connecter à la base access, je vois même la liste des tables.

    Là ou je bute, c'est pour lire par exemple la valeur de la première ligne / première colonne d'une table en particulier.

    voici le début de mon code (je vous passe la déclaration des variables)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //===================================Ouverture de la DB Access===============================================================
    HDécritConnexion("connexion","","",sfichier,"",hOledbAccess2000,hOLecture )
     
    SI PAS (HOuvreConnexion("connexion")) ALORS
    	Erreur("Erreur HyperFileSQL : " + HErreurInfo())
    FIN
     
    listetable=HListeFichier("","",sfichier,hOledbAccess2000, hOLecture)
    Trace(listetable)
    le trace de fin me met bien les tables comprises dans la base de données access.
    je vois que j'ai bien une table qui s'appelle "Chantier", une autre qui s'appelle "Charge", etc

    donc jusque là, je suis ok.

    mais je ne trouve pas comment "rentrer" dans la table "Chantier" pour aller lire une donnée. par exemple la valeur de la première ligne première colonne.
    surtout que certaines tables de la base access ont le même nom que des tables de ma base windev. donc tous mes essais de HlitPremier ou autre ont échoués.

    Si vous avez une piste pour moi, je suis preneur

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    avril 2010
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 574
    Points : 907
    Points
    907

    Par défaut

    Bonsoir.
    Il manque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HChangeConnexion("Chantier", ConexionAccess)
    HLit(Chantier, 1)
    Trace(Chantier.Champ1)

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : décembre 2014
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    Merci à toi pour ton aide.

    Je rencontre néanmoins toujours une difficulté.

    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
    //===================================================déclaration des variables============================================
    listetable est une chaîne 
    connexion est une Connexion
    sfichier est une chaîne
     
     
    //=======================================emplacement de la base access 2000================================
    SI OuiNon(1,"Voulez vous lancer l'importation des données ?") ALORS 
    	sfichier = fSélecteur("C:\","","","")
    	SI Droite(sfichier,3) <> "mdb" ALORS
    		Erreur("fichier non valide") 
    		RETOUR
    	FIN
    SINON
    	RETOUR
    FIN
     
     
    //===================================Ouverture de la base accesss===============================================================
    HDécritConnexion("connexion","","",sfichier,"",hOledbAccess2000,hOLecture )
     
    SI PAS (HOuvreConnexion("connexion")) ALORS
    	Erreur("Erreur HyperFileSQL : " + HErreurInfo())
    FIN
     
     
    //===================================Lecture des données===============================================================
     
     
     
    HChangeConnexion("Chantier", "connexion")
    HLit(Chantier, 1)
    Trace(Chantier.Champ1)
    j'ai une erreur comme quoi l'élément Chantier est inconnu. ce qui me semble logique puisque je n'ai pas initialisé de variable chantier.

  4. #4
    Membre averti
    Homme Profil pro
    Retraité Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : septembre 2017
    Messages : 221
    Points : 301
    Points
    301

    Par défaut

    Citation Envoyé par keikoku84 Voir le message
    j'ai une erreur comme quoi l'élément Chantier est inconnu. ce qui me semble logique puisque je n'ai pas initialisé de variable chantier.
    Chantier est un fichier ?
    Ouvrir le fichier ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : décembre 2014
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    Bonsoir,

    Chantier est le nom d'une des table de la base access

  6. #6
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 369
    Points : 563
    Points
    563

    Par défaut

    Bonjour,
    Dans ton analyse, as-tu importé la description de tes tables access ?
    Il y a peut être plus simple, mais ça tourne

  7. #7
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : décembre 2014
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    Bonjour,

    non, je ne l'ai pas fait, et je ne peux le faire.

    Le programme existe déjà, et donc l'analyse également, et je n’ai pas la main dessus.

    je veux simplement faire un état qui fera appel à des données de la base windev (ça, je sais récupérer, sans problème) et à partir de la base access.
    j'ai "juste" besoin d'un accès en lecture aux tables de la bases access. Mais je n'arrive qu'a voir les tables, mais pas à entrer dedans.

  8. #8
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 369
    Points : 563
    Points
    563

    Par défaut

    Y-a-t'il quelque chose qui t’empêche de créer une autre appli avec ta propre analyse ?
    Tu récupère les tables HFSQL et access nécessaires à ton traitement dans l'analyse et hop ...
    Il y a peut être plus simple, mais ça tourne

  9. #9
    Membre averti
    Homme Profil pro
    Retraité Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : septembre 2017
    Messages : 221
    Points : 301
    Points
    301

    Par défaut

    avec la fonction HDéclarationExterne, vous pouvez utiliser des tables access, pour cela utiliser un alias différent pour pouvoir les manipuler.
    lien https://doc.pcsoft.fr/fr-FR/index.awp?3044204

  10. #10
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : décembre 2014
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    Citation Envoyé par Voroltinquo Voir le message
    Y-a-t'il quelque chose qui t’empêche de créer une autre appli avec ta propre analyse ?
    Tu récupère les tables HFSQL et access nécessaires à ton traitement dans l'analyse et hop ...
    Bonjour, et bien la base HFSQL est utilisée et est alimentée en permanence par moultes utilisateurs. Idem pour la base access
    de plus je n'ai pas de clé windev. Je n'ai à ma disposition que le wdetat.



    Citation Envoyé par midou23175 Voir le message
    avec la fonction HDéclarationExterne, vous pouvez utiliser des tables access, pour cela utiliser un alias différent pour pouvoir les manipuler.
    lien https://doc.pcsoft.fr/fr-FR/index.awp?3044204
    bonjour,
    je mets donc
    HDéclareExterne(sfichier,"Chantier",connexion)
    ?

    mais je ne vois pas trop comment l'exploiter après.

  11. #11
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 369
    Points : 563
    Points
    563

    Par défaut

    En fait la question est : "Comment lire des données access avec WDETAT"
    Il y a peut être plus simple, mais ça tourne

  12. #12
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : décembre 2014
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    oui, effectivement.

    Désolé, je ne pensais pas que cela ajoutais une difficulté.

    c'est vraiment embêtant cette histoire...
    je sais aller lire dans un excel sans problème, mais je n'arrive pas à lire dans une table d'une base access... qui sont pourtant des fichiers excel également ...

  13. #13
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 369
    Points : 563
    Points
    563

    Par défaut

    Il faut dans ce cas passer par des requêtes SQL
    Par exemple, dans ton code d'initialisation d'état
    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
     
    cnxAccess est une Connexion
    REQ_Chantier est une Source de Données
    gsTxtRequete est chaîne
     
    // Paramètres de la connexion
    cnxAccess..Provider = hOledbAccess2000
    cnxAccess..Utilisateur = ""
    cnxAccess..MotDePasse = ""
    cnxAccess..Source = "chemin du fichier mdb"
    cnxAccess..BaseDeDonnées = ""
    cnxAccess..Accès = hOLecture
     
    // Ouverture de la connexion
    HOuvreConnexion(cnxAccess)
     
    gsTxtRequete=[
    	SELECT *
    	FROM Chantier
    ]
    HExécuteRequêteSQL(REQ_Chantier,cnxAccess,hRequêteSansCorrection,gsTxtRequete)
    Il ne reste plus qu'à faire un remplissage de l'état par programmation, cf https://doc.pcsoft.fr/fr-FR/?1011034...ees_programmee
    Il y a peut être plus simple, mais ça tourne

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 228
    Points : 383
    Points
    383

    Par défaut

    Tu as la solution de passer par une requête qui est je pense la meilleure solution pour récupérer les infos.

    Sinon si tu souhaites utiliser les ordres Hxxx, Tu vas être obligé d'utiliser les indirections. Quant au problème que tu rencontres de fichier non déclaré, il te suffit de mettre le fichier entre double quote.
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  15. #15
    Membre averti
    Homme Profil pro
    Retraité Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : septembre 2017
    Messages : 221
    Points : 301
    Points
    301

    Par défaut

    Bonjour,
    voila, je suis pas bien branché sur l'utilisation des connexions. ce que j'ai constaté lors d'une utilisation d'un fichier externe dbf.

    j'ai un fichier : "C:\FIC\ECRITURES.DBF" La description de ce fichier n'existe pas l'analyse du projet
    j'ai pu manipulé ce fichier avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    EXTERNE TECRITUREDB
     
    HDBOuvre("TECRITUREDB", "KT", "C:\FIC\ECRITURES.DBF")
    HLit(TECRITUREDB,1)
    Info(TECRITUREDB.LIBELLE)
    peut-être je vais dire des bêtises, mais bon... une fois la connexion décrite, essayer de

    HDéclareExterne(<Nom du fichier> , <Nom alias> , <Nom de la connexion>)

    nom physique du fichier de données, relatif à la base de données externe (extension comprise).
    Exemple : "monfichier.mdb" (ou si la base a des sous-répertoires : ".\repertoire\monfichier.mdb").

    Nom de la connexion, connexion décrite au préalable
    en fonction du nom alias, le fichier va pouvoir être manipulé comme une source de données.

  16. #16
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 369
    Points : 563
    Points
    563

    Par défaut

    Le problème de cette méthode est que contrairement à DBASE ou à HFSQL, toutes les tables sont regroupées dans le MDB. Elle ne sont pas accessibles par fichier physique.
    Il y a peut être plus simple, mais ça tourne

  17. #17
    Membre averti
    Homme Profil pro
    Retraité Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : septembre 2017
    Messages : 221
    Points : 301
    Points
    301

    Par défaut

    Citation Envoyé par Voroltinquo Voir le message
    Le problème de cette méthode est que contrairement à DBASE ou à HFSQL, toutes les tables sont regroupées dans le MDB. Elle ne sont pas accessibles par fichier physique.
    Effectivement, ça me revient, c'est un fichier unique.
    c'est avec access qu'on peut voir tous les objets, Tables ...
    apparemment pas de solution... je pense à un passage par export de la table par exemple sous Excel, les récupérer par programmation, mais c'est pas pratique pour l'utilisateur

  18. #18
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 369
    Points : 563
    Points
    563

    Par défaut

    Le code que j'ai proposé fonctionne parfaitement.
    On a bien accès (sans mauvais jeu de mots) aux tuples des tables via les requêtes.
    Pour la plupart des requêtes, il y a même la possibilité de passer par l'éditeur de requêtes ACCESS et de copier/coller le code SQL Nom : 2018-02-06_15h49_21.png
Affichages : 79
Taille : 5,0 Ko ( en bas à droite)
    Il y a peut être plus simple, mais ça tourne

  19. #19
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : décembre 2014
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    un merci à toi

    je vais de ce pas me plonger dans les requêtes SQL

  20. #20
    Membre averti
    Homme Profil pro
    Retraité Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : septembre 2017
    Messages : 221
    Points : 301
    Points
    301

    Par défaut

    Bonjour,

    Citation Envoyé par Voroltinquo Voir le message
    Le code que j'ai proposé fonctionne parfaitement.
    Oui parfaitement.

    @keikoku84
    mais pour les ordres Hxxx, comme souligné par philouZ, il va falloir passer par les indirections.
    parcours d'un fichier :

    - soit directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     HLitPremier(CLIENT, IDClient)
     Trace(CLIENT.Nom)
    - ou bien par indirection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     HLitPremier({"CLIENT",indFichier},"IDClient")
     Trace({"CLIENT.Nom",indRubrique})
    idem pour la source de données.

Discussions similaires

  1. [Débutant] Lire une table access avec un datareader
    Par dnel225 dans le forum Visual Studio
    Réponses: 2
    Dernier message: 13/11/2017, 10h33
  2. [AC-2003] Lire une table access en VBA
    Par skaraa dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/03/2016, 11h40
  3. lire une table Access avec VBA
    Par ivoratparis dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/06/2013, 16h56
  4. Réponses: 6
    Dernier message: 18/05/2013, 01h20
  5. [AC-2003] lire une table Access en VBA ligne par ligne
    Par afifaNancy dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/06/2012, 13h54

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