cs_whispers
Messages postés7Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention 1 mars 2007
-
28 janv. 2005 à 20:47
cs_whispers
Messages postés7Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention 1 mars 2007
-
31 janv. 2005 à 12:22
Bonjour,
J'ai une base ACCESS2000 avec deux tables (Tbarticle, Tbreception)
J'ai ecris une fonction GetLibelleArticle() ci-dessous pour récupérer le libelle de l'article à partir d'un code (code saisie dans Tbreception).
Malheureusement la fonction ne fonctionne pas - pouvez m'expliquer pourquoi ? Mon recordset est = -1 or l'article existe bien.
Et plus généralement, sous ACCESS lorsque je fais:
---> recordsetX.open requeteSQL (avec clause WHERE), ca ne marche pas
je suis obligé de faire
---> recordsetX.open nomtable ou select * from table
Je vous remercie
Public Function GetLibelleArticle(arcod, libelle) As Integer
Dim rst_art As ADODB.Recordset
Dim retour As Integer
Dim rqsql As String
libelle = ""
retour = 0 rqsql "select tbarticle.ar_lib from tbarticle where tbarticle.ar_code '" + arcod + "';"
rst_art.Open rqsql, CurrentProject.Connection
If rst_art.RecordCount > 0 Then
libelle = rst_art.Fields("ar_lib")
retour = 1
End If
rst_art.Close
GetLibelleArticle = retour
End Function
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 28 janv. 2005 à 23:01
Tu as le choix entre ça pour calculer le RecordCount :
rst_art.Open rqsql, CurrentProject.Connection, adOpenStatic
ou ça pour remplacer ton test
<STRIKE>If rst_art.RecordCount > 0 Then</STRIKE> if not rst_art.eof then
PS : il te manquerait pas un "Set rst_art = New Recordset" ?
Ci-dessous le résumé de MSDN sur le pb du RecordCount = -1 :
Si l'objet Recordset accepte le positionnement approximatif ou les signets (c'est-à-dire que Supports (adApproxPosition) ou Supports (adBookmark) renvoie la valeur True), la valeur de RecordCount est le nombre exact d'enregistrements du Recordset, que ce dernier soit complet ou non. Si l'objet Recordset ne prend pas en charge le positionnement approximatif, cette propriété peut peser lourdement sur les ressources dans la mesure où tous les enregistrements doivent être extraits et comptés pour qu'une valeur RecordCount exacte puisse être renvoyée.
Le type de curseur de l'objet Recordset détermine si le nombre d'enregistrements peut ou non être établi. La propriété RecordCount renvoie les valeurs suivantes : -1 pour un curseur de défilement vers l'avant seulement, le compte effectif pour un curseur statique ou à jeu de clés, -1 ou le compte effectif (selon la source de données) pour un curseur dynamique.
Manu94600
Messages postés107Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention20 février 2008 28 janv. 2005 à 23:51
Moi perso je ferais ca :
Public Function GetLibelleArticle(arcod) As String
Dim rst_art As ADODB.Recordset
Dim rqsql As String
libelle = ""
retour = 0 rqsql "select tbarticle.ar_lib from tbarticle where tbarticle.ar_code '" + arcod + "';"
rst_art.Open rqsql, CurrentProject.Connection
If rst_art.recordset.eof = false Then
libelle = rst_art.Fields("ar_lib")
End If
rst_art.Close
GetLibelleArticle = libelle
End Function
Cette fonction retourne une chaine ( le libelle de l'article passé en paramettre)
cs_whispers
Messages postés7Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention 1 mars 2007 31 janv. 2005 à 12:22
Salut Mrdep1978,
Je n'ai pas tout percuté sur l'explication MSDN, en tout cas les corrections que tu as apporté fonctionne et je t'en remercie sincèrement. Je me pencherais plus en détail ultérieument sur ces explications. Currently, je peux avancer dans mon dev. et grand merci à toi.
Merci également à toi Manu94600 pour ton tuyau
A+ les gars