Susan Harkins
harkins at iglou.com
Wed Jul 2 07:16:04 CDT 2003
Nevermind, but thank you. Susan H. > Susan: I can't make head or tail out of your last post and John hasn't > offered any clarification on his earlier comments. Arthur's comment about a > confusion between OLTP and OLAP systems may have some bearing on the why of > autonumbers in archiving but has no bearing on how autonumbers may be > manipulated which is the matter I was addressing. > > What is it you mean by not really appending the existing Autonumber value > being different from allowing the historical AN to fill in that value? > Where is it that 'missing' autonumbers are an issue and I'm not sure what > you mean about existing values. Clearly you cannot have duplicate values in > an autonumber field but you can insert records from any table into an > archive table in any order you wish and in doing so set the archive > autonumber to any value that is valid in the source table. I was not > talking about setting any seed value. The previous example posted involved > setting a table record with two fields, one of which was an autonumber, and > inserting that record into another table at any arbitrary value without > resetting any seed value. I'll try another example that assumes any table > of records with an autonumber field and a table with duplicate structure but > no records. You can add an Order By clause for any arbitrary field and the > table will fill in any autonumber sequence that that field sort is and all > the records identified by an autonumber in the original table will be > identically identified in the archive table. Just substitute any table > names to try this out: > > Sub archiveTable() > Dim rstSrc As Recordset > Dim rstDst As Recordset > Dim db As Database > Dim lngI As Long > Dim lngCount As Long > > Set db = CurrentDb > Set rstSrc = db.OpenRecordset("tblCompany") > Set rstDst = db.OpenRecordset("tblCompanyArchive") > lngCount = rstSrc.Fields.Count - 1 > Do While Not rstSrc.EOF > rstDst.AddNew > For lngI = 0 To lngCount > rstDst(lngI) = rstSrc(lngI) > Next > rstDst.Update > rstSrc.MoveNext > Loop > rstSrc.Close > rstDst.Close > Set rstSrc = Nothing > Set rstDst = Nothing > Set db = Nothing > End Sub > > Hen > > >From: "Susan Harkins" <harkins at iglou.com> > >Reply-To: Access Developers discussion and problem > >solving<accessd at databaseadvisors.com> > >To: "Access Developers discussion and problem > >solving"<accessd at databaseadvisors.com> > >Subject: Re: [AccessD] AutoNumbers in historical tables > >Date: Mon, 30 Jun 2003 17:43:05 -0400 > > > >What about missing AutoNumber values in the records you're appending? What > >I'm saying is, you're not really appending the existing AutoNumber value, > >you're just allowing the historical table's AN to fill in that value. So, > >even though you can reset the AN seed value, how would you accommodate the > >"existing" values, whatever they are, as you're appending the remaining > >records? > > > >Susan H. > > > > > > > I was responding to the statement: > > > > > > ...Supposing you were required to preserve the Autonumber -- how > >would > > > you go about appending records as you archive -- you couldn't I'm > > > guessing... > > > > > > And now you say: > > > > > > ...I wasn't talking about forcing a new AutoNumber -- I was talking > > > about appending records that already have an AutoNumber... > > > > > > The implication in both cases is: you can't set a record's autonumber > >to > >an > > > arbitrary value. That is not true. What you do is force the AN of the > > > resulting archive record to the value in the originating table in the > > > append. There is no need to add and delete blank records to force AN > >values > > > which is the only interpretation I can place on what John said: > > > > > > ... if you do a restore you MUST go get the last number, add 1 to > >it, > > > and insert a fake record with that number, then delete that fake record > >back > > > out... > > > > > > John's suggestion could work for the situation where you were archiving > > > additions to the end of a table and one or more consecutive records > >ending > > > with the last were deleted but the approach reinforces the implication > >that > > > one can't simply set the value as required. > > > > > > Good thing this issue is moot but a casual surveyor of the archive may > >pick > > > up some misconceptions or may be led to believe that list members don't > > > understand autonumbers. > > > > > > If you have a table tblArk with 10 records and a FirstName field and an > > > Autonumber field named PK and you need to write a record that has an > > > existing AN of 45: > > > > > > Dim db as Database > > > Set db = CurrentDb > > > db.Execute("Insert Into tblArk(PK, FirstName) Values(45, 'Joe')") > > > MsgBox db.RecordsAffected > > > > > > If you add and delete a thousand records, you can still run the code > >above > > > and you will have 1 record added provided that the number 45 isn't > >already > > > taken and notwithstanding that the next automatic number would be over > >1000. > > > In any case where the AN 45 is not already used, the example code > >above > > > will insert a record and set its autonumber value. If you have a > >record > > > with an existing autonumber that needs to be changed, you can insert the > > > field values into a new record and set the desired autonumber for the > > > duplicate and then delete the old record. While you cannot directly > >edit > >an > > > existing AN, you can readily achieve the result. > > > > > > There is no need to get into the question of why one would want to > >change > >or > > > set an autonumber. I was merely attempting to prevent repetition of a > >too > > > often repeated misconception. > > > > > > Hen > > > > > > > > > > > > > > > > The main point I was making was that I understood Susan to imply > >that > > > >one > > > > > can not set the value of an autonumber field to any arbitrary valid > > > >value > > > > > and that is not accurate. > > > > > > > >============== I don't remember what I said, but I'm sure that's not > >what > >I > > > >meant. :) I wasn't talking about forcing a new AutoNumber -- I was > >talking > > > >about appending records that already have an AutoNumber... > > > > > > > >Susan H. > > > > > > _________________________________________________________________ > > > Add photos to your e-mail with MSN 8. Get 2 months FREE*. > > > http://join.msn.com/?page=features/featuredemail > > > > > > _______________________________________________ > > > AccessD mailing list > > > AccessD at databaseadvisors.com > > > http://databaseadvisors.com/mailman/listinfo/accessd > > > Website: http://www.databaseadvisors.com > > > > > > >_______________________________________________ > >AccessD mailing list > >AccessD at databaseadvisors.com > >http://databaseadvisors.com/mailman/listinfo/accessd > >Website: http://www.databaseadvisors.com > > _________________________________________________________________ > Tired of spam? Get advanced junk mail protection with MSN 8. > http://join.msn.com/?page=features/junkmail > > _______________________________________________ > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com > >