Problème de requete sql avec vb
touzack
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
Polux31 -
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" )
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:
- Problème de requete sql avec vb
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
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
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