Requete SQL a partir d'un RecordSet existant

cs_Obi_1 Messages postés 21 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 juin 2006 - 4 avril 2006 à 08:55
cs_Obi_1 Messages postés 21 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 juin 2006 - 8 avril 2006 à 16:37
Bonjour,

J'ai un prog en VB6 qui se connecte à une base de données Access (connection à l'aide d'un objet DataEnvironment, Microsoft Jet 4.0). J'utilise des objets ADODB.RecordSet pour mettre les resultats de mes requetes, ce qui fonctionne sans problème pour le moment, mais j'aimerais maintenant utiliser un de ces RecordSet pour faire une autre requete...

Pour etre plus clair, voilà ce que j'ai essayé (Note: "Temp_Config" est une classe qui contient "Initial_RecordSet", de type ADODB.RecordSet):

DBConnection = DataEnvironment.Connection
rs1.Open "SELECT ....", DBConnection
rs2.Open "SELECT type FROM " & rs1, DBConnection

Le premier recordset rs1 est bien cree, mais pas rs2...comment faire une deuxième requete sur "type" à partir de rs1?? J'ai cherche sur le forum sans trop de succes jusqu'a present...mais je pense que ca doit etre possible de faire ce genre de requete en VB.

Merci de votre aide!

Sebastien

4 réponses

BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
4 avril 2006 à 09:33
j'ai repris une veille source, et a l'epoque j'avais fait comme ca ^^

rs1.Open "select * from clients where blabla", cnn
rs2.Open "select raisonSociale from (" & rs1.Source & ")", cnn

++

BasicInstinct
0
cs_Obi_1 Messages postés 21 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 juin 2006
4 avril 2006 à 10:29
Merci, ca marche très bien avec ta solution!!

Juste une dernière question...comment mettre à la suite 2 RecordSet dans un seul RecordSet? La methode "Append" ne semble pas marcher pour ca...
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
8 avril 2006 à 00:35
Salut 521440 Obi_1, salut =4062 BasicInstinct,

"SELECT Champ1 FROM Table1 UNION SELECT Champ2 FROM Table2;"

Attention, le schéma doit avoir au moins la même signature (mêmes champs, en nombre et en nom), et suivant les SGBDR, le même typage de la signature, dans les 2 (ou x) requêtes.

à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
cs_Obi_1 Messages postés 21 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 13 juin 2006
8 avril 2006 à 16:37
J'ai trouvé une solution sur un 2nd forum, je mets le code ici au cas où quelqu'un a le meme probleme que moi. C'est une fonction qui concatene plusieurs recordsets mis en parametres, en utilisant xml (il faut ajouter la reference XML, version 2.0):

Function ConcatRecordsets(ParamArray RecSets()) As ADODB.Recordset


Dim SourceDOM As MSXML.DOMDocument
Dim DestDOM As MSXML.DOMDocument
Dim DestDataNode As MSXML.IXMLDOMNode
Dim SourceRowNode As MSXML.IXMLDOMNode
Dim SourceRowNodes As MSXML.IXMLDOMNodeList
Dim rs As Variant


For Each rs In RecSets
If DestDOM Is Nothing Then
Set DestDOM = Nothing
Set DestDOM = New MSXML.DOMDocument
rs.Save DestDOM, adPersistXML
Set DestDataNode = DestDOM.selectSingleNode("xml/rs:data")
Else
Set SourceDOM = Nothing
Set SourceDOM = New MSXML.DOMDocument
rs.Save SourceDOM, adPersistXML
Set SourceRowNodes = SourceDOM.selectNodes("xml/rs:data/z:row")

For Each SourceRowNode In SourceRowNodes
DestDataNode.appendChild SourceRowNode.cloneNode(True)
Next
End If
Next


Dim rsFinal As ADODB.Recordset
Set rsFinal = New ADODB.Recordset
rsFinal.Open DestDOM


Set ConcatRecordsets = rsFinal


End Function
0
Rejoignez-nous