Incrémenter un controle sous acces 2000 ?????

Fermé
D-Zyl - 22 avril 2004 à 14:39
 D-Zyl - 28 avril 2004 à 09:26
Salut à tous,

mon souci, c'est que j'ai besoin d'incrémenter un contrôle dans un formulaire à l'ouverture de ce dernier...... et je ne sais pas comment faire.

le principe, c'est de récupérer un nombre "N" dans une table "T". Ensuite, incrémenter ce nomnbre ("N" = "N" + 1), l'afficher dans un contrôle du formulaire "F". Puis, mettre à jour ce nombre incrémenté dans la table T.

Ah au fait, je ne connais pas le VBA... :)

merci d'avance.
A voir également:

6 réponses

Utilisateur anonyme
22 avril 2004 à 15:04
Si j'ai bien compris, ce champ correspondra au nombre de fois que le formulaire a été ouvert, c'est ça ??
0
en fait, le formulaire F sert à entrer une nouvelle réparation sur un véhicule.
La procédure c'est :
on click sur le bouton nouvelle réparation
ça ouvre le formulaire dont un des controles est "N° de réparation".

je voudrais que que ce controle récupère le numéro de la dernière réparation de la table "véhicule", l'incrémente, l'affiche dans le formulaire, et le ré-enregistre dans la table "véhicule"
0
Utilisateur anonyme
22 avril 2004 à 15:16
Pourquoi tu ne mets pas ce champ en type 'numéro Auto' ?
0
D-Zyl > Utilisateur anonyme
22 avril 2004 à 15:29
les NuméroAuto, c'est pas très flexible....
tu peux avoir des numéros qui ne se suivent pas.
c'est galère
0
Utilisateur anonyme
22 avril 2004 à 15:39
C bon, j'ai déjà fait ça pour une base, mais j'ai utilisé un fichier en plus.
Voici le code

Private Sub Form_BeforeInsert(Cancel As Integer)
Dim enreg, variable_enreg As Long
Close
Open "ton chemin\ton fichierl" For Input As #1
Input #1, enreg
variable_enreg = enreg + 1
Me!ton champ = variable_enreg
Close
Open "ton chemin\ton fichier" For Output As #1
Write #1, variable_enreg

'partie facultative, mais on sait jamais, un mec (ou une nana !) peut bien ouvrir par curiosité ce fichier et peut voir qu'il ne contient qu'un nombre, et peut se dire, c quoi ce fichier à la con, je l'efface.
Pour + de sécurité, le fichier en question je lui ai mis une extension en dll, ça dissuade dès fois...

Print #1, "TRES IMPORTANT !!!!!!!!!!!!!!"
Print #1, "NE SURTOUT PAS EFFACER CE FICHIER "
Print #1, "IL EST INDISPENSABLE A LA BASE DE DONNEES
close
End Sub


@+
0
Si jai compris ta question, je pense pouvoir taider.

Tape ceci sur l'action "Ouverture" de ton formulaire F (=nouvelle reparation) :
Dim rs as Recordset
Dim mavoiture as String

' ce que japelle codevoiture est la clé primaire de ta table véhicule (=T )
'nom du formulaire = formulaire qui ouvre F

mavoiture = Forms![nom du formulaire]![codevoiture]
Set rs = Currentdb.Opendatabase ("Select N From T Where codevoiture=' " & mavoiture & " ';")
rs.Openrecordset
rs.Edit
rs.Fields("N")=rs.Fields("N")+1
rs.Update
Forms![F]![N° de réparation]=rs.Fields("N]
rs.Close

Javoue que je nai pas essayé. Peut-être que ca marche pas. Dans ce cas, dis le moi. A plus
0
Jme suis apercu que javais fait une faute de frappe en voulant surement taper trop vite. A l'avant derniere ligne, jai mis un ] au lieu de ) et jai oublié une ". Il faut donc mettre :

Forms![F]![N° de réparation]=rs.Fields("N")

Ca devrait aller un peu mieux comme ca.

Réponds-moi si possible pour me dire si ca marche, si cest bien ce que tu souhaitais ou alors si je suis une grosse m....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Quand tu écris :

"Set rs = Currentdb.Opendatabase ("Select N From T Where codevoiture=' " & mavoiture & " ';")"

je laisse N et T tels quels, ou alors je les remplace par ???? pour N et par le nom de la table pour T ?
0
boun Messages postés 17 Date d'inscription samedi 17 avril 2004 Statut Membre Dernière intervention 21 juillet 2006 8
23 avril 2004 à 13:48
A la place du N tu tapes le nom de ton champ "N° de réparation" tel qu'il est écrit dans ta table "véhicules", a la place du T le nom de ta table "véhicules". Et le F correspond à ton formulaire "Nouvelle réparation". Jai mis ces lettres parceke jsavé pas le nom exact. Tiens moi au courant
0
Salut boun

à la ligne SET RS=...., je suis obligé d'inverser opendatabase et currentdb pour continuer.

Set rs = Opendatabase.CurrentDb("Select Item From avion Where Immatriculation=' " & monavion & " ';")

Et le pb c'est qu'il me dit : "erreur d'execution '424' : objet requis".
et là je ne sais pas quoi faire, vu que je ne connais pas la syntaxe des fonctions vba....

merci pour ton aide déjà tres précieuse
0
J'essaye de bidouiller un peu le code mais, y a rien à faire, ça marche po...
voila exactement ce qui est écrit dans le code du formulaire "nouvelle reparation" :

Private Sub Form_Open(Cancel As Integer)

Dim rs As Recordset
Dim monavion As String

monavion = Forms![Mapping reparations structurales]![Immatriculation]
Set rs = CurrentDb.Opendatabase("Select Item From avion Where Immatriculation=' " & monavion & " ';")
rs.Openrecordset
Edit.rs
rs.Fields("Item") = rs.Fields("Item") + 1
rs.Update
Forms![nouvelle reparation]![Item] = rs.Fields("Item")
rs.Close

End Sub


J'obtiends : erreur de compilation sur opendatabase, membre de méthode ou de données introuvables
0
boun > D-Zyl
26 avril 2004 à 10:33
Je pense savoir mais je suis pas sur. Le Recordset est un objet DAO. Il faut donc que tu charges la librairie DAO. Pour cela, passe en affichage VBA. Puis rentre dans le sous-menu Références du menu Outils. Il te reste plus qu'à cocher la case Microsoft DAO (...) Library.
De plus, pour etre sur de bien déclarer ta variable rs :
Dim rs As DAO.Recordset
0
boun > D-Zyl
26 avril 2004 à 10:39
En plus je crois bien que jme suis trompé. C'est pas :
Set rs=currentdb.Opendatabase
mais :
Set rs=currentdb.Openrecordset
Essaie les 2. J'ai un doute.
0
D-Zyl > boun
26 avril 2004 à 14:27
g essayé de faire ce que tu m'as dit, en plus g changé le champ "Item", apparemment c'est un mot réservé...

Private Sub Form_Open(Cancel As Integer)

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim monavion As String

monavion = Forms![Mapping reparations structurales]![Immatriculation]
Set db = CurrentDb
Set rs = db.OpenRecordset("Select numeroreparation From avion Where Immatriculation=' " & monavion & " ';")
rs.OpenRecordset
rs.Edit
rs.Fields("numeroreparation").Value = rs.Fields("numeroreparation").Value + 1
rs.Update
Forms![nouvelle reparation]![numeroreparation] = rs.Fields("numeroreparation").Value
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub

le souci, c'est qu'il m'affiche nu message d'erreur '3021' : aucun enregistrement en cours.
et il s'arrete sur "rs.edit".
C'est à croire que le rs.openrecordset juste au-dessus n'est pas pris en compte, ou alors ce n'est pas la bonne syntaxe....

je déprime d'être "une quiche" en vba, c'est désolant....
0