ricky2004
Messages postés12Date d'inscriptionlundi 29 novembre 2004StatutMembreDernière intervention22 mars 2005
-
9 déc. 2004 à 09:56
ricky2004
Messages postés12Date d'inscriptionlundi 29 novembre 2004StatutMembreDernière intervention22 mars 2005
-
9 déc. 2004 à 16:07
Salut, j'ai besoin dans un formulaire access qu'un champ NumDgt se remplisse automatiquement à l'ouverture de ce formulaire.
Son format c'est "B04 0000". Pour ça j'ai une requête "Nb derangements" qui calcule le nombre d'enregistrements d'une table Derangement (par exemple s'il y a déjà eu 5 dérangements, il y a 5 enregistrements dans la table, et il faut que le champ NumDgt prenne la valeur B04 0006 quand je veux saisir un nouveau dérangement...)
j'ai tapé ce code dans la procédure "sur ouverture" du formulaire :
Private Sub Form_Open(Cancel As Integer)
Dim num As Integer
Dim req As String
req = "Nb dérangements"
DoCmd.OpenQuery req, acNormal, acEdit
num = nb + 1
NumDGT.SetFocus
NumDGT.Text = "B04 000" & num
End Sub
Mais quand je l'ouvre, la valeur de NumDgt c'est toujours B04 0001 et je comprends pas pourquoi. J'ai ptet codé ça n'importe comment donc si qqun pouvait m'aider ce serait sympa.
Merci
a+
cs_trabice
Messages postés328Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention24 novembre 20051 9 déc. 2004 à 10:10
Voila un bout de code qui me sert à créer des bacs.
mon champ est de type B00001,B00002
ton code ne pouvait pas marcher car deja quand tu fais
"B04 000" & num
au dessus de 10 tu aurais B040 00012
et je pense pas que c'est ce que tu voulai
il faut rechercher le max,puis le traiter
il y a surement + simple, j'ai pas trop chercher sur le net.
fabrice
req = "select max(idbac) as idbac from bac where idbac like 'B%'"
rsado.Open req, Connexiontest
If IsNull(rsado.Fields(0)) = False Then 'si il y a au moins 1 enregistrement de bac
stringnumbac = Mid(rsado.Fields(0), 2)
NumMaxBac = Val(stringnumbac) + 1
stringnumbac = NumMaxBac
'rajouter les zéros....
Select Case Len(stringnumbac)
Case 1
stringnumbac = "0000" & NumMaxBac
Case 2
stringnumbac = "000" & NumMaxBac
Case 3
stringnumbac = "00" & NumMaxBac
Case 4
stringnumbac = "0" & NumMaxBac
Case 5
stringnumbac = NumMaxBac
End Select
lbl1ernumbac.Caption = "B" & stringnumbac
Txtbacunique.Text = "B" & stringnumbac
Else
lbl1ernumbac.Caption = "B00001"
Txtbacunique.Text = "B00001"
End If
ricky2004
Messages postés12Date d'inscriptionlundi 29 novembre 2004StatutMembreDernière intervention22 mars 2005 9 déc. 2004 à 15:33
ok, en fait vu que je débute ça m'amène à d'autres problèmes, genre tous les trucs de connection et tout ça...
J'ai essayé ça paske j'ai vu des trucs qui ressemblaient sur le site mais je comprends pas ce que je fais et surtout ça marche pas (ya une erreur à la ligne connectionstring) :
Private Sub Form_Open(Cancel As Integer)
Dim rsado As New ADODB.Recordset
Dim MaConnection As New ADODB.Connection
MaConnection.Provider = "Microsoft.jet.OLEDB.4.0"
MaConnection.ConnectionString = App.Path & "\base dérangement.mdb"
MaConnection.Open
req = "select Max(NumDGT) as nb from Dérangement;"
rsado.Open req, MaConnection
etc...
Je suis obligé de faire tout ça alors que je veux juste incrémenter un champ d'un formulaire ou je suis en train de tout complexifier inutilement?
Vous n’avez pas trouvé la réponse que vous recherchez ?