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

WinDev Discussion :

Lire une table access


Sujet :

WinDev

  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 expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    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 confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    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
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    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.
    Quand tout a échoué utilisez l'option RTFM

  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
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    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.
    Quand tout a échoué utilisez l'option RTFM

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

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

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    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
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    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.
    Quand tout a échoué utilisez l'option RTFM

  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
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    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.
    Quand tout a échoué utilisez l'option RTFM

  14. #14
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    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 confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    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
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    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.
    Quand tout a échoué utilisez l'option RTFM

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

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

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    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
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    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 : 1704
Taille : 5,0 Ko ( en bas à droite)
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  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 confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    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