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 :

Exploration d'une base de données Oracle


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Points : 40
    Points
    40
    Par défaut Exploration d'une base de données Oracle
    Salut !
    J'en peux plus de creuser tout seul. Voilà, je réussis une connexion sur une base de données Oracle avec OLE DB for Oracle. Maintenant, je voudrais consulter les tables par des SQL genre "select chp1, chp2,chp3 from MaTable". J'ai toujours une fatal error même après création d'une source de données et initialisation avec quelques valeurs de la table soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	//Initialisation de la source 
       sClient.cli="100465"
       sClient.nom="phenix"
       sClient.pre="shadow"
       SI HExécuteRequêteSQL(sClient,UneConnexion,hRequêteSansCorrection,"SELECT CLI,NOM,PRE FROM BANK.BKCLI")=Vrai ALORS
    		Info("Le premier enregistrement lu est " + HLitPremier(sClient.cli) + "-" + HLitPremier(sClient.nom) + " " + HLitPremier(sClient.pre) + "")
       SINON
       	    Erreur("Errreur lors de la lecture de la table:" + HErreurInfo)
       FIN
    Mais j'obtiens toujours ce message fatal

    Quelqu'un a-t-il une idée pour me sortir de cette impasse ?

  2. #2
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Points : 40
    Points
    40
    Par défaut Parcours des tables Oracle
    En passant, en modifiant la boucle de lecture par
    Info("Le premier enregistrement lu est " + HLitPremier(sClient))
    il me retourne
    Le premier enregistrement lu est 1

    Pouvez vous m'expliquer ce que celà signifie?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    et bien cela signifie que ta requete renvoie qq chose.

  4. #4
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Bonjour,
    Citation Envoyé par rphenix
    Salut !
    J'en peux plus de creuser tout seul. Voilà, je réussis une connexion sur une base de données Oracle avec OLE DB for Oracle. Maintenant, je voudrais consulter les tables par des SQL genre "select chp1, chp2,chp3 from MaTable". J'ai toujours une fatal error même après création d'une source de données et initialisation avec quelques valeurs de la table soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	//Initialisation de la source 
       sClient.cli="100465"
       sClient.nom="phenix"
       sClient.pre="shadow"
       SI HExécuteRequêteSQL(sClient,UneConnexion,hRequêteSansCorrection,"SELECT CLI,NOM,PRE FROM BANK.BKCLI")=Vrai ALORS
    		Info("Le premier enregistrement lu est " + HLitPremier(sClient.cli) + "-" + HLitPremier(sClient.nom) + " " + HLitPremier(sClient.pre) + "")
       SINON
       	    Erreur("Errreur lors de la lecture de la table:" + HErreurInfo)
       FIN
    Mais j'obtiens toujours ce message fatal

    Quelqu'un a-t-il une idée pour me sortir de cette impasse ?
    quel message fatal ?
    Petites précisions ?
    - "BANK" est le nom de la base ?
    sClient.cli,sClient.nom,sClient.pre sont des paramètres de la requête ?
    Cordialement,
    Christophe Charron

  5. #5
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Bonjour,
    Citation Envoyé par rphenix
    En passant, en modifiant la boucle de lecture par
    Info("Le premier enregistrement lu est " + HLitPremier(sClient))
    il me retourne
    Le premier enregistrement lu est 1

    Pouvez vous m'expliquer ce que celà signifie?
    quelle boucle ?
    Cordialement,
    Christophe Charron

  6. #6
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Points : 40
    Points
    40
    Par défaut Exploration BD sous Oracle
    Pour répondre à tes questions
    - BANK est le propriétaire de la table BKCLI
    - Comme je voudrais lire les champs cli, nom et pre de cette table, j'ai dont déclaré sClient comme source de données avec les attributs nom, pre et cli initialisées pour contenir les valeurs de la table BKCLI.

    Pour la question suivante, il ne s'agit aucunement d'une boucle, c'est juste un test pour voir si l'exécution de la requête s'est déroulée sans erreur, et puis affiché uniquement le premier enregistrment...

    Dans l'attente...

  7. #7
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Bonsoir,
    quel est le message d'erreur?
    Cordialement,
    Christophe Charron

  8. #8
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Points : 40
    Points
    40
    Par défaut La source de la discussion
    Voici un code que j'ai placé derrière un bouton juste pour tester le parcours des champs de la table :
    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
    UneConnexion est une Connexion
    sClient est une Source de Données
    sSql est une chaîne
    // Description
    SI HDécritConnexion("UneConnexion","PHENIX","SHADOW","DSN","","MSDAORA.1")=Faux ALORS
    	Erreur("Erreur Hyper File : " + HErreurInfo())
    SINON
    	Info("Description OK")	
    FIN
     
    // Ouvrir la nouvelle connexion
    SI HOuvreConnexion("UneConnexion")=Faux ALORS
    	Erreur("Erreur Hyper File : " + HErreurInfo())
    SINON
    	Info("Connexion OK")
    	//Initialisation de la source 
       sClient.cli="100465"
       sClient.nom="phenix"
       sClient.pre="shadow"
       SI HExécuteRequêteSQL(sClient,UneConnexion,hRequêteSansCorrection,"SELECT CLI,NOM,PRE FROM BANK.BKCLI")=Vrai ALORS
    		//info("Le premier enregistrement lu est " + HLitPremier(sclient.cli) + "-" + HLitPremier(sClient.nom) + " " + HLitPremier(sClient.pre) + "")
    		Info("Le premier enregistrement lu est " + HLitPremier(sClient))
    		   SINON
       	    Erreur("Errreur lors de la lecture de la table:" + HErreurInfo())
       FIN
    FIN
    Après le clic sur le bouton, j'ai successivement les boîtes de dialogue 'Description OK', 'Connexion OK', 'Le premier enregistrement lu est 1'
    Si la requête s'est bien exécutée, comment puis-je retourner le contenu des champs cli, nom et pre ?
    Sinon comment devrais-je procéder pour y arriver ?

    Cependant, si je remplace sClient par sClient.cli par exemple dans la lecture, j'obtiens le détails d'erreur suivant :
    Erreur à la ligne 22 du traitement Clic sur BTN_Bouton1.
    Vous avez appelé la fonction HLitPremier.
    Aucune analyse n'est ouverte et le fichier <100465> n'a pas été décrit.
    Informations techniques

    Projet : test_BD2

    Dump de l'erreur du module <WD100HF.DLL> <10.00Cpc>.

    - Appel WL :
    Traitement de <FEN_Fenêtre1.BTN_Bouton1>, ligne <22>, thread <0>
    Fonction <HLitPremier>, n° de syntaxe <3>

    - Niveau : erreur fatale (EL_FATAL)

    - Code erreur : 70018

    - Code erreur WD55 : 18

    - Pas de code d'erreur système

    - Pas de message d'erreur système

    - Que s'est-il passé ?
    Aucune analyse n'est ouverte et le fichier <100465> n'a pas été décrit.

    - Infos de debug :
    iehf=32012
    Fonction (7,10)

    - Infos attachées :
    EIT_LOGICALTABLENAME : <100465>
    EIT_DATEHEURE : 26/09/2006 20:35:23
    EIT_PILEWL :
    Clic sur BTN_Bouton1 (FEN_Fenêtre1.BTN_Bouton1), ligne 22

    - Identifiant dans le .err : 70114
    Cdlt.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    en ce qui concerne Hlitpremier il ne faut mettre que le nom de ton fichier ou de ta requete
    Citation Envoyé par aide du w-langage
    <Résultat> = HLitPremier([<Nom du fichier> [,<Nom de la rubrique de parcours>] [,<Options>]])
    ici Hlitpremier (sClient)

    ensuite tu recupere les valeurs avec sClient.nom, sClient.pre, ...

    donc pour ton test, ton code devrait etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    si hexecute[...] = vrai
    hlitpremier(sClient)
    info(sClient.nom,sClient.pre,sClient.cli)
    fin

  10. #10
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Points : 40
    Points
    40
    Par défaut
    Dsl mais il ne retourne que les valeurs d'initialisation, c'est à dire 100465, rphenix et shadow

  11. #11
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Bonjour,
    Citation Envoyé par rphenix
    Dsl mais il ne retourne que les valeurs d'initialisation, c'est à dire 100465, rphenix et shadow
    Je ne comprends pas à quoi servent les données d'initialisation ...
    Cordialement,
    Christophe Charron

  12. #12
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Points : 40
    Points
    40
    Par défaut
    Selon Windev, il s'agit de déclaration implicite des membres de la source de données déclarées..

  13. #13
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    le code suivant fonctionne parfaitement :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    // Description
    SI HDécritConnexion("MaConnexion","scott","tiger","XE","","OraOLEDB.Oracle")=Faux ALORS
    	Erreur("Erreur Hyper File : " + HErreurInfo())
    SINON
    	Info("Description OK")	
    FIN
     
    // Ouvrir la nouvelle connexion
    SI HOuvreConnexion("MaConnexion")=Faux ALORS
    	Erreur("Erreur Hyper File : " + HErreurInfo())
    SINON
    	Info("Connexion OK")	
    FIN
     
    HChangeConnexion(Clients,"MaConnexion")
    HCréationSiInexistant(Clients)
    Clients.IDClients = 1
    Clients.NomClient = "LECOESTER"
    Clients.DateCreation = DateSys()
    HAjoute(Clients)
    Clients.IDClients = 2
    Clients.NomClient = "HEGROS"
    Clients.DateCreation = DateSys()
    HAjoute(Clients)
     
    HLitPremier(Clients,IDClients)
    TANTQUE PAS HEnDehors(Clients)
    	Info(Clients.NomClient)
    	HLitSuivant()
    FIN
     
    MaRequête est une Source de Données
    SI HExécuteRequêteSQL(MaRequête,"MaConnexion",hRequêteSansCorrection,"SELECT IDClients,NomClient,DateCreation FROM Clients")=Vrai ALORS
    	// lecture du premier enregistrement de la requête
    	HLitPremier(MaRequête)
    	TANTQUE PAS HEnDehors()
    		Info(MaRequête.NomClient)
    		// lecture de l’enregistrement suivant
    		HLitSuivant()
    	FIN
    FIN
     
    MaRequête2 est une Source de Données
    SI HExécuteRequêteSQL(MaRequête2,"SELECT IDClients,NomClient,DateCreation FROM Clients")=Vrai ALORS
    	// lecture du premier enregistrement de la requête
    	HLitPremier(MaRequête)
    	TANTQUE PAS HEnDehors()
    		Info(MaRequête.NomClient)
    		// lecture de l’enregistrement suivant
    		HLitSuivant()
    	FIN
    FIN
    je ne vois pas pourquoi celà ne fonctionne pas chez toi.
    Emmanuel Lecoester
    => joomla addict.

  14. #14
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Bonsoir,
    Citation Envoyé par rphenix
    Selon Windev, il s'agit de déclaration implicite des membres de la source de données déclarées..
    Ben là, c'est pas vraiment implicite, puisque tu leur aassignes explicitement une valeur !!! Et en l'espèce, il doit plutôt considérer cette déclaration comme un passage de paramètres ...
    Vire les 3 lignes et fait comme manu te dit (sauf la partie insertion des données) et cela devrait fonctionner ...
    Cordialement,
    Christophe Charron

  15. #15
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Points : 40
    Points
    40
    Par défaut
    Je vous remercie sincèrement, ci-dessous le code utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	HChangeConnexion(sClient,"UneConnexion")
    	SI HExécuteRequêteSQL(sClient,"UneConnexion",hRequêteSansCorrection,"SELECT CODECLI,NOM,PRENOM FROM ABONNE WHERE CODECLI NOT LIKE '9%'")=Vrai ALORS		
    		// lecture du premier enregistrement de la requête
    		HLitPremier(sClient)
    		TANTQUE PAS HEnDehors()
    			Info(sClient.NOM + sClient.PRENOM + sClient.CODECLI)
    			// lecture de l’enregistrement suivant
    			HLitSuivant()
    		FIN
    Et j'ai mes résultats....
    Encore merci.

  16. #16
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Citation Envoyé par rphenix
    ...
    Et j'ai mes résultats....
    Encore merci.
    Alors n'oublie pas d'indiquer la conversation comme résolue ...
    Cordialement,
    Christophe Charron

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sauvegarder une Base de données Oracle 8
    Par benjamin50 dans le forum Administration
    Réponses: 7
    Dernier message: 16/06/2009, 11h36
  2. Réponses: 4
    Dernier message: 25/11/2005, 19h58
  3. Réponses: 5
    Dernier message: 08/07/2005, 13h10
  4. volume d'une base de donnée oracle 9i
    Par tarik75 dans le forum Oracle
    Réponses: 8
    Dernier message: 27/06/2005, 11h50
  5. Purge d'une Base de Données ORACLE 8i
    Par manar dans le forum Administration
    Réponses: 18
    Dernier message: 24/09/2004, 11h49

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