Oracle et Recordset

zbooon Messages postés 2 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 13 avril 2006 - 12 avril 2006 à 16:47
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 14 avril 2006 à 00:39
Bonjour,

J'ai un probléme avec les RecordSet de VB et Oracle. J'ai une requête dans laquelle j'effectue une jointure entre 2 tables, cette requête passe parfaitemenent en ligne de commande Oracle [via SQL*Plus Worksheet] mais dès lors que j'utilise mon recordset, celle ci ne retourne aucun enregistrement, j'ai pu le vérifier via la propriété recordCount elle est egale à 0,mais ne génére pas d'erreur.


Code:
,
----

'on efface les resultats de la précédente recherche
listProp.ListItems.Clear

connect 'fonction de connexion a la BDD
Dim rcdRecord As ADODB.Recordset
Set rcdRecord = New ADODB.Recordset
Dim index As Integer
Dim strRequete As String
Dim strRecherche As String

strRecherche = Replace(txtSearch.Text, "'", "''")

'On formule la selection et la jointure de cette longue requête
strRequete = "SELECT proprietaire.idProp,nomProp,preProp," & _
"nomC,dateInscription," & _
"ville,typeVoie,nomVoie " & _
"FROM proprietaire,adrProprietaire " & _
"WHERE proprietaire.idProp = adrProprietaire.idProp "
[...]

'Une fois celle ci formulé, on l'exécute et on affiche les resultats
'dans notre listView
rcdRecord.Open strRequete, connexion

'txtSearch.Text = strRequete

index = 1
While rcdRecord.EOF = False
[...]
index = index + 1
rcdRecord.MoveNext
Wend

rcdRecord.Close

J'ai l'impression que l'erreur provient du fait que la requête cible 2 tables, d'ailleurs un simple "SELECT * FROM proprietaire" marche, alors qu'un "SELECT * FROM proprietaire, adrProprietaire" ne fonctionne pas (alors qu'il passe trés bien en ligne de commande oracle).

Je sais que cette requête est syntaxiquement correctement niveau sql. Je ne vois pas d'où vient l'erreur, je ne connais pas tout sur les RecordSet de VB j'ai d'ailleurs commencé la lecture de ce document
ftp://ftp2.developpez.be/developps/vb/Les%20recordsets%20ADO.pdf où je trouverai peut être les réponses a mon problème mais au cas ou quelqu'un aurai la réponse ca me permettrai d'aller plus vite...

Bref en résumé, dés que je fais une requête sur plusieurs tables aucun enregistrement n'est retourné alors que la même requête passe trés bien en ligne de commande oracle.
Lorsque je fais une requête sur une table ca passe trés bien via les RecordSet.... je ne comprend pas...

1 réponse

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
14 avril 2006 à 00:39
Salut zbooon,

je ne discuterais pas avec toi de la syntaxe de ta requête, mais déduire que VB n'arrive pas à exécuter une requête parce qu'il y a une jointure (1:1 en plus), non mais oh :) (encore, elle serait reflexive)

Enfin, bon, ce que je vois, c'est plus au niveau de VB. Ta requête fonctionne sur ORACLE, donc on peut en déduire qu'entre ta requête canonique et son exécution à travers ADO, ODBC, il se passe quelque chose. Malheureusement, il y a aussi un potentiel de "gourance" dans la concaténation (que tu ne fais pas sous ORACLE).

Je peux me tromper, mais avant d'accepter que VB n'arrive pas à faire un jointure (de toutes façons, c'est peut-être ADO, ou ODBC, ou le natif d'ORACLE :) ), je me dis qu'il serait peut-être utile au débat que tu nous montres ce qui se cache dans "[...]", juste avant l'exécution.

Qu'en penses-tu?
à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
Rejoignez-nous