Problème de requete sql avec vb

touzack Messages postés 29 Statut Membre -  
 Polux31 -
Salut a vous tous.
j'aimerai savoir s'il est possible de faire des requete inbriquées avec sql en utilisant une chaine de connection?
j'effectue d'abord ma connection a la base de la maniere suivante:

dim cnx as adodb.connection
uid = " touzack "
pwd = " motpasse "
dBase = " courrier "

Set cnx = New ADODB.connection
Conn = "UID= " & uid & ";PWD=" & pwd & ";DRIVER={Microsoft ODBC For Oracle};" _
& "SERVER=" & dBase & ";"

With cnx
.ConnectionString = Conn
.CursorLocation = adUseClient
.Open
End With
ensuite j'ai declarer rsdeposer et rscourrier comme des recordset.

Mon probleme est de savoir comment traduire la requete suivante en utilisant mais deux recordset rescourrier et rspersonne
pour avoir les champs de ma requete dans le recordset rscourrier :

Select * from Courrier_entrant
where num_cour in ( select num_cour from Deposer
where Code_serv= "vv" and date_recept="12/10/2007" )
Configuration: Windows XP
Opera 8.54

1 réponse

  1. Polux31
     
    bonjour,

    J'utilise un module générique pour la connection à la base et dans le lequel j'ai une fonction qui passe la requete à la bdd et un recordset par référence pour récupérer les données. Dans ton cas ça donnerai un truc comme ça:

    Public sub EnvoiQuery()
    dim vrai as boolean
    dim RS as ADODB.RecordSet
    dim Query as string

    On Error Resume Next
    set RS = new ADODB.RecordSet
    Query = "Select * from Courrier_entrant"
    Query = Query + "where num_cour in ( select num_cour from Deposer where Code_serv= "vv" and date_recept=' " & myDate & " ' "

    vrai = modBdd.OuvrirRecordSet(Query, RS)
    if vrai = False then
    msgbox "Erreur: la requête [" & Query & "] n'a pas abouti.", ,"Message Errreur"
    Exit sub
    else
    // le code a exécuté si le retour est = True
    end if

    end sub

    --------------------

    ModBdd

    Dim cnnADO As New ADODB.Connection ' Pour la connection à la base de données
    Dim cmdAdo As New ADODB.Command ' Pour la commande à la base de données
    Dim RScnx As New ADODB.Recordset ' Pour recevoir le résultat de la commande

    ..........

    ' Fonction générique pour le passage d'une requête à la base de données, reçois la requete et le recordset, retourne un booléen
    Public Function OuvrirRecordset(ByVal requete As String, ByRef RS As ADODB.Recordset) As Boolean

    Call setNbEnr(0) 'initialise le nb d'enregistrement
    If RS.State = adStateOpen Then ' test le statut de la base
    RS.Close
    End If

    On Error Resume Next
    RS.Open requete, ModBdd.cnnADO, , , adCmdText 'Envoi du recordset
    Call setNbEnr(RS.RecordCount) ' Nombre de record

    If Err.Number <> 0 Then
    OuvrirRecordset = False 'La transaction n'est pas réalisée, retourne False
    Exit Function
    End If

    RS.MoveFirst ' Positionnement sur le premier enregistrement du RecordSet
    OuvrirRecordset = True ' La transaction a été réalisée, retourne True

    End Function

    ..........

    Après à toi de faire le traitement des données contenues dans le RecordSet.

    Bon courage

    Polux
    0