A voir également:
- Incrémenter un controle sous acces 2000 ?????
- Acces rapide - Guide
- Controle parental pc - Guide
- Accès refusé - Guide
- Pourquoi google me bloque l'accès de certain sites ? - Guide
- Je n'ai plus acces a ma boite mail gmail - Guide
6 réponses
Utilisateur anonyme
22 avril 2004 à 15:04
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 ??
Utilisateur anonyme
22 avril 2004 à 15:39
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
@+
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
@+
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
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
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....
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....
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 ?
"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 ?
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
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
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
à 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
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
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
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
De plus, pour etre sur de bien déclarer ta variable rs :
Dim rs As DAO.Recordset
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....
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....
22 avril 2004 à 15:13
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"
22 avril 2004 à 15:16
22 avril 2004 à 15:29
tu peux avoir des numéros qui ne se suivent pas.
c'est galère