A.D.Tejpal
adtp at touchtelindia.net
Tue Feb 24 10:35:54 CST 2004
Gina,
You could consider a query for appending new records having values incrementing by 1, starting with MaxVal + 1 . (MaxVal is existing maximum value of the field holding series data)
It involves an interesting use of simple custom functions based upon global variables. Relevant SQL as well as the code details are given below.
Regards,
A.D.Tejpal
--------------
======================
Let main table be named T_Series having one of the fields named RefValue (Number type long) for holding a series of numerical values. Table T_SeriesAppend is the table from which data is to be appended to table T_Series and has same structure.
======================
SQL Statement (Append Query) -
INSERT INTO T_Series ( RefValue )
SELECT Fn_SeriesNext([T_SeriesAppend].[RefValue]*0)
AS RFV
FROM T_SeriesAppend
WHERE Fn_SeriesMax()>=0;
Note - (i) Where clause is meant to set initial values for global variables MaxVal and NextVal via custom function Fn_SeriesMax()
(ii) Multiplication by zero in the argument passed to function Fn_SeriesNext() in the Append SQL is meant to force discarding of existing value for field RefValue in the second table i.e. T_SeriesAppend so that newly appended records will only carry series of values in continuation to the existing maximum in the main table.
(iii) In the sample SQL for append action, only the series field has been mentioned for illustration. Other fields can be included as desired.
Code Module -
Option Compare Database
Option Explicit
Public MaxVal As Long, NextVal As Long
Function Fn_SeriesMax() As Long
MaxVal = Nz(DMax("RefValue", "T_Series"), 0)
NextVal = MaxVal + 1
Fn_SeriesMax = MaxVal
End Function
Function Fn_SeriesNext(ByVal FValue As Variant) As Long
FValue = Nz(FValue, 0)
If FValue > 0 Then
Fn_SeriesNext = FValue
Else
Fn_SeriesNext = NextVal
NextVal = NextVal + 1
End If
End Function
=====================================
----- Original Message -----
From: Gina Hoopes
To: AccessD at databaseadvisors.com
Sent: Tuesday, February 24, 2004 21:28
Subject: [AccessD] Add records with sequential numbers
I've got an invoicing database that the end user has used to create invoices
on an individual basis. Each time she clicks the "new invoice" button, I've
coded the form to give her the next number in sequence. She has a specific
range of numbers she's required to use, so it can't just be an Auto Number.
Anyway, it's been working great, but now they want to automate the process
so that the db automatically generates all invoices for the month after I've
presented her with a screen to check or uncheck those that should be
created. So, what I need help with doing is taking the temp table which
contains those items she's checked, appending them to the Invoices table,
and assigning them numbers in sequence. If this was a straight auto number
situation it would be easy, but I can't figure out how to get it to work
using her numbering system. The invoice number field is a text field
because it contains non-numeric characters, but I've been able to get it to
behave as a number for the individual creation purpose I described above by
stripping the alpha characters, adding 1, then putting the alpha characters
back in. Can someone give me an idea of how to use an append query, or
something similar, that will allow me to automate this process?
Thanks,
Gina