Kath Pelletti
kp at sdsonline.net
Sun Sep 7 04:55:56 CDT 2008
Thanks so much everyone for your replies. I actually would never have thought that > could even be used for strings as per Gustav/Stuart's examples, so I have learnt something from that. Will be interesting to test the speed but given that the table will never have more than 500 recs I don't imagine that's a big deal. A.D - your solution posted below is exactly what I was looking for - already put it in place to be further enhanced tomorrow morning. All I need to work out tomorrow is how to repeat it (ie. if user then moved fwd again then the new position is 2 recs ahead, and if they do it again, 3 recs etc.) So more playing tomorrow - Did you already have this code, or just wrote it to post? Either way you have helped me enormously. kath ----- Original Message ----- From: "A.D.Tejpal" <adtp at airtelmail.in> To: "Access Developers discussion and problem solving" <accessd at databaseadvisors.com> Sent: Saturday, September 06, 2008 5:12 PM Subject: Re: [AccessD] Next, Prev > Kath, > > > If the name field (let us call it PName) is likely to have embedded > quotes, use of domain aggregate functions would generate error unless the > value is duly fixed before concatenation. > > Gustav - You might like to verify again - Use of DMin() with "ID" as > the first argument would lead to inconsistent results, returning the > record with lowest ID (out of all subsequent records), not necessarily the > very next record. Perhaps you intended name field as the first argument. > > As an alternative, function Fn_GetNextID() as given below, can be > considered. It also circumvents the problem associated with embedded > quotes in PName field. > > Best wishes, > A.D. Tejpal > ------------- > > ' Code in general module > '=================================== > Function Fn_GetNextID(frm As Form) As Variant > Dim rst As DAO.Recordset, LastRec As Long > > Fn_GetNextID = Null ' Default > If frm.NewRecord = False Then > Set rst = frm.RecordsetClone > > rst.MoveLast > LastRec = rst.AbsolutePosition + 1 > > If frm.CurrentRecord < LastRec Then > ' Grab inf from next record > ' (Abs Pos is zero based) > rst.AbsolutePosition = frm.CurrentRecord > Fn_GetNextID = rst.Fields("ID") > End If > > rst.Close > Set rst = Nothing > End If > End Function > '=================================== > > ----- Original Message ----- > From: Gustav Brock > To: accessd at databaseadvisors.com > Sent: Friday, September 05, 2008 12:07 > Subject: Re: [AccessD] Next, Prev > > > Hi Kath > > I guess you could and should use DMin without any issues: > > NextItemID = DMin("ID","qryMyFormQuery","[Name] > '" & [Name] & "'") > > It will sort "correctly", that is the default sorting of your database. > If you need any other sorting the plot thickens. > > /gustav > > > >>> kp at sdsonline.net 05-09-2008 04:33 >>> > Your solution is nice and simple but think it is going to get me into all > kinds of problems when I hit names (workplacenames) with strange > characters > and apostrophes in them. > > And if I use code to handle the apostrophes (replace them etc.) then the > statement won't work. > > hhmm.. > > ----- Original Message ----- > From: "Stuart McLachlan" <stuart at lexacorp.com.pg> > To: "Access Developers discussion and problem solving" > <accessd at databaseadvisors.com> > Sent: Friday, September 05, 2008 12:01 PM > Subject: Re: [AccessD] Next, Prev > > > > NextItemID = > > Dlookup("ID","qryMyFormQuery","[Name] > " & [Name]) > > > > > > Incidentally, it's very bad practice to use "Name" as a field name - it > can bite you in all sorts > > of ways. > > > > > > On 5 Sep 2008 at 10:51, Kath Pelletti wrote: > > > >> Must be the week for working on Next, Prev functions on the > list............ > >> > >> This is a bit of an odd situation, but what I have a continuous form > >> which displays names and ID's. It's source is a query which is sorted > by > >> the Name field. > >> > >> In another area of the application, I need to be able to know the ID > of > >> the 'next' rec in that continuous form. > >> > >> eg. Continuous form shows: > >> Name ID > >> AAB 90312 > >> AAC 23 > >> AAD 845 > >> AAE 32 > >> > >> If I have a form for AAB open, I need to get the ID of the next item > AAC, > >> which is 23. > >> > >> Maybe I am making this too hard, but the fact that the list is > >> alphabetically sorted has me thrown............... > >> > >> tia > >> Kath > >> > >> ______________________________________ > >> Kath Pelletti > >> Software Design and Solutions Pty Ltd > >> kp at sdsonline.net > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com >