Utilisation du résultat d'une requête

ricky2004 Messages postés 12 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 22 mars 2005 - 9 déc. 2004 à 09:56
ricky2004 Messages postés 12 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 22 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+

5 réponses

cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 1
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
0
ricky2004 Messages postés 12 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 22 mars 2005
9 déc. 2004 à 14:09
ok je te remercie, j'ai compris le principe.
Juste une question, c'est quoi rsado?
0
cs_trabice Messages postés 328 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 24 novembre 2005 1
9 déc. 2004 à 14:25
rsado c
Dim rsado As New ADODB.Recordset

fabrice
0
ricky2004 Messages postés 12 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 22 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?
0

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

Posez votre question
ricky2004 Messages postés 12 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 22 mars 2005
9 déc. 2004 à 16:07
bon ça y est ça marche...
merci encore fabrice
0
Rejoignez-nous