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

VB 6 et antérieur Discussion :

[VB6]Connection à une base de données Oracle [Infos]


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut [VB6]Connection à une base de données Oracle
    Bonjour,

    je suis nouveau avec VB6, et je me pose deux petites questions probablement très simples pour vous tous...

    J'ai réussi à communiquer avec VB à une base de donnée Oracle avec ADO (grâce aux superbes tutoriaux sur ce site), mais je n'ai pas trouvé un moyen de demander à l'utilisateur qu'il rentre lui-même son nom d'utilisateur et son mot de passe (je dois présentement l'écrire directement dans l'objet de connection, ce qui n'est pas idéal comme je dois gérer différents privilèges selon l'utilisateur Oracle). Quelqu'un peut-il m'aider?

    Second problème, j'ai réussi à trouver que je peux mettre des '?' dans une requête SQL pour ensuite passer en paramètre (supposément) les données en mode exécution, mais je ne vois pas où et comment passer ces paramètres. J'ai bien regardé MSDN et les différents tutoriaux sur le site, mais rien à faire, je ne trouve pas. (Pour être plus précis, j'ai un combobox branchée à Oracle avec certaines valeurs, et je désire qu'il exécute une autre requête SQL avec dans la clause WHERE un filtre sur l'élément du premier combobox...)

    Merci beaucoup, et j'espère avoir été assez clair dans mes explications,

    Mathieu

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    Rebonjour...

    je crois avoir réussi à me connecter grâce au code suivant...

    ---
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          Dim Conn As New ADODB.Connection
          Dim Rs As ADODB.Recordset
          Dim strSQL As String
     
          'Oracle Connection
          Conn.Open "Provider=MSDAORA.1;User ID=monLogin;Data Source=maSource;Persist Security Info=False", text1.text, text2.text
    ---

    Maintenant j'essaie d'associer un recordset à une composante dataCombo, et cela me donne une erreur... je ne comprend pas trop pourquoi...

    ---
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
          strSQL = "SELECT Distinct(initiales) FROM cjt_cn_tb_employe"
     
          Set Rs = New ADODB.Recordset
          Rs.Open strSQL, Conn, adOpenStatic, adLockReadOnly
     
          DataCombo1.RowSource = Rs    <-- Erreur ici
          DataCombo1.ListField = "Initiales"
          DataCombo1.BoundColumn = "Initiales"
          DataCombo1.Refresh
    --

    Est ce que c'est possible d'associer un recordset a un rowsource...? Sinon comment procéder?

    Désolé de poser tant de question, mais j'essaie de comprendre...

    Merci encore!

    Mathieu

    [Balise "Code" rajoutée par Khany]
    [Pensez-y vous-même à l'avenir. Merci. ]

  3. #3
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Il te manque le SET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set datacomb1.Datasource =
    Set datacombo1.Rowsource =
    Obligatoire ces 2 là

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    Merci beaucoup pour la réponse...

    j'ai réussi à beaucoup avancer... je n'ai plus d'erreur, et j'ai même un résultat visible qu'il lit dans la base de données. Le seul problème c'est qu'il me montre seulement le 1er enregistrement de mon SELECT dans la propriété .Text, et quand je clique sur mon combobox aucune donnée n'apparaît.

    Coici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          DataCombo1.ListField = "Initiales"
          DataCombo1.BoundColumn = "Initiales"
          DataCombo1.DataField = "Initiales"
     
          Set DataCombo1.RowSource = Rs
          Set DataCombo1.DataSource = Rs
    Je suspecte que je ne dois pas mettre la même chose dans le rowsource et le datasource (et listfield vs datafield je crois), mais ne sachant trop la différence je ne réussi pas à résoudre mon problème.

    Merci encore!

    Mathieu

  5. #5
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Si dans Datasource et rowsource, c'est ton Rs, pas de prob !

    Par contre attention : si tu mets dans Datafield le champ "Initiales", dès que tu vas cliquer sur le datacombo, il va mettre à jour ta BD

    donc, tu mets seulement le champ "Initiales" dans ListField

    tu peux récupérer l'enregistrement sélectionné dans la datacombo via la propriété Bookmark du Rs et SelectedItem de la DataCombo.

  6. #6
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    Je me posais la question... dois-je remplir un a un les champs d'un combobox pour le remplir des valeurs d'un Recordset? Je vois les méthodes moveFirst et moveNext, et je dois peut-être remplir manuellement les valeurs? En ce moment, rien n'apparaît dans la liste déroulante du combobox.

    Ça serait bien si je pouvais associer tout un recordset à un datacombo...

    Merci encore,

    Mathieu

  7. #7
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Euh c'est ce que tu fais quand tu remplis rowsource, datasource et lisfield

    Là, je te suis plus

  8. #8
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    Hehehe. désolé si je ne suis pas clair...

    En ce moment, avec le code complet suivant:

    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
          Dim Conn As New ADODB.Connection
          Dim Rs As ADODB.Recordset
          Dim strSQL As String
     
          'Oracle Connection
          Conn.Open "Provider=MSDAORA.1;User ID=cj;Data Source=adop;Persist Security Info=False", Text1.Text, Text2.Text
     
          'Oracle Connection
          strSQL = "SELECT Distinct(initiales) FROM cjt_cn_tb_employe WHERE initiales is not null"
     
          Set Rs = New ADODB.Recordset
          Rs.Open strSQL, Conn, adOpenStatic, adLockReadOnly
     
          DataCombo1.ListField = "Initiales"
          DataCombo1.BoundColumn = "dispensateur"
          'DataCombo1.DataField = "Initiales"
     
          Set DataCombo1.RowSource = Rs
          Set DataCombo1.DataSource = Rs
     
          DataCombo1.Refresh
    où "dispensateur" est ma clé unique, et "initiales" est le champs à afficher, dans le DataCombo1.Text je vois les initiales "AB" d'écrit (le premier enregistrement de ma requête).

    Or, si je clique sur le combobox pour sélectionner d'autres enregistrements, la liste qui apparaît est vide... il n'y a même pas le champ "AB" qui apparaît.

    Une idée pourquoi ça n'apparaît pas?

  9. #9
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Ah là, je comprends mieux !

    tu dois utiliser un autre rs car le select distinct ne sélectionne que la colonne qui intéresse pour afficher les clés uniques

  10. #10
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    Rebonjour!

    J'ai beau tenter de créer un autre rs, je ne suis pas sûr de ce que je dois faire exactement... je sais que j'en demande beaucoup (vraiment désolé!), mais est-ce que je pourrais vous demander une partie de code pour illustrer votre point?

    Merci mille fois encore,

    Mathieu

  11. #11
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Attends, on reprend et on fait une synthèse :

    1) tu as un datacombo avec un select distinct
    2) tu parles de combobox, c un autre composant dans lequel tu sélectionnes qque chose ?

    Fias un ti plan stp simple et court pour que je puisse suivre, à mon avis tu n'es pas loin mais on ne se comprends pas à 100 %

  12. #12
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    Hehehe

    Pour l'instant, j'ai un seul datacombo que je tente d'initialiser à l'exécution à l'aide d'ADO, en voulant l'associer à un recordsource avec comme sql associé: "SELECT distinct(initiales), max(dispensateur), dispensateur FROM cjt_cn_tb_employe WHERE initiales is not null" (j'avais oublié auparavant de faire afficher la clé unique "dispensateur" pour l'associer au boudcolumn). Je désire afficher chacune des initiales, mais en ce moment rien n'apparaît (j'ai réalisé qu'il affichait le 1er élément de la requête seulement si j'indique "initiales" à l'intérieur du datafield).

    J'ai pour l'instant un seul recordsource associé au datacombo.

    Merci!

  13. #13
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    oki je relis à tête reposée et je vais voir !

    je suis pas sure que le select distinct accepte plus d'un champ je dois vérifier

  14. #14
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    oops, j'ai mal recopié le select...

    SELECT distinct(initiales), dispensateur FROM cjt_cn_tb_employe WHERE initiales is not null;

    désolé...

  15. #15
    Membre confirmé
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Par défaut
    Citation Envoyé par Zoilus
    oops, j'ai mal recopié le select...

    SELECT distinct(initiales), dispensateur FROM cjt_cn_tb_employe WHERE initiales is not null;

    désolé...
    comme l'a dit déjà khany, le Select DISTINCT n'accepte qu'un seul champ.

  16. #16
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    même sans le distinct, je n'obtient aucun résultat...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT initiales, dispensateur FROM cjt_cn_tb_employe WHERE initiales is not null

  17. #17
    Membre confirmé
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Par défaut
    je doute un peu avec le IS NOT NULL, essaye de supprimer dans un premier temps la clause WHERE, si ca marche alors ca vient du IS NOT ..

  18. #18
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    J'ai enlevé la clause WHERE, et ça ne marche toujours pas...

    (j'ai testé mes requêtes dans SQL*PLUS, et elles fonctionnent à cet endroit)

  19. #19
    Membre confirmé
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Par défaut
    Citation Envoyé par Zoilus
    J'ai enlevé la clause WHERE, et ça ne marche toujours pas...

    (j'ai testé mes requêtes dans SQL*PLUS, et elles fonctionnent à cet endroit)
    c quoi le message d'erreur exactement et es-tu sur que ca vient de la requete

  20. #20
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 27
    Par défaut
    Je ne reçois aucun message d'erreur, c'est seulement que le datacombo demeure vide (si j'inscrit un datafield, le 1er champ de la requête apparaît dans le champs texte, mais pas dans le menu déroulant).

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Peut-on se connecter a une base de donnée de multimania ?
    Par seb_bacteria dans le forum Bases de données
    Réponses: 5
    Dernier message: 03/04/2006, 21h39
  2. connection a une base de donné access
    Par akimmm dans le forum MFC
    Réponses: 5
    Dernier message: 19/11/2005, 00h08
  3. connection a une base de données dans univers Hibernate
    Par lilou77 dans le forum Hibernate
    Réponses: 10
    Dernier message: 26/10/2005, 10h48
  4. connection a une base de donnée access
    Par zorglub88 dans le forum MFC
    Réponses: 7
    Dernier message: 10/06/2005, 14h12
  5. se connecter à distance à une base de données interbase 6
    Par devalender dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/05/2004, 17h39

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