Solved

Coldfusion number generator using 4 digits, increment by 1

Posted on 2011-09-26
12
527 Views
Last Modified: 2013-12-24
I need example of code that will generate a 4 digit number increment by 1.
0
Comment
Question by:smares32371
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 3
  • 2
12 Comments
 
LVL 39

Expert Comment

by:gdemaria
ID: 36601284

<cfset theNumber = 1000>

   incredment it by one...

<cfset theNumber = theNumber + 1>


  I have a feeling you want something more than that though...
0
 

Author Comment

by:smares32371
ID: 36601895
That's true, in order for me to get a unique incremental number for every time the page is loaded, do I have to insert the number into db table in order to keep track of the count.
0
 
LVL 52

Expert Comment

by:_agx_
ID: 36602012
What is the number being used for? Just wondering if there's a reason you can't just use your database to generate the number ie (ms sql - identity, mySQL auto_increment, etc..). You could always pad the value on output so it's at leat 4 characters

     ie NumerFormat(yourNumber, "0000")
0
Quiz: What Do These Organizations Have In Common?

Hint: Their teams ended up taking quizzes, too.

 

Author Comment

by:smares32371
ID: 36602034
invoice number
0
 
LVL 52

Expert Comment

by:_agx_
ID: 36602071
So far I don't see why you couldn't let your db generate the number. (In fact it's better not to roll your own when possible. As it's easy to create dupes.) Just pad the output as needed. If you prefer you could create a db view /or add a calculated column that does the padding automatically.

Which db type?
0
 

Author Comment

by:smares32371
ID: 36602119
I'm sorry it just has to be a 4 digit random number sorry for the incremental part of it.
0
 
LVL 52

Expert Comment

by:_agx_
ID: 36602125
Here's an example

Results
1, '00001', '2011-09-26 00:00:00', 'Test invoice A'
2, '00002', '2011-09-26 00:00:00', 'Test invoice B'
3, '00003', '2011-09-26 00:00:00', 'Test invoice C'

Sample Structure
<!--- sample table --->
<!--- note: You may want to plan ahead and use something bigger than SMALLINT --->
CREATE TABLE Invoices (
invoiceID smallint auto_increment primary key,
invoiceDate datetime,
Notes varchar(255)
)

<!--- add sample data --->
INSERT INTO Invoices (invoiceDate, Notes)
SELECT curDate(), 'Test invoice A' union all
SELECT curDate(), 'Test invoice B' union all
SELECT curDate(), 'Test invoice C'

<!--- create one time VIEW that includes "InvoiceNum" column padded to 5 zeros --->
CREATE VIEW vInvoices
AS
SELECT  InvoiceID, lpad(invoiceID, 5,'0') As InvoiceNum, invoiceDate, Notes
FROM   Invoices

<!--- display results --->
SELECT InvoiceID, InvoiceNum, InvoiceDate, Notes
FROM   vInvoices

Open in new window

0
 
LVL 52

Expert Comment

by:_agx_
ID: 36602133
> I'm sorry it just has to be a 4 digit random number sorry for the incremental part of it.

Oh, okay. Then ignore my last post
0
 
LVL 39

Accepted Solution

by:
gdemaria earned 500 total points
ID: 36602138
<cfset theNUmber = randRange(1000,9999)

will give you a random number
0
 
LVL 52

Expert Comment

by:_agx_
ID: 36602182
You could use randRange() to generate a random number. Use NumberFormat to pad it to 4 characters.

             ie   <cfset randInvoiceNum = numberFormat(randRange(0, 9999), "0000")>

But you'll have to loop to ensure it wasn't used already.  Create a unique constraint on the table to prevent dupes. Then use a try/catch to detect a constraint violation (ie the number was already used). Keep looping until the INSERT succeeds.

<!--- Use unique constraint to prevent dupes --->
CREATE TABLE Invoices (
invoiceID smallint auto_increment primary key,
invoiceNum char(4) NOT NULL,
UNIQUE KEY ukInvoices_InvoiceNum (invoiceNum))
0
 
LVL 52

Expert Comment

by:_agx_
ID: 36602188
> <cfset theNUmber = randRange(1000,9999)

Actually you can start at 0 or 1 and pad the results. So you don't skip the first 999 numbers.
0
 
LVL 52

Expert Comment

by:_agx_
ID: 36602208
@smares32371 - Glad you found an easy solution.  I have a feeling the functions by category view might come in handy in the future ;-)
0

Featured Post

Portable, direct connect server access

The ATEN CV211 connects a laptop directly to any server allowing you instant access to perform data maintenance and local operations, for quick troubleshooting, updating, service and repair.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hi, Even though I have created this Tutorial on My personal Blog, Some people might not able to find my website, So here i am posting it again Today, from the topic it is very clear that i will be showing you here the very basic usage of how we …
When it comes to security, close monitoring is a must. According to WhiteHat Security annual report, a substantial number of all web applications are vulnerable always. Monitis offers a new product - fully-featured Website security monitoring and pr…
This video Micro Tutorial shows how to password-protect PDF files with free software. Many software products can do this, such as Adobe Acrobat (but not Adobe Reader), Nuance PaperPort, and Nuance Power PDF, but they are not free products. This vide…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question