Problème de requete sql avec vb

Fermé
touzack Messages postés 27 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 3 mai 2009 - 25 sept. 2007 à 10:11
 Polux31 - 5 oct. 2007 à 14:32
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" )
A voir également:

1 réponse

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