Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Parcourir une table pour incrémenter une référence

3 réponses
Avatar
Hervé DUCARNE
Bonjour,

Je bute sur un souci, mais je ne vois pas o=F9 :-(

Sur Access XP.

En fait, j'ai dans une table une r=E9f=E9rence (code_compta) =
alphanum=E9rique, compos=E9e de :
1 lettre correspondant =E0 un =E9tablissement
2 lettres pour le type de bien
2 chiffres pour l'ann=E9e
3 chiffres pour un num=E9ro d'ordre
Cette r=E9f=E9rence est donc unique.
Jer voudrais que le num=E9ro d'ordre s'autoincr=E9mente pour que =
j'obtienne, par exemple :
AMA08001
AMA08002
AMB08001
AMC08001
AMA09001
...
...

Je pensais proc=E9der de la mani=E8re suivante :
Je cherche dans la table le num=E9ro le + =E9lev=E9 correspondant =E0 =
l'=E9tablissement, le type de bien et l'ann=E9e saisis, et je rajoute 1.

Je bloque d=E9j=E0 sur la lecture dans la table.

Voici mon code :
Dim db As DAO.Database, rst As DAO.Recordset, domaine As String, result =
As String

' Ouverture de la base de donn=E9es
Set db =3D Curentdb()
domaine =3D "Select code_compta From MOBILIER"
' Ouverture du recordset
Set rst =3D db.OpenRecordset(domaine, dbOpenForwardOnly, dbReadOnly)
' on parcourt la table
Do Until rst.EOF
rst.MoveNext
result =3D rst
MsgBox result
Loop
' Fermeture du Recordset
rst.Close

Le msgbox est l=E0 pour test.
malheureusement, j'ai une erreur, type "incompatibilit=E9 de type" sur =
mon msgbox...

J'ai la r=E9f=E9rence m$ dao 3.6 de coch=E9e.

Quelqu'un peut-il me dire qu'ai je oubli=E9 ou, s'il voit une fa=E7on + =
simple / propre d'incr=E9menter cette r=E9f=E9rence ?

Merci de m'avoir lu.


--=20
RV

3 réponses

Avatar
michel chambrillon
Bonjour
Rst est le recordset complet donc
result=rst n'as pas de sens
essaie
result=rst!code_compta
@ plus
Michel
"Hervé DUCARNE" a écrit dans le message
de news:
Bonjour,

Je bute sur un souci, mais je ne vois pas où :-(

Sur Access XP.

En fait, j'ai dans une table une référence (code_compta) alphanumérique,
composée de :
1 lettre correspondant à un établissement
2 lettres pour le type de bien
2 chiffres pour l'année
3 chiffres pour un numéro d'ordre
Cette référence est donc unique.
Jer voudrais que le numéro d'ordre s'autoincrémente pour que j'obtienne, par
exemple :
AMA08001
AMA08002
AMB08001
AMC08001
AMA09001
...
...

Je pensais procéder de la manière suivante :
Je cherche dans la table le numéro le + élevé correspondant à
l'établissement, le type de bien et l'année saisis, et je rajoute 1.

Je bloque déjà sur la lecture dans la table.

Voici mon code :
Dim db As DAO.Database, rst As DAO.Recordset, domaine As String, result As
String

' Ouverture de la base de données
Set db = Curentdb()
domaine = "Select code_compta From MOBILIER"
' Ouverture du recordset
Set rst = db.OpenRecordset(domaine, dbOpenForwardOnly, dbReadOnly)
' on parcourt la table
Do Until rst.EOF
rst.MoveNext
result = rst
MsgBox result
Loop
' Fermeture du Recordset
rst.Close

Le msgbox est là pour test.
malheureusement, j'ai une erreur, type "incompatibilité de type" sur mon
msgbox...

J'ai la référence m$ dao 3.6 de cochée.

Quelqu'un peut-il me dire qu'ai je oublié ou, s'il voit une façon + simple /
propre d'incrémenter cette référence ?

Merci de m'avoir lu.


--
RV
Avatar
Hervé DUCARNE
"michel chambrillon" a écrit dans le message de news:
Bonjour
Rst est le recordset complet donc
result=rst n'as pas de sens
essaie
result=rst!code_compta
@ plus
Michel




Bonjour,

OK, cela fonctionne, ce qui m'a induit en erreur c'est que je mets :
domaine = "Select code_compta From MOBILIER"
' Ouverture du recordset
Set rst = db.OpenRecordset(domaine, dbOpenForwardOnly, dbReadOnly)

Donc, je sélectionne déjà *que* le code_compta dans mon rst.

Quel con je fais !

Bon, ça marche, me reste "plus qu'à" gérer l'incrémentation selon ce que l'utilisateur saisit.

Merci.

A+
--
RV
Avatar
michel chambrillon
Re Bjour
Oui il n'y a qu'un champ ( le code) mais aussi tous les enregistrements dans
RST
@Plus
"Hervé DUCARNE" a écrit dans le message
de news:%

"michel chambrillon" a écrit dans le
message de news:
Bonjour
Rst est le recordset complet donc
result=rst n'as pas de sens
essaie
result=rst!code_compta
@ plus
Michel




Bonjour,

OK, cela fonctionne, ce qui m'a induit en erreur c'est que je mets :
domaine = "Select code_compta From MOBILIER"
' Ouverture du recordset
Set rst = db.OpenRecordset(domaine, dbOpenForwardOnly, dbReadOnly)

Donc, je sélectionne déjà *que* le code_compta dans mon rst.

Quel con je fais !

Bon, ça marche, me reste "plus qu'à" gérer l'incrémentation selon ce que
l'utilisateur saisit.

Merci.

A+
--
RV