Accessing ID Of Last Record Right After You Insert It Into Table
Apr 13, 2005
Hi folks,
I have an Append Query (Insert Into...) that I use to insert values into a table from a form. But to have that tie into other tables I need to gather the Student_ID (primary key) that is autogenerated when the record is inserted. How do I do this? I want to store it in a public variable. I've done quite a bit of searching but nothing of any value has turned up. Please help.
What I have on button press:
DoCmd.OpenQuery "Register Camp Students"
After that I need something to gather that newly inserted Student_ID and store it for later use. Please help!
I've got this simple thing.. which I couldn't do and stuck for a long long time.. I have done some programming in a few languages, but not in SQL or VBA and I quite confused about programming styles that VBA and SQL accepts.
I'm currently working in Microsoft access and the thing I'm stuck on is retriving field value from a record and writing into another record on the same table.
For example the table "Table-users" looks like the following:
ID Name Year Month Date 1 Steven 1979 9 18 2 Jeremy 1977 10 22 3 Eslynn 1988 10 10
I've built a form that contains two lables (combobox), "ReplaceMe" "LoadMe" and a command button. Which end user could choose which record to load and which to replace.
I wish to copy Year, Month and Date from LoadMe into ReplaceMe without effecting the Replace me ID and Name.
The VBA, SQL code i've got looks like. ----------------- 'Command_Click is the tigger button to active the following code. Private Sub Command37_Click()
'Below is an example of what I wanted to do field by field. However, in the real 'environment, I needed to move about 20 odd field into another object. I'm not sure 'to use Append or Update Query Dim UpdateSQL As String Dim text1 As String Dim text2 As String Dim text3 As String
'this loads the string containt-the Name of the object-into text1. 'this line works fine, arr.. other ones don't....... text1 = Me!ReplaceMe text2 = Me!LoadMe 'Load the month of the LoadMe. text3 = Table![Table-users = text2].month
'Loads the SQL instruction into UpdateSQL 'Table-table is a table, containing several objects and fields. UpdateSQL = "INSERT INTO [Table-users].text1( [Day], [year], [month] ) " & _ "SELECT Table-users.Day, Table-users.year, Table-users.month" & _ "FROM Table-users" & _ "WHERE (((Table-users.Name)='ReplaceMe'));"
DoCmd.RunSQL UpdateSQL
End Sub-------------------- Well the obvious, the above code doesn't run. If LoadMe = Jeremy, ReplaceMe = Steven, the above code should return:
ID Name Year Month Date 1 Steven 1977 10 22 2 Jeremy 1977 10 22
Making Steve's Year, Month and Date field the same as jeremy
======================
What I think i'm confused about is when do I use [ ] ( ) ! .
Like... if I wanted to read the field value of "Date" from the object from the "Name" in combo box "LoadMe", what should I write?
ie, if the combo box "LoadMe" contains Eslynn. The end result should be 22.
In my VBA code, i am trying to move some table records from table1 to table2. Both table1 and table2 has exact structures.
In the INSERT statement for table2, what is the easy way to insert a record from table1? I am trying to avoid having to specify each field name in the INSERT statement. Because, i have 100 fields in table.
Is there a way to INSERT a particular record from table1 to table2 without having to specify field names in the INSERT statement like in below example?
The two records that I get the proplem on are not included here, but somehow they have been updated. I traced the access code, but I could see no reference to them that they were used for the update in either the form or any modules called.
Somehow up to a few weeks ago those two columns were updated.
Tracing the code and using the immediate window the user_name variable stores the login name corectly.
I have a sub table that acts as a revision history for the items in my main table. I've just finished uploading all the records into the main table and now I want to insert one record into the subtable for each record in the main table to start the history with the record creation.
The sub table looks like this:
tblRevisions - RevID (auto Number / primary Key) - RevDate (date of revision) - RevName (Who made the revision) - RevDesc (What revision was made) - RevAuthorized (Who authorized the revision) - RevLabel (Foreign key to the primary table)
The info I want to insert is:
RevID - Auto Number RevDate - 11/27/2013 RevName - 3 RevDesc - "Added Label to database" RevAuthorized - 1 RevLabel - (One for each record ID in tblLabels)
I suspect that I want to start with an insert into statement, something along the lines of:
Code:
Insert into tblRevisions (Revdate, RevName, RevDesc, RevAuthorized, RevLabel) Values ("11/27/2013",3,"Added label to database", 1, ?)
I'm not sure how to indicate that there should be one label for each Record in tblLabels or that revLabel value should match the ID from tblLabels though.
I am attempting to insert a record with selected data into a temp table and I am getting "Run-time error '3075': Syntax error in (comma)...". Here is the code:
Code: Private Sub XferDataToTempTable() Dim db As Database Dim strSQL As String Set db = CurrentDb
I have a sub form with staff records on it within a main form. I am trying to allow the user to select a record from the sub form and add it to a table, here is my code which, to me, looks correct. However it gives me an error saying "Syntax error in INSERT INTO"
Code: Private Sub Command3_Click() Dim dbs As Database Dim sqlstr As String Set dbs = CurrentDb Forename = Nz(Forms!frm_Capex_Submission!frm_staffSub.Form.shy_forename, "") Surname = Nz(Forms!frm_Capex_Submission!frm_staffSub.Form.shy_surname, "")
I am at work, and I have acquired a database that prints labels. They now want the database to be coded so that after certain labels are printed the database will print a blank label. I have the code figured out as a Do While statement in order to print the blank label. The problem I am having is that I am trying to use the Insert Into command to insert the filepath into the table that adds the blank label.
|DoCmd.RunSQL "INSERT INTO Rod_tmakLabels ( Print, [Order] ) SELECT Yes AS Expr1, 'Rods Labels' AS Expr2"|
If I run the above command, it just adds the text "Rods Labels" at the end of the table. Is there anyway with the INSERT INTO command that I can insert the new label between the 2nd and 3rd row and add another row? Or is the command designed only to add a new row to the end? I haven't had any luck searching for this yet.
right all tables are like a 2d array so does any body know how i can access a field in a row of a table ie like in most languages it goes a bit like this ArrayName(1,1) with ArrayName being the name of the table and that access the first field of the first row. im new to Vba and access 2000 but all i want to do is access the fields in a column of a sub-form displayed as a table add them all up and place the answer in a text box on the main form stick all this in a function so i can run it inside a macro
I'm making a test database for DVD rentals. When A loan is made I have an update query that sets some fields in the DVD copy table. One of these fields needs to be set to the primary key of the loan made. This would be the last entry on the loans table. I don't have any idea what to put in the 'Update To' box in the query though.
Wrong code here, but this may help explain what I am trying to get: Tables.Loans.LastLoan.Loan ID
Also heres an image of my query: http://i92.photobucket.com/albums/l15/mikegrundel/Accessproblem.png
:rolleyes: hi i am raza. i am facing a problem while accessing the properties page of access table. when i gets its properties page it has no properties on it.i have attached the pic wich can explain the problem. pls tell me if any body can solve this problem. thanks. raza
I have developed a small database with 3 or 4 forms which works ok on most PC's. But when I put it on a certain PC, it almost works properly except for one form which is very slow accessing the table! Eg. It could take 2 minutes to use a combobox.
All PC's have Access 2000. Would there be a reason for this? Is this an access problem or a PC problem? Are there special settings that I'm unaware of?
I have a database with a number of tables 2 of which are:
# Personal Members Table (with all their details and addresses and contact details) # Organisation Table (including who are members of this Org)
My conundrum is this; In the Org table I have just created a 'Treasurer' Field and want to choose a name from the Members Table so that I do not have to put the data in twice (which is what has happened in the past.)
I have linked the tables and but within the Members table the Field names for the Personal Name are as follows <FirstName> <LastName> and there is another for the <Org> they are connected with...
In the Members table it would also be good to have the ability to hover the mouse over the <org> field (or click) on it and then underneath a box appears with everyone who is a member of that org. I have seen this working on another database but cannot seem to replicate it here for some reason?
I have a set of maybe 5 template word docs which I populate with info form our database using bookmarks , the word docs are currently sat in a shared network drive.
I have started wonder if it would be better to store them in a table and call them from there to keep things together.
I'm building a DB where I have multiple users. I would like to have all data in 1 table but only give access to records created by the individual user. Is this possible?
Alternatively, if each user has it's own table, how can I report on the sum of all tables.:confused:
I have created a table of Some machines specifications.
Item Name Type location 1. Sieve156 Sieve 3rd floor 2. Rollermill1 Mill 1st floor .... ... ...
When inserting for example a new sieve machine I want database add automatically this machine between items 1. and 2. and assign the item number 3 to rollermill1. but this new record is added to the last row and its item number will be 3 but it should be 2. What shall I do for this problem? (in excel it is easily possible to add a row between two rows.. is it also possible in access?)
I've inherited an Access 2003 database, a rather complex one. The database has a login, with the credentials stored in a table which I can view (minus the pass, which is masked). Of course, for security reasons, I shouldn't be able to just add a record and create a new ID, in essence bypassing all security. As such, the table with the user records does not permit new records to be added. What steps need I take to add new records, the option being greyed out in the interface, no new record bar available at the bottom of the table.
Hi guys. I hope someone replies to this thread....I am struggling with this one.
I am developing an Asset Management System for our IT Equipment. We wish to record the software installed on each PC.
The Manufacturer and Software names are stored in separate tables. The AssetMain table has a one-to-many relationship with the AssetSoftware table.
I originally had a (continuous) subform for software on my main Asset form. However, as I am using cascading combo boxes (to filter the Software Combo by the Manufacturer) it mean that changing the combo on each record would appear to change the existing values too (common problem).
I would therefore like four unbound controls. 1) Combo Box - Manufacturer 2) Combo Box - Software Package 3) Combo Box - Package Edition 3) Text Box - Serial Number
When the user selects/enters these values and clicks an "Add" button I would like add a new record into the AssetSoftware table where Asset_ID = Parent.Asset_ID.
I will then have a list box that queries the software for that particular Asset. This will requery on each CmdAdd_Click.
Attached is a screenshot of what I would like to achieve (if I click Add it should add Microsoft Office XP to the list box below)
Would really appreciate some help (do not normally get many replies to my threads :( )
So, I have a table with an autonumbered key field. I started the autonumbering at 1000 thinking that I may want to manually backfill some old records at a later date. Now I’m stuck.
Is there a way I can insert a new record into this table, filling this field as “950” for example?
Creating a flight management database to create flightplans that determine local/zulu times and dates of each leg of the flight. Arrival and departure times are calculated by durations entered for flight time to get arrival information, and time on the ground to determine departure time/date.
My question, is there a way for the user to insert a record (leg) into an exisitng flight plan that they are editing? The legs are currently in order by an autonumber so inserting a new record would not necessarly put the legs in the correct order of the flight.
Currently, the user only needs to enter the airport identifier and air/ground time along with initial departure time/date. No dates are needed for each leg.
after I insert a new record using INSERT INTO and then use DMax() (in a private sub) to look up the new record. About half the time DMax() pulls the new record based on the primary key field (AutoNumber) just fine. However, half the time it pulls the max record prior to the new record being inserted. I.e. record 1001 was added and DMax() pulls record 1000. I'm assuming that my issue has something to do with the timing of when the record is writen/saved in the table. Is there a simple method of refreshing the table that I can use prior to using DMax()?