Afficher le resultat d'une requete avec recordset

wouldsmina Messages postés 18 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 8 mars 2007 - 12 févr. 2007 à 11:21
parpins Messages postés 4 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 22 août 2009 - 17 juil. 2009 à 12:07
bonjour,
je suis debutant en vb 2005 et j'ai beaucoup de mal avec les recordset...
alors j'arrive (a priori) a me connecter à la base mysql,  je lance ma requete:

Rs = MySQL_Select(Connexion, "nomEtbC", "etbs") 

par l'intermediaire de ma fonction :
Public Function MySQL_Select(ByRef MySQL_Conn As ADODB.Connection, ByVal Fields As String, ByVal Table As String, Optional ByVal Where As String "", Optional ByVal Order As String "") As ADODB.Recordset

        Dim strSQL As String

        'Select string
        strSQL = "SELECT " & Fields & " FROM " & Table
        If Where <> "" Then strSQL = strSQL & " WHERE " & Where
        If Order <> "" Then strSQL = strSQL & " ORDER BY " & Order

        MySQL_Select = New ADODB.Recordset
        MySQL_Select.CursorLocation = ADODB.CursorLocationEnum.adUseServer
        MySQL_Select.Open(strSQL, MySQL_Conn)

    End Function

mon probleme est que lorsque je fait un  "MessageBox.Show(Rs.RecordCount)" la valeur retourner est -1 alors que ma requete doit me renvoyer pres de 300 reponse!!!

bien sur se n'est pas moi qui est fait le code, je l'ai pompé sur le web est je l'ai remodelé a ma maniere, alors...
Cela fait 2 jours que je m'acharne, sans resultat, et je commence a perdre patience, alors s'il vous plait aidez moi

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 févr. 2007 à 11:37
-1 c'est pas 0 ^^

tente un MySQL_Select.MoveLast après ton Open

NB: Ton code c'est <strike>presque</strike> du VB6.... les .NETiens ne vont pas forcément apprecier ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
wouldsmina Messages postés 18 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 8 mars 2007
12 févr. 2007 à 12:02
ah bon c'est du vb6??? comment fait on la difference?
j'ai fait un MySQL_Select.MoveLast juste apres MySQL_select.open mais j'ai un message d'erreur :
L'ensemble de lignes ne prend pas en charge les récupérations arrière.
et ca veut dire quoi le -1 du Rs.recordcount?

NETiens et NETiennes pardonnez moi de faire du mauvais code .NET ou presque du VB6....
0
parpins Messages postés 4 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 22 août 2009
17 juil. 2009 à 11:42
Bonjour

je cherche aussi la solution à ce problème

j'utilise vba sous excel pour me connecter à Oracle.

voici mon code (mon objet connection appartient déjà à ma classe):

'Déclaration des variables
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset

'Instanciation des variables
Set cmd = New ADODB.Command
Set rst = New ADODB.Recordset

'Préparation de l'objet Command
cmd.CommandText = "SELECT * FROM MA_TABLE"
cmd.ActiveConnection = mobjCon 'attribut de classe

'Exécution de la requête
Set rst = cmd.Execute

rst.MoveLast 'renvoi l'erreur "L'ensemble des lignes ne prend pas en charge les récupérations arrière"

rst.RecordCount 'renvoi toujours -1


Visiblement le problème viendrait du parametrage du recordset.
certains recordset n'acceptent pas cette méthode
d'ou ma question comment avoir le bon recordset?

merci d'avance

parpins
0
parpins Messages postés 4 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 22 août 2009
17 juil. 2009 à 12:07
pour que cela fonctionne remplacer CursorType et LockType comme suit:

rst.CursorType = adOpenStatic
rst.LockType = adLockOptimistic
rst.ActiveConnection = mobjCon
rst.Source = "SELECT * FROM P_SUB"
rst.Open

fonctionne sans le moveLast :)

j'espere que cela pourra aider certains...

parpins
0
Rejoignez-nous