[AccessD] Dire need for help

Liz Doering ldoering at symphonyinfo.com
Fri Oct 6 11:27:22 CDT 2006


John,
 
Instead of taking the Max(Mid([tblMain]![txtControlNum],4)) (that is, max txtControlNum), take the of Max(Val(Right([txtControlNum],Len([txtcontrolnum])-3))) (that is, max of the value of the txtControlNum).  As it stands you are returning the max text value, which is a little different than returning the max numeric value.
 
Good Luck!
Liz 

________________________________

From: accessd-bounces at databaseadvisors.com on behalf of John Clark
Sent: Fri 10/6/2006 11:00 AM
To: accessd at databaseadvisors.com
Subject: [AccessD] Dire need for help



Sorry, I posted this on another thread first...AAAARRG....I'm just so
frustrated at the moment.

OK...I need help here...BADLY! I've been like the typical guy, who
won't stop and ask for directions...I've been working on this one single
issue, since yesterday, and I cannot find the problem.

I wrote this program, many moons ago, for our Social Services Fraud
Unit. They told me, at that time, that they would never exceed, or even
get to 1000 records in a year. There largest amount was around 700. The
reason this was an issue was their control numbers, which were in the
form of 06-001, where this number would be the first case of the year
2006. It then rolls over for the first case of the following year, to
07-001. Despite their claim, I made the control number in the form of,
06-0001, so that it could handle up to 9,999 records. When they saw
this, they demanded that I change it. They did not want the extra digit
in their number.

Well, guess what. Two years ago, they went over the 1000 record mark
and called me to make the change. Actually that year they thought it was
a fluke or something, so we just made do somehow...I don't even recall.
Last year it was the same issue, so I fixed it...or thought I did. It
must have worked because it went up to record 06-1000 this year, before
halting, whereas last year it stopped at 05-999.

Now we are at my current problem, and I just can't figure it out. It
looks like it should work and it isn't breaking at 999, but rather 1000,
and this confuses me. The code is as follows:

Function NewControlNum() As String
Dim strSQL As String
Dim strNewID As String
Dim rst As Recordset
strSQL = "SELECT nz(Max(Mid([tblMain]![txtControlNum],4)),0)+1 AS
lngMaxID," & _
         "Right(Year(Now()),2)" & _
         "& '-' & [lngMaxID] AS lngNewID " & _
         "FROM tblMain " & _
         "WHERE
(((Left([tblMain]![txtControlNum],2))=Right(Year(Now()),2)));"
Set rst = CodeDb.OpenRecordset(strSQL)
With rst
   strNewID = rst!lngNewID
   rst.Close
   Set rst = Nothing
End With
NewControlNum = strNewID

Rem
***************************************************************************

Select Case Len(NewControlNum)
    Case 4
        NewControlNum = Left(NewControlNum, 3) & "00" &
Right(NewControlNum, 1)
    Case 5
        NewControlNum = Left(NewControlNum, 3) & "0" &
Right(NewControlNum, 2)
End Select


End Function

--------------------------------------------------------------------------------------

BTW...this is an A97 program.

It works perfectly fine, filling in the next control number, when you
hit upon a new record, until it gets to 06-1000, and then it just wants
to keep putting in that same number.

As a test, I went into the table and added a record 06-1101, just to
see what the result would be. It too returned 06-1000 as the next
number. I deleted the last 5 records so that we were at 06-996, and it
let me re-enter them, putting in the proper numbers, as I went (06-997
thru 06-1000).

I just know it is something simple that I am missing.

John W. Clark


--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com






More information about the AccessD mailing list