Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Michel_D avait écrit le 07/06/2008 :
Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus qu'à
récupérer le résultat de cette requête dans mon formulaire de création d'un
adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Michel_D avait écrit le 07/06/2008 :
Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus qu'à
récupérer le résultat de cette requête dans mon formulaire de création d'un
adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus qu'à
récupérer le résultat de cette requête dans mon formulaire de création d'un
adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus qu'à
récupérer le résultat de cette requête dans mon formulaire de création d'un
adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Michel_D avait écrit le 07/06/2008 :
Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus qu'à
récupérer le résultat de cette requête dans mon formulaire de création d'un
adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus qu'à
récupérer le résultat de cette requête dans mon formulaire de création d'un
adhérent de façon élégante et "pro", mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Re,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet,
quand j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est
le 76. Si je transpose ta ligne de code sSQL = etc ... dans une requête,
ça ne donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait
plus qu'à récupérer le résultat de cette requête dans mon formulaire
de création d'un adhérent de façon élégante et "pro", mais là je cale
un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Re,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet,
quand j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est
le 76. Si je transpose ta ligne de code sSQL = etc ... dans une requête,
ça ne donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :
Michel_D avait écrit le 07/06/2008 :
Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait
plus qu'à récupérer le résultat de cette requête dans mon formulaire
de création d'un adhérent de façon élégante et "pro", mais là je cale
un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Re,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet,
quand j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est
le 76. Si je transpose ta ligne de code sSQL = etc ... dans une requête,
ça ne donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait
plus qu'à récupérer le résultat de cette requête dans mon formulaire
de création d'un adhérent de façon élégante et "pro", mais là je cale
un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End SubRe,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet, quand
j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est le
76. Si je transpose ta ligne de code sSQL = etc ... dans une requête, ça ne
donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un
peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End Sub
Re,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet, quand
j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est le
76. Si je transpose ta ligne de code sSQL = etc ... dans une requête, ça ne
donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :
Michel_D avait écrit le 07/06/2008 :
Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un
peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End SubRe,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet, quand
j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est le
76. Si je transpose ta ligne de code sSQL = etc ... dans une requête, ça ne
donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un
peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End SubRe,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet, quand
j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est le
76. Si je transpose ta ligne de code sSQL = etc ... dans une requête, ça ne
donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un
peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End Sub
Re,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet, quand
j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est le
76. Si je transpose ta ligne de code sSQL = etc ... dans une requête, ça ne
donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :
Michel_D avait écrit le 07/06/2008 :
Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un
peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End SubRe,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet, quand
j'ouvre le formulaire, ça sélectionne systématiquement le premier
enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre est le
76. Si je transpose ta ligne de code sSQL = etc ... dans une requête, ça ne
donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76 apparaisse
dans une zone de texte, et que les champs Nom et Prenom soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout comme
celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait plus
qu'à récupérer le résultat de cette requête dans mon formulaire de
création d'un adhérent de façon élégante et "pro", mais là je cale un
peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Bonjour Michel et TLM,
La nuit portant conseil, ce matin j'ai trouvé une solution.
En rendant la zone de texte "IDadherent" indépendante, on récupère bien
la première valeur libre de ma dase tblAdherents. J'ai créé une autre
zone de texte "Adherent" ayant pour source de contrôle "IDadherent" dans
laquelle je mets la valeur de "IDadherent", et tout marche au poil.
Suffit de rendre "IDadherent" non visible, et j'ai ce que je t'avais
demandé.
Voici ton code adapté par mes soins:
Option Compare Database
Dim iNbEnr As Long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
' Me.IDadherent.SetFocus (à neutraliser du fait que j'ai rendu la zone
non visible)
TraiteCH "Open"
Forms![frmAdherents].Adherent = Forms![frmAdherents].IDadherent
End Sub
Private Sub IDadherent_AfterUpdate()
' Me.IDadherent.Locked = False
' If iNbEnr > 0 Then
' TraiteCH "MaJ"
' End If
End Sub
Private Sub IDadherent_GotFocus()
' Me.IDadherent.Locked = False
' TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(DLookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.Locked = True
End If
' MsgBox sOpe
End Sub
Si ça t'inspire des améliorations supplémentaires, tant mieux mais, pour
ce qui me concerne, je considère mon problème comme résolu, et je te
remercie pour ton précieux coup de main.
Bonne journée, et @+
Francis
Michel_D a pensé très fort :re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End SubRe,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet,
quand j'ouvre le formulaire, ça sélectionne systématiquement le
premier enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre
est le 76. Si je transpose ta ligne de code sSQL = etc ... dans une
requête, ça ne donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76
apparaisse dans une zone de texte, et que les champs Nom et Prenom
soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait
plus qu'à récupérer le résultat de cette requête dans mon
formulaire de création d'un adhérent de façon élégante et "pro",
mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Bonjour Michel et TLM,
La nuit portant conseil, ce matin j'ai trouvé une solution.
En rendant la zone de texte "IDadherent" indépendante, on récupère bien
la première valeur libre de ma dase tblAdherents. J'ai créé une autre
zone de texte "Adherent" ayant pour source de contrôle "IDadherent" dans
laquelle je mets la valeur de "IDadherent", et tout marche au poil.
Suffit de rendre "IDadherent" non visible, et j'ai ce que je t'avais
demandé.
Voici ton code adapté par mes soins:
Option Compare Database
Dim iNbEnr As Long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
' Me.IDadherent.SetFocus (à neutraliser du fait que j'ai rendu la zone
non visible)
TraiteCH "Open"
Forms![frmAdherents].Adherent = Forms![frmAdherents].IDadherent
End Sub
Private Sub IDadherent_AfterUpdate()
' Me.IDadherent.Locked = False
' If iNbEnr > 0 Then
' TraiteCH "MaJ"
' End If
End Sub
Private Sub IDadherent_GotFocus()
' Me.IDadherent.Locked = False
' TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(DLookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.Locked = True
End If
' MsgBox sOpe
End Sub
Si ça t'inspire des améliorations supplémentaires, tant mieux mais, pour
ce qui me concerne, je considère mon problème comme résolu, et je te
remercie pour ton précieux coup de main.
Bonne journée, et @+
Francis
Michel_D a pensé très fort :
re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End Sub
Re,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet,
quand j'ouvre le formulaire, ça sélectionne systématiquement le
premier enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre
est le 76. Si je transpose ta ligne de code sSQL = etc ... dans une
requête, ça ne donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76
apparaisse dans une zone de texte, et que les champs Nom et Prenom
soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :
Michel_D avait écrit le 07/06/2008 :
Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait
plus qu'à récupérer le résultat de cette requête dans mon
formulaire de création d'un adhérent de façon élégante et "pro",
mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Bonjour Michel et TLM,
La nuit portant conseil, ce matin j'ai trouvé une solution.
En rendant la zone de texte "IDadherent" indépendante, on récupère bien
la première valeur libre de ma dase tblAdherents. J'ai créé une autre
zone de texte "Adherent" ayant pour source de contrôle "IDadherent" dans
laquelle je mets la valeur de "IDadherent", et tout marche au poil.
Suffit de rendre "IDadherent" non visible, et j'ai ce que je t'avais
demandé.
Voici ton code adapté par mes soins:
Option Compare Database
Dim iNbEnr As Long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
' Me.IDadherent.SetFocus (à neutraliser du fait que j'ai rendu la zone
non visible)
TraiteCH "Open"
Forms![frmAdherents].Adherent = Forms![frmAdherents].IDadherent
End Sub
Private Sub IDadherent_AfterUpdate()
' Me.IDadherent.Locked = False
' If iNbEnr > 0 Then
' TraiteCH "MaJ"
' End If
End Sub
Private Sub IDadherent_GotFocus()
' Me.IDadherent.Locked = False
' TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(DLookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.Locked = True
End If
' MsgBox sOpe
End Sub
Si ça t'inspire des améliorations supplémentaires, tant mieux mais, pour
ce qui me concerne, je considère mon problème comme résolu, et je te
remercie pour ton précieux coup de main.
Bonne journée, et @+
Francis
Michel_D a pensé très fort :re,
Donc avec une zone de texte "IDadherent" et la requête nommé "rAdherent"
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
Essaye avec ce code :
Option Compare Database
Dim iNbEnr as long
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
Me.IDadherent.SetFocus
TraiteCH "Open"
End Sub
Private Sub IDadherent_AfterUpdate()
Me.IDadherent.locked = False
If iNbEnr > 0 Then
TraiteCH "MaJ"
End If
End Sub
Private Sub IDadherent_GotFocus()
Me.IDadherent.locked = False
TraiteCH "Focus"
End Sub
Sub TraiteCH(sOpe As String)
If iNbEnr < 1 Then iNbEnr = DCount("IDadherent", "tblAdherents")
If IsNull(Me.IDadherent) Then
Me.IDadherent = Nz(Dlookup("IDadherent", "rAdherent"), 1)
Me.IDadherent.locked = True
End If
' MsgBox sOpe
End SubRe,
Désolé, mais j'ai un problème avec ce que tu m'as envoyé. En effet,
quand j'ouvre le formulaire, ça sélectionne systématiquement le
premier enregistrement.
J'ai remplacé ta tblAdherents par ma table, dont le premier n° libre
est le 76. Si je transpose ta ligne de code sSQL = etc ... dans une
requête, ça ne donne bien le n° 76. Donc, ça c'est bon.
Mais avec le formulaire, je ne vois le 76 ni de loin ni de près.
Ce qu'il me faudrait, dans ton formulaire, c'est que le n° 76
apparaisse dans une zone de texte, et que les champs Nom et Prenom
soient vides.
Esr-ce possible?
@ plus pour un épisode suivant,
Francis
Il se trouve que Michel_D a formulé :Michel_D avait écrit le 07/06/2008 :Bonjour,
Essaye avec le SQL suivant :
Plus simple et plus compréhensible :
SELECT TOP 1 T.ID+1 AS Libre
FROM LaTable AS T
WHERE T.ID+1 Not In (SELECT ID FROM LaTABLE)
ORDER BY T.ID;
Bonsoir Michel,
Je n'ai testé que ta dernière requête SQL, qui marche au poil, tout
comme celle de Pierre.
Pour aller au bout de la résolution de mon pb, il ne me resterait
plus qu'à récupérer le résultat de cette requête dans mon
formulaire de création d'un adhérent de façon élégante et "pro",
mais là je cale un peu.
Si tu as (ou Pierre ou x) un tuyau pour moi en la matière, je suis
preneur
@+
Voici sommairement une possibilitée :
http://cjoint.com/?gipWjV7lCs
Bonjour,
Bon à priori encore plus simple, mettre la formule suivante au niveau de
la "Valeur par défaut" de ton contrôle zone de texte [IDadherent] :
=Nz(RechDom("IDadherent";"rAdherent");1)
Ensuite le code pour ajouter un enregistrement à l'ouverture du formulaire :
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
End Sub
PS1:"rAdherent" est le nom de la requête
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
PS2:A adapter bien sur.
Bonjour,
Bon à priori encore plus simple, mettre la formule suivante au niveau de
la "Valeur par défaut" de ton contrôle zone de texte [IDadherent] :
=Nz(RechDom("IDadherent";"rAdherent");1)
Ensuite le code pour ajouter un enregistrement à l'ouverture du formulaire :
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
End Sub
PS1:"rAdherent" est le nom de la requête
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
PS2:A adapter bien sur.
Bonjour,
Bon à priori encore plus simple, mettre la formule suivante au niveau de
la "Valeur par défaut" de ton contrôle zone de texte [IDadherent] :
=Nz(RechDom("IDadherent";"rAdherent");1)
Ensuite le code pour ajouter un enregistrement à l'ouverture du formulaire :
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acDataForm, "frmAdherents", acNewRec
End Sub
PS1:"rAdherent" est le nom de la requête
SELECT TOP 1 T.IDadherent+1 AS IDadherent
FROM tblAdherents AS T
WHERE T.IDadherent+1 Not In (SELECT IDadherent FROM tblAdherents)
ORDER BY T.IDadherent;
PS2:A adapter bien sur.