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. #21
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 182
    Points : 278
    Points
    278
    Par défaut
    j'ai fait un programme de migration d'une bdd access, voila comment je m'y prend :

    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
     
    gp_cnxAccess 				est une Connexion
    sdSourceWD				est une Source de Données	
     
    gp_cnxAccess..Provider 		= hOledbAccess2000
    gp_cnxAccess..Utilisateur 		= ""
    gp_cnxAccess..MotDePasse 		= ""
    gp_cnxAccess..Source 			= "c:\tmp\monfichier.mdb"
    gp_cnxAccess..BaseDeDonnées 	= ""
    gp_cnxAccess..Accès 			= hOLectureEcriture
     
    HOuvreConnexion(gp_cnxAccess)
     
    HDéclareExterne("NomDeLaTableAccess",sdSourceWD,gp_cnxAccess)
    HLitPremier(sdSourceWD)
    TANTQUE PAS HEnDehors(sdSourceWD)
        Trace(sdSouceWD.NomDeLaColonne)
        HLitSuivant(sdSourceWD)
    FIN
    petit précision je ne traite que des bases access 2000
    Cordialement JeAn-PhI

  2. #22
    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
    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
    Je suis désolé, mais ca ne veux pas s'imprimer dans ma cervelle.

    je n'arrive toujours pas à lire le fichier.
    est ce que je peux abuser de votre gentillesse et vous demander d'adapter le code pour lire:
    dans la table Chantier,
    la première colonne, intitulée "Id chantier",
    la valeur de la deuxieme ligne.

    A partir du moment ou j'arriverai à lire une valeur dans la table, je saurais m'arranger pour calculer ce qu'il me faut.

    merci d'avance

  3. #23
    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 JeAn-PhI Voir le message
    j'ai fait un programme de migration d'une bdd access, voila comment je m'y prend :

    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
     
    gp_cnxAccess 				est une Connexion
    sdSourceWD				est une Source de Données	
     
    gp_cnxAccess..Provider 		= hOledbAccess2000
    gp_cnxAccess..Utilisateur 		= ""
    gp_cnxAccess..MotDePasse 		= ""
    gp_cnxAccess..Source 			= "c:\tmp\monfichier.mdb"
    gp_cnxAccess..BaseDeDonnées 	= ""
    gp_cnxAccess..Accès 			= hOLectureEcriture
     
    HOuvreConnexion(gp_cnxAccess)
     
    HDéclareExterne("NomDeLaTableAccess",sdSourceWD,gp_cnxAccess)
    HLitPremier(sdSourceWD)
    TANTQUE PAS HEnDehors(sdSourceWD)
        Trace(sdSouceWD.NomDeLaColonne)
        HLitSuivant(sdSourceWD)
    FIN
    petit précision je ne traite que des bases access 2000
    avec HDéclareExterne(<"Nom TableAcess"> , <Nom alias> , <Nom de la connexion>)
    ça aboutit aussi, c'est le pressentiment que j'ai eu.
    On peut même choisir, la rubrique qu'on veut en tant clé de parcours.

    HLitPremier(sdSourceWD,"IDChantier")
    HLitPremier(sdSourceWD,"Nom_Chantier")

    Merci JeAn-PhI pour votre partage

  4. #24
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 813
    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 813
    Points : 5 273
    Points
    5 273
    Billets dans le blog
    1
    Par défaut
    Quelle que soit la méthode employée, celle de Jean_Phi ou la mienne, pour lire le nieme enregistrement d'une source de donnée, (dans ton cas, n = 2) il faudrait utiliser Hlit(SD,2)
    Méthode Jean_Phi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HLit(sdSourceWD,2)
    Methode Voro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HLit(REQ_Chantier,2)
    Or là patatra HLit n'est pas disponible avec les types de connexion choisi. On va donc devoir passer en lecture séquentielle (ressortez les bandes magnétiques.)
    Pour une meilleure lecture du code, on va surcharger Hlit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    FONCTION HLit(sdSource est Source de Données,nEnregistrementCherché est entier):booléen
    HLitPremier(sdSource)
    POUR nEnregistrementLu=1 _A_ nEnregistrementCherché
    	HLitSuivant()
    	SI HEnDehors(sdSource) ALORS
    		RENVOYER Faux
    	FIN
    FIN
    RENVOYER Vrai
     
    FIN
    On peut donc maintenant lire le nieme enregistrement de manière transparente
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  5. #25
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 182
    Points : 278
    Points
    278
    Par défaut
    ce code fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    HLitRecherchePremier(sdSourceWD,NomDeLaClefSansGuillemet,ValeurRecherchée)
    SI HTrouve(sdSourceWD) ALORS
    .....
    la fonction HLit() utilise le n° d'enreg je ne suis pas sûr que Access comprenne !!
    Cordialement JeAn-PhI

  6. #26
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 813
    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 813
    Points : 5 273
    Points
    5 273
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par JeAn-PhI Voir le message
    la fonction HLit() utilise le n° d'enreg je ne suis pas sûr que Access comprenne !!
    1° keikoku veut lire un n° d'enregistrement en l'occurence le 2°
    2° Access ne comprend pas c'est pour cela que j'ai surchargé HLit
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  7. #27
    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,

    Quant au choix de la méthode, ça dépend du besoin exprimé et des contraintes imposées par l'état :
    - accès direct, passage par requête
    - accès avec une clé, sans surcharge, exemple IDChantier en cohérence avec l'etat
    Mais, comme on dit tout chemin mène à Rome, le plus important pour moi, c'est de connaître ces chemins.

  8. #28
    Nouveau Candidat au Club
    Homme Profil pro
    windev
    Inscrit en
    Décembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : windev
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Suite de votre programme
    Citation Envoyé par Voroltinquo Voir le message
    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
    22
    23
    24
    25
    26
    27
    28
     
    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)
    POUR TOUT REQ_Chantier
    	HRAZ(Fichier)
    		Fichier.Rubrique2				= REQ_Chantier."Rubrique2"
    		Fichier.Rubrique3				= REQ_Chantier."Rubrique3"
    		Fichier.Rubrique4				= REQ_Chantier."Rubrique4"
            HEnregistre(Fichier)
    Fin
    Il ne reste plus qu'à faire un remplissage de l'état par programmation, cf https://doc.pcsoft.fr/fr-FR/?1011034...ees_programmee

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