Rechercher : dans
Par :

[Vb6/MySQL]probleme RecordCount

Dernière réponse le 10 avr 2008 à 14:43:59 essedik, le 14 mar 2006 à 16:33:26 
 Signaler ce message aux modérateurs

Bonjour Tout le monde
je developpe une application en VB6 qui utilise une bases de données MySQL j'ai declaré un objet de type ADODB.Recordset comme suit:

Dim rsselect As New ADODB.Recordset

mais lorsque je veux utiliser la methode RecordCount comme suit :
Debug.Print rsselect.RecordCount
il m'affiche tjrs
la valeur -1.
voila mon morceau de code en VB6:
SQLOF = "SELECT HistoriquePointages.OF, HistoriquePointages.DatePointage AS MaxDeDatePointage,HistoriquePointages.CodeEmploye, OF.Nom"
SQLOF = SQLOF & " FROM HistoriquePointages, OF"
SQLOF = SQLOF & " Where (HistoriquePointages.OF=OF.OF)"
SQLOF = SQLOF & " GROUP BY HistoriquePointages.OF, HistoriquePointages.CodeEmploye, OF.Nom"
SQLOF = SQLOF & " Having (((HistoriquePointages.CodeEmploye) = '" & Personnel.Code & "'))"
SQLOF = SQLOF & " ORDER BY HistoriquePointages.DatePointage DESC;"
Dim rsselect As New ADODB.Recordset
rsselect.Open SQLOF, AdoConnexion, adOpenStatic, adLockOptimistic
Debug.Print rsselect!OF
Debug.Print rsselect.RecordCount

connaissant que la ligne de code:
Debug.Print rsselect!OF

m'affiche le bon resulat cad que la requete s'execute
Quelqu'un a une idée la-dessus?
Merci pour toute collaboration.

Meilleures réponses pour « [Vb6/MySQL]probleme RecordCount » dans :
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
Réinitialiser le mot de passe root de MySQL VoirQue ce soit lors de la première installation ou après la perte du mot de passe principal de MySQL, il est nécessaire de pouvoir modifier le mot de passe administrateur (root) de MySQL. Vous avez perdu le mot de passe root de MySQL ? Pour pouvoir...
MySQL – Optimisation VoirL’optimisation au niveau de MySQL passe par trois composants, à savoir : Optimisation du serveur MySQL Optimisation de la base de données Optimisation des requêtes Optimisation de la configuration de serveur MySQL L’optimisation du serveur peut...
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
MySQL - Installation sous Windows VoirPrésentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...
Administration de MySQL VoirLa base de données mysql Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

2

Lupin, le 15 mar 2006 à 00:37:14

Bonjour,

Dim rsselect As New ADODB.Recordset

avant d'interroger le "recordset", l'ensemble créé par la requête,
il faut renseigner les pointeurs avec les lignes

rsselect.MoveLast
rsselect.MoveFirst
Debug.Print rsselect.RecordCount


Lupin

Répondre à Lupin

3

Essedik, le 15 mar 2006 à 09:36:10

Bonjour
Merci bien pour votre reponse, j'ai testé vos ligne de code mais il ya tjrs une erreur au niveau de :
rsselect.MoveLast
pouvez me fournir plus d'explication surtout sur l'idée des pointeurs avec MySQL.
Merci de vouloir continuer la discussion

Répondre à Essedik

4

Lupin, le 15 mar 2006 à 19:41:28

Re:

désolé, je me suis tromper !

les lignes doivent apparaitre la requête.

re:

désolé, je me suis tromper !

les lignes doivent apparaitre la requête.

Dim rsselect As New ADODB.Recordset

SQLOF = "SELECT HistoriquePointages.OF, HistoriquePointages.DatePointage AS MaxDeDatePointage,HistoriquePointages.CodeEmploye, OF.Nom"
SQLOF = SQLOF & " FROM HistoriquePointages, OF"
SQLOF = SQLOF & " Where (HistoriquePointages.OF=OF.OF)"
SQLOF = SQLOF & " GROUP BY HistoriquePointages.OF, HistoriquePointages.CodeEmploye, OF.Nom"
SQLOF = SQLOF & " Having (((HistoriquePointages.CodeEmploye) = '" & Personnel.Code & "'))"
SQLOF = SQLOF & " ORDER BY HistoriquePointages.DatePointage DESC;"
rsselect.Open SQLOF, AdoConnexion, adOpenStatic, adLockOptimistic

rsselect.MoveLast
reselect.MoveFirst

Debug.Print rsselect.RecordCount

Lupin

Répondre à Lupin

Essedik, le 16 mar 2006 à 08:46:25

Bonjour
Merci bcp Lupin mon probleme est resolu mais j'ai rencontré un autre probleme:
j'ai declaré un Recordset et j'ai acces à ce recordset :

 Dim rsselectdeb As New ADODB.Recordset
Set rsselectdeb = AdoConnexion.Execute(sqlselectdebut)

et la ligne code suivante me renvoie un resultat:
rsselect.MoveLast
Debug.Print rsselect!OF

Ma requete est la suivante
Dim sqlselectdebut As String
sqlselectdebut = "select * from Pointages "
sqlselectdebut = sqlselectdebut & " WHERE (((Pointages.Matricule)= '" & Personnel.Code & "') "
sqlselectdebut = sqlselectdebut & " And  ((Pointages.HeureFin)Is Null)) "

mais le probleleme que la ligne de code :
Debug.Print rsselectdeb.EOF
Debug.Print rsselectdeb.BOF
m'affiche tjrs la valeur True cad que l'enregistrement est vide.la table sur laquelle je fait la requete "Pointages" contient 1024 enregistrement est ce que le probleme est là?
Merci pour toute collaboration.

Répondre à Essedik

5

Lupin.A, le 16 mar 2006 à 16:05:05

Re:

je recommance mon texte :

avant d'interroger le "recordset", l'ensemble créé par la requête,
il faut renseigner les pointeurs avec les lignes

rsselect.MoveLast
rsselect.MoveFirst
Debug.Print rsselect.RecordCount

vous tenter d'interroger le recordset alors que les pointeurs
ne sont pas renseignés !

Debug.Print rsselectdeb.EOF
Debug.Print rsselectdeb.BOF

Le [ .MoveLast ] et le [ .MoveFirst ] ne sont pas optionnel.
si vous ne placez pas ces 2 lignes, les pointeurs ne sont pas
tous renseignés.

ceci en supposant que la requete est bonne !

Lupin

Répondre à Lupin.A

6

Essedik, le 17 mar 2006 à 11:10:54

Bonjour
Merci bien pour votre reponse Lupin
j'ai ajouté les deux lignes
rsselectdeb.MoveLast
rsselectdeb.MoveFirst
mais j'ai tjrs le meme probleme , pour la requete apparement il n'a ya pas de probleme ; je l'ai testé sur le meme code mais avec une base access equivalente à celle de MySQL et ça marche normalement; le probleme est-elle due à la taille de la table(1024 enregistrement) ou à l'acces à la syntaxe d'execution de la requete?
je me bloque dans mon travail et je ne peux plus avancer.
Merci de bien vouloir continuer la discussion.

Répondre à Essedik

10

Renfield, le 1 avr 2008 à 12:08:01

Le recordCount sera toujours à -1 si le Curseur est du coté du Serveur...

ajoutes :
rsSelectDeb.CursorLocation = adUseClient

avant l'ouverture du Recordset.

Répondre à Renfield

7

Lupin.A, le 17 mar 2006 à 12:28:47

Re:

malheureusement, je ne connais pas assez MySQL pour aller
plus loin. Sous Access, vous devriez obtenir un résultat.

Lupin

Répondre à Lupin.A

8

Pascal_22, le 22 mar 2006 à 19:08:03
  • +1

Salut !!

Est-ce que le problème persiste, je sais pourquoi le
recordcount =-1 et que ton movelast/movefirst ne fonctionne pas !!!

a+
Pascal_22

Répondre à Pascal_22

9

gueye, le 28 mai 2007 à 20:30:50

Bjr
je vx me connecter sur une bd Mysql et je trouve une erreur sur la decraration du driver. si qlq un peut m aider?

voici le code:
Dim strConn As String, strSql As String
strConn = "Provider=Microsoft ADO 3.51 Object Library;Data Source=.\gueye;Persist Security Info=False"
strSql = "select * from Client"

Set oConn = New ADODB.Connection
oConn.Open strConn

Set oRs = New ADODB.Connection

oRs.Open strSql, oConn, adOpenStatic

Répondre à gueye

11

koberfo, le 10 avr 2008 à 14:28:05

Bonjour,
Merci de m'aider.j'ai un message d'erreur au niveau de la ligne suivante:
nb = rst.RecordCount + 1

Mon code est le suivant:

Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection
cnx.Provider = "Microsoft.Jet.OLEDB.4.0"
cnx.ConnectionString = "C:\print1\cheque.mdb"
cnx.Open

Set rst = New ADODB.Recordset
rst.ActiveConnection = cnx
rst.LockType = adLockOptimistic
Dim nb As Double

nb = rst.RecordCount + 1

rst.Open "INSERT INTO cheque [(code[, num_cheque[, date_chek[, date_ops[, montant_chiffre[, montant_lettre[, beneficiaire[, utilisateur]]]]]]])]VALUES (nb[, num_cheque.text[, date_chek.text[, date_chek.text[, montant_chiffre[, montant_lettre.text[, beneficiaire.text[, 'vol']]]]]]])"

Répondre à koberfo

12

 Renfield, le 10 avr 2008 à 14:43:59

Tu ne peux questionner le recordcount : ton recordset est fermé et ne contien, donc, aucun enregistrement

quant à ta requete, elle est.... étrange (présence de toutes ces [ et ]

je pense que tu souhaitais faire :

rst.Open "INSERT INTO cheque ([code], [num_cheque], [date_chek], [date_ops], [montant_chiffre], [montant_lettre], [beneficiaire], [utilisateur]) VALUES (" & nb & ", '" & num_cheque.text & "', #" & Format$(date_chek.text, "MM\/DD\/YYYY") & "#, #" & Format$(Date,"MM\/DD\/YYYY") & "#, " & montant_chiffre & ", '" & montant_lettre.text & "', '" & beneficiaire.text & "', 'vol')"

Répondre à Renfield
Collection CommentÇaMarche.net