altozinzin
Messages postés54Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 6 mai 2011
-
23 mai 2007 à 12:59
cs_Exploreur
Messages postés4822Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 2016
-
23 mai 2007 à 14:41
Salut, c'est re-re-moi
Cette fois mon problème avec ma base de données Acces, c'est que je voudrais faire une ligne de commande du genre:
<hr size="2" width="100%" />
If "Base de donnée vide" then msgbox "Base de données vide" par exemple
<hr size="2" width="100%" />
J'avais pensé à faire :
<hr size="2" width="100%" />
enreg.movefirst ' ça fait planter le truc si c'est vide
On error goto erreur
.
.
.
erreur:
msgbox "Base de données vide"
<hr size="2" width="100%" />Ca marche mais je trouve ça un peu... barbare
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 23 mai 2007 à 13:58
ET AVEC CA
[dadobj03_0tdg.htm Recordset] ou le nombre total d'enregistrements
dans un objet Recordset de type Table ou dans un objet [dadobj04_4tuu.htm TableDef].
Valeurs renvoyées
La valeur renvoyée est de type [dadefn01_9kh1.htm Long].
Remarques
Utilisez la propriété RecordCount pour savoir à combien
d'enregistrements vous avez eu accès dans un objet Recordset ou
TableDef. La propriété RecordCount n'indique pas le nombre
d'enregistrements contenus dans un objet Recordset de type Feuille de
réponses dynamique (Dynaset), Instantané (Snapshot) ou En avant seulement tant
que vous n'avez pas eu accès à tous les enregistrements. Une fois que vous avez
accédé au dernier enregistrement, la propriété RecordCount indique le
nombre total d'enregistrements non supprimés dans l'objet Recordset ou
TableDef. Pour forcer l'accès au dernier enregistrement, appliquez la
méthode [dameth03_2fxw.htm MoveLast] à l'objet Recordset.
Vous pouvez également utiliser une fonction SQL Count pour déterminer le
nombre approximatif d'enregistrements que votre requête va renvoyer.
Note L'utilisation de la méthode MoveLast pour remplir un objet Recordset que vous venez d'ouvrir a un impact
négatif sur les performances. À moins que vous ayez besoin d'une valeur de
propriété RecordCount précise dès l'ouverture d'un objet
Recordset, il est préférable d'attendre que l'objet Recordset soit
rempli avec d'autres portions de code avant de vérifier la propriété
RecordCount.
À mesure que votre application supprime des enregistrements dans un objet
Recordset de type Feuille de réponses dynamique (Dynaset), la valeur de
la propriété RecordCount diminue. Toutefois, les enregistrements
supprimés par d'autres utilisateurs sont pris en compte dans la propriété
RecordCount uniquement lorsque le pointeur d'[dadefn01_8nok.htm enregistrement en cours] est positionné sur un
enregistrement supprimé. Si vous exécutez une [dadefn02_9rfy.htm transaction] qui affecte la valeur de la propriété
RecordCount et si vous révoquez ultérieurement la transaction, la
propriété RecordCount n'indiquera pas le nombre réel d'enregistrements
restants.
La propriété RecordCount d'un objet Recordset de type
Instantané ou En avant seulement n'est pas affectée par les modifications
apportées aux tables sous-jacentes.
Dans le cas d'un objet Recordset ou TableDef ne contenant aucun
enregistrement, la propriété RecordCount prend la valeur 0.
Lorsque vous travaillez avec des objets TableDef[dadefn01_0fad.htm liés], la propriété RecordCount a toujours la
valeur –1.
Si vous appliquez la méthode [dameth04_5hbt.htm Requery] à un
objet Recordset, la valeur de la propriété RecordCount est
réinitialisée comme si la requête était exécutée à nouveau.
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 23 mai 2007 à 13:36
Re,
Déjà est ce que j'ai bien raison en disant que c'est un recordset, as tu essayé? il faut essayer de testé avec ce que l'on vous propose plutôt que d'attendre que quelqu'un vous fasse tout pour en faire un vulgaire copier/coller et ne pas apprendre un minimum....
altozinzin
Messages postés54Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 6 mai 2011 23 mai 2007 à 13:46
En effet Nicko11, t'as raison, autant pour moi.
C'est bien de la table dont je parle.
Il s'agit bien d'un recordset, voici mon code avec l'application de le méthode erreur:
<hr size="2" width="100%" />Private Sub Form_Load()
On Error GoTo erreur
dim data as ADODB.connection
dim enreg as ADODB.recordset
Set data = New ADODB.Connection
data.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source = c:\data.dat"
Set enreg = New ADODB.Recordset
enreg.Open "select login, password from table", data, adOpenDynamic, adLockOptimistic
enreg.MoveFirst
Exit Sub
erreur:
Unload Me
Form2.Show
End Sub
<hr size="2" width="100%" />Ca marche sans problème et bon j'ai trouvé ça tout seul mais bon, ça ne me plait pas.
altozinzin
Messages postés54Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 6 mai 2011 23 mai 2007 à 14:22
La première valeur de enreg.recordcount est -1
J'ai fait:
<hr size="2" width="100%" />Call module1.seconnecter
If enreg.RecordCount = -1 Then
Unload Me
Form2.Show
Exit Sub
End If
<hr size="2" width="100%" />Le problème c'est que même si la table est vide, la valeur est de -1.
J' ai donc rajouter ceci
<hr size="2" width="100%" />Call module1.seconnecter
enreg.movelast 'avant d'avoir la dernière valeur de recordcount
If enreg.RecordCount = -1 Then
Unload Me
Form2.Show
Exit Sub
End If
<hr size="2" width="100%" />mais là ça plante quand la table est vide.
Sinon j'ai tenté ça:
<hr size="2" width="100%" />Call Module1.seconnecter
If enreg.EOF = True Then
Unload Me
Form2.Show
Exit Sub
End If
<hr size="2" width="100%" />Pour l'instant ça a l'air de marcher.