Discussion: Lire une table access

  1. #21
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    janvier 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 33
    Points : 36
    Points
    36

    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 actif
    Homme Profil pro
    Retraité Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    175
    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 : 175
    Points : 242
    Points
    242

    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
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    247
    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 : 247
    Points : 392
    Points
    392

    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

  5. #25
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    janvier 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 33
    Points : 36
    Points
    36

    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
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    247
    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 : 247
    Points : 392
    Points
    392

    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

  7. #27
    Membre actif
    Homme Profil pro
    Retraité Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    175
    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 : 175
    Points : 242
    Points
    242

    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.

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, 11h33
  2. [AC-2003] Lire une table access en VBA
    Par skaraa dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/03/2016, 12h40
  3. lire une table Access avec VBA
    Par ivoratparis dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/06/2013, 17h56
  4. Réponses: 6
    Dernier message: 18/05/2013, 02h20
  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, 14h54

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