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] Ado Vb Oracle


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Par défaut [VB6] Ado Vb Oracle
    Bonjour,
    je souhaite executer une procédure qui renvoi un curseur, et faire cet appel en ado.
    J'ai trouver des exemples en OLE, mais je préverais utilisé ADO (histoire de reste homogene dans tout l'appli...)
    Donc si quelqu'un la fait je suis preneur d'un exemple...
    Merci

  2. #2
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    ben nous on est preneur de ta solution, puisque tu as mis [résolu]

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Par défaut
    Oui, j'ai posé la question puis vu que j'avais pas de réponse (j'étais impatient ) donc j'ai creusé un peu ce que j'avais écris et ça à marcher , donc ma question étais résolue
    Voici le code je mets tout le code module les mots de passe et truc confidentiel .
    Pour expliquer un peu ce qui ce passe (je suis pas un dieu des commentaires 8) ).
    Voila mon problème était de faire une procédure stocké PL/SQL dynamique qui renvoie un recordset et d'utiliser ce recordset en VB6 via ADO.

    Voici le PL/SQL :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
     
     
    CREATE OR REPLACE PACKAGE Historique AS
       TYPE HistoCurTyp IS REF CURSOR ;
       PROCEDURE PR_HISTORIQUE_ETENDU (cur_histo OUT HistoCurTyp
                                        , pClient NUMBER
                                        , pEtab NUMBER
                                        , pAffaires NUMBER
                                        , pBenef VARCHAR2
                                        , pActivite VARCHAR2
                                        , pAssocie NUMBER
                                        , pTypeRequete NUMBER);
    END Historique;
     
     
    CREATE OR REPLACE PACKAGE BODY Historique AS
       PROCEDURE PR_HISTORIQUE_ETENDU (cur_histo OUT HistoCurTyp
                                        , pClient NUMBER
                                        , pEtab NUMBER
                                        , pAffaires NUMBER
                                        , pBenef VARCHAR2
                                        , pActivite VARCHAR2
                                        , pAssocie NUMBER
                                        , pTypeRequete NUMBER) 
       AS
         GINT_EcrClient        Number;         
         GINT_EcrEtablissement Number;
         str_RequeteDeb        Varchar2(32767);
         str_RequeteFin        Varchar2(32767);
     
       BEGIN
            GINT_EcrClient := 10;
            GINT_EcrEtablissement := 11;
     
            str_RequeteDeb := 'Select H.Dat_Hst "Date", T.Lib_Tab "Niveau",' ||
                 ' Decode(H.COD_DOC, Null, '''', H.COD_DOC || '': '') || E.Lib_Evt "Evènement", Nvl(H.Lib_ImgAvt, CO.LIB_NOMCOUDFT) "Image avant",' ||
                 ' H.lib_ImgApr "Image après", U.Lib_NomUsr "Utilisateur",' ||
                 ' H.Num_Eta "Etablissement", H.Num_Cli ||decode (H.Num_Aff, null,'''', ''/'')|| H.Num_Aff "Client/Affaire",' ||
                 ' B.Lib_Bnf "Bénéficiaire", A.Lib_Act "Activité", AR.Lib_Art "Article", ' ||
                 ' H.ROWID ' ||
                 ' From op.tr_Utilisateurs U,' ||
                 ' op.T_historique H,' ||
                 ' op.Tr_Tables T, op.Tr_Evenements E,' ||
                 ' op.tr_Beneficiaires B, op.Tr_Activites A, op.Tr_Articles AR,' ||
                 ' op.Tr_Courriers CO ' ||
                 ' Where T.Cod_Tab = H.Cod_Tab' ||
                 ' And U.Cod_USr = H.Cod_Usr' ||
                 ' And E.Cod_Evt  = H.Cod_Evt' ||
                 ' And B.Cod_Bnf (+)= H.Cod_Bnf' ||
                 ' And A.Cod_Act (+)= H.Cod_Act' ||
                 ' And AR.Cod_Art(+) = H.Cod_Art' ||
                 ' And CO.Cod_Cou (+) = H.Cod_Cou' ;
     
            str_RequeteFin := ' And (H.Num_Aff = :Affaire  or :Affaire = 0 or H.Num_Aff is null)' ||
                              ' And (H.Cod_Bnf = :Benef    or :Benef is null or H.Cod_Bnf is null)' ||
                              ' And (H.Cod_Act = :Activite or :Activite is null or H.Cod_Act is null)' ||
                              ' And (H.Num_Ass = :Associe  or :Associe = 0 or H.Num_Ass is null)' ;
     
     
                --Complément de requète selon l'écran appelant
            If pTypeRequete = GINT_EcrEtablissement Then
                str_RequeteFin := str_RequeteFin || ' And (H.Num_Cli = :Client or :Client = 0 or H.Num_Cli is null)' ||
                                                    ' And (H.Num_Eta  = :Etab or :Etab = 0) ' ;
            Else
                If pTypeRequete = GINT_EcrClient Then
                    str_RequeteFin := str_RequeteFin || ' And (H.Num_Cli  = :Client or :Client = 0)' ||
                                                        ' And (H.Num_Eta = :Etab or :Etab = 0 or H.Num_Eta is null)' ;
                Else
                    str_RequeteFin := str_RequeteFin || ' And (H.Num_Cli = :Client or :Client = 0 or H.Num_Cli is null)' ||
                                                        ' And (H.Num_Eta = :Etab or :Etab = 0 or H.Num_Eta is null)' ;
                End if; 
            End If;
     
            str_RequeteFin := str_RequeteFin || ' Order by H.Dat_Hst desc' ;
     
            OPEN cur_histo FOR 
                str_RequeteDeb || str_RequeteFin
            Using  pAffaires, pAffaires, pBenef, pBenef, pActivite, pActivite, pAssocie, pAssocie, pClient, pClient,  pEtab, pEtab;
     
       END PR_HISTORIQUE_ETENDU;
    END Historique;
    Ensuite l'appele à cette procédure en ADO

    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
    54
     
    '------------------------------------------------------------------
    Function GET_Recordset(ByRef oConn As ADODB.Connection)
    '------------------------------------------------------------------
    Dim cmd As ADODB.Command
    Dim rs As ADODB.Recordset
     
     
        On Error Resume Next
     
        Set rs = CreateObject("ADODB.RecordSet")
        Set cmd = CreateObject("ADODB.Command")
        Set cmd.ActiveConnection = oConn
     
        cmd.Properties("PLSQLRSet") = True
        cmd.CommandType = adCmdText
        cmd.CommandText = "{Call op.Historique.PR_HISTORIQUE_ETENDU( 32685, 37019, 1, 'toto', 'titi', 0, 10)}"
     
     
        rs.Open cmd, , adOpenForwardOnly
        If Err.Number <> 0 Then
            MsgBox (Err.Description)
            MsgBox (cmd.CommandText)
            Set GET_Recordset= Nothing
            Err.Clear
        Else
            Set GET_Recordset = rs
        End If
     
        cmd.Properties("PLSQLRSet") = False
        Set cmd = Nothing
    End Function
     
     
    Private Sub Command2_Click()
    Dim oRs As ADODB.Recordset
    Label4.Caption = Time
     Set oRs = get_recorset(gdba_Connection)
        Label5.Caption = oRs(0)
    Label6.Caption = Time
     
    End Sub
     
    Private Sub Form_Load()
     
        Set gdba_Connection = CreateObject("ADODB.connection")
        gdba_Connection.ConnectionString = "Provider=OraOLEDB.Oracle;" _
                                         & "Data Source=*****;" _
                                         & "User ID=*****;" _
                                         & "Password=****;" 
     
        gdba_Connection.Open
     
    End Sub
    Voila si tu souhaites plus d'explication sur le code, n'hésite pas
    La partie en PL/SQL est peut-être un peu hardue à lire et à comprendre si tu n'en a jamais fait.

    Bon courage

  4. #4
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Merci pour ceux que ca pourrait aider

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

Discussions similaires

  1. [VB6-ADO-Oracle] Verrouiller une base en lecture ?
    Par Vld44 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 19/11/2007, 17h33
  2. [VB6] [ADO] Pb MySql / VB
    Par Eperon dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 31/12/2002, 14h18
  3. [VB6] [ADO] Procedure stockée : spécifier les paramètres
    Par adepdoom dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/10/2002, 10h45
  4. [VB6] Connection ODBC Oracle
    Par babe dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/10/2002, 16h52
  5. [VB6] [ADO] Pb ajout enregistrement table liée
    Par fikou dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/10/2002, 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