Modules & VBA :: View Cannot Be Updated Because Modification Affects Multiple Base Tables
Aug 26, 2014
I am trying to trap the database error "View cannot be updated because modification affects multiple base tables" in the Form OnError event to display a user-friendly message instead of the above.The above can happen in the scenario of inserting/updating several fields of different tables at one time, likewise what I am facing now is the scenario of the user copying an entire record and pasting it.
I tried
Case 4405
MsgBox "Can not update the record. it is related to base tables"
Response = acDataErrContinue
But it doesn't work. How can I know the case number and solve all the scenarios of multiple insert/update attempts?Also, are there any better solution than this? I first tried to detach the SQL statements out of the views and make it one select statement so that I can normally multiple update/insert(as this problem happens with views only) but since CTE is not supported in Access , I failed to do so.
In my Access 2010 database there is a form with a large number of checkboxes enabling me to select/deselect certain record details.
Each click on one of the checkboxes triggers a VBA routine setting true/false values in one of several tables linked to the main table.
A query over all records is filtered by the true/false values of the linked tables and the resulting set of records is displayed in the (continuous) form.
The header of the form contains a text field with the value "=GetRecCount()" displaying (correctly, but randomly fast) the number of records selected:
Code: Function GetRecCount() As String Dim NumRecs As Long Dim rs As Object On Error Resume Next Set rs = Forms![Super Search].RecordsetClone rs.MoveLast NumRecs = rs.RecordCount Set rs = Nothing GetRecCount = Format(NumRecs, "##,###") End Function
Now, the funny thing is that each click on one of the boxes results in 1 call of the VBA routine setting table values, but 21 calls (!) of the text field "=GetRecCount()" in the form. I have established this by incrementing a public variable at each pass.
Why a field in a form is updated 21 times when a filter is applied?
I have a: Movie Form. Table Actor and Table Director in my database.
on my Movie Form I have a combo box, where users can click on any movie on the list and display both Actors and Director information according to the Movie Title they select.
To accomplish this I use Subform/Subreport Wizard to add each Table to the Movie Form. Because When I try to bound the Specific Data to a textbox I use, the Field List is EMPTY.
My question is how can I make my Movie Form have acouple TEXTBOX's that change accordingly to the Combobox without having to use the Subform Wizard to import the info from my 2 tables.
I hope this make some sense, im just learning. Any help would be appreciated.
I am dabbling in updating an existing database.Currently our staff enter data via a form and I have this set up using the below script to automatically complete the "Due date" field with a date 5 working days ahead of the current date, saving them from having to manually enter this date each time.
Code: Public Function PlusWorkdays(dteStart As Date, intNumDays As Long) As Date PlusWorkdays = dteStart Do While intNumDays > 0
[code].....
This then updates the value on the relevant form object using the default value "PlusWorkdays(Date(),5)" to give a date 5 working days ahead. the problem I face is that due to our business process at 15:30 each day our due date needs to change to 6 working days from todays date rather than 5. I was wondering if there is a simple way I can modify the script to add an extra working day when the local time hits a specified point (15:30 in this case), unfortunately this is a bit outside my abilities currently!
I am using the following code to check for duplicate tickets when importing multiple records into a datasheet view form by using the paste append function.
Code: Private Sub Ticket_Number_BeforeUpdate(Cancel As Integer) DoCmd.SetWarnings False If DLookup("Ticket_Number", "Record_Store", "Ticket_Number= '" & Me.Ticket_Number.Value & "'") > 0 Then Cancel = True MsgBox "There were import errors, please open View Import Errors above." End If End Sub
The form is used to insert multiple records into the database at a single time.
That codes works to check for duplicates. And if there are none there are no popup messages.
If there are duplicates though it gives a popup for every single Ticket_Number that is a duplicate.
I am wondering if there is a way for it to give only a single popup once it completes checking all the records to be imported for duplicates.
I made a database that in one of the forms, I like by clicking on a button the user be able to select 5 excel files with different file names (in the same directory) and then based on the imported file's names, it be stored in 5 different tables.
At the moment by using the bellow code, I can import multiple files (with the same formats) only into one table . My vba code comes as follow:
Function GetAllFiles() Dim fd As Object Dim strFilter As String Dim lngItems As Long
Const msoFileDialogOpen As Long = 3 Const msoFileDialogViewDetails As Long = 2
A small issue I was wondering of for a few day . Is it possible in SQL query to SELECT multiple fields from multiple tables ? Example for the question is
Code:
dim my_var as String my_var = "SELECT Emp_FName , Emp_LName , Emp_Adress " _ & " FROM Table1 " _ & " AND Emp_Date_Of_Payment , Emp_Sum_Of_Payment " _ & "FROM Table2 " _ & " WHERE Emp_ID = 3 "
Is this code actually valid in SQL gramatics , and is it usable if passed to a Recordset variable ( rs = CurrentDB.OpenRecordset(my_var) ) ? Just FYI - The two tables are not related and I want to keep them that way (If possible relate their records just via SQL/Vba )
I have 5 tables which comes from different departments in our company. All of them have the same key "project no" but hold different information in other colums. As a starting point I have secured that they all have same no. of records meaning all "project no" are in all tables but some table might not contain other information in that record than the project no. I have put them into a quirie and on a form I am able to look at all data from all 5 tables. I have linked them one to one and it works fine untill I add a record to one of the tables. Afterwards I am not able to write into fields from other tables because there is no automatic creation of the record in the other tables. Please How would this be best/easiest to make for me. ? The reason why I have to keep the 5 tables is that regular updates are avaiable form any of them.
Appricate any comments which can make me any progress.
I have done this in Excel before, but not Access. I do not know VBA. I figure this will have to be done in a query or a macro. I don't even know if all of this is possible in Access. I need to be able to split an Address field into:
Street Number Street Name Street Type Street Direction
And the purpose of this is so that I can pull out the Street Type (Drive, Road, Lane, etc) and update the abbreviations (DR, RD, LN) to the Street Type spelled completely out.
I did this in Excel by creating a Named Range "Types" on a sheet that has the abbreviations in Column A and the spelled out versions in Column B so that I could convert the abbreviations to complete street types. I broke down the entire address into each part on another sheet. Then I did a VLOOKUP to look up the Street Type in Column B in the Types range. Works great! And the only way I knew at the time to do that.
But, by doing this, I have to get the data I need from a download into a spreadsheet, break the address fields down on a second sheet, do all kinds of field update conversions (to get the field names from the download to match the field names in my Access table). This takes extensive Excel programming. I just thought there might be a way to do it by simply importing the data from the download straight into Access. That is easily done, but the Street Types aren't consistent.
There may even be a better way to do this than splitting....something like if a field CONTAINS DR update it to Drive. This would be a long process to set up because there are so many different street types to consider.
This is basically for the purpose of finding duplicates. If there is one entry called 123 Main St and another called 123 Main Street, they are not going to show up as duplicates, rather as two separate records.
I've been making small changes here and there to my database in Access 2013. I have left the original database in place and it has acquired many new records from the last month. I'm ready to start using the newly updated design version of the database, but I do not want to have to type all those new records into the new database to get it up-to-date. There has to be a way to import the data from the original database to the newly updated one.
Most, If not all of the fields have the same names, but some of the fields have changed, like to Combo boxes. I removed two or three unneeded fields, and added two or three. I understand the new fields will need to have data enter to them, but the remaining would be redundant and inefficient if I have to reenter all the recent records again.
How do I import the data from the original two tables to the new updated database? I only have two tables and they use a One-to-One relationship in both databases. The table's names are different, but as I mentioned earlier, the fields are mostly the same. Do I need to import into Excel, and then modify the data slightly, and then import into my new database?
I Have made a change to a field in my tables. it was was based on ethnic background and originally i had just created the field but had not added in the options ( via adding it into the row sources).
So now the tables field have been updated but unfortunately on the form it has not updated into the dropdown i had created containing the options..
In one form, I have to click on button that opens the other form. Each form is bound to its table and those two tables are linked by Primary [RaDAR_Id] and Foreign [radar_id] fields. I would like the code to:
* open the other form * move to the first record that has [radar_id] = [RaDAR_Is] if exists
If there is no any record in the other form that contains [radar_id] = [RaDAR_Id] then I want to create such record. So I am using the code (below). The problem is that the other form is not being updated.
Code:
Private Sub cmd_edit_usage_Click() ' DoCmd.OpenForm "frm_edit_usage" Dim lngRadarId As Long Dim patientId As Long Dim rsUsage As DAO.Recordset Dim rsUsageWrite As DAO.Recordset
this is a re-post - can anyone help? I think this is an easy one for the experts out there!
I have a form called frmTshtExp which is bound to a query called qryTshtExpenses. Most of the fileds in the form are combos and text boxes bound to the fields in the queries.
However, the first combo is unbound. It is called cboProjectSelect and it filters the second combo called cboWorkstreamExp. This is done using a query called qryTshtWorkstreamExp which has workstreamID, workstream and projectID as fields.
The filter works fine. The trouble is that selecting a project from the first combo filters workstreams from the second combo for ALL records that are entered. In other words, no matter how many rows are entered in the datasheet on the form, they all have to have a workstream belonging to just ONE project. I want to be able to enter different workstreams belonging to DIFFERENT projects on each row.
I hope you can help. I've put in a reduced version of my db in the following location:
unfortunately, I didn't know how to disable the securities I've set up, so you need to log use the shortcut (after modifying the target location in it's properties) and use the word "forum" as username and password.
I have a form where you enter a Case number (Primary key) and EmployeeID (foreign Key), the employeeID must match a employeeID held in the employee table. Within this Case form, I have a subform called Account which has an autonumber Primary key called accountID. Each of these accounts will have a questionnaire. So I created the questions in the same table (account). So Q1, Q2, Q3 etc. which are Questions relating to each AccountID, one accountID can have one questionnaire.
What is working fine is I can enter an account NUMBER which is a field in my account table (which creates a new AccountID(autonumber)) and can happily check the checkbox, fill out the text fields move to the next record and the checkbox is unticked and text boxes are blank (default state) which is great as I want them to ready for new input (new accountnumber/id).
My problem is assume I create my very first account number which would be say AccountID(0), I want all textboxes for the three questions disabled until the checkbox is ticked. So thats ok, I can put the default value of chkbox to FALSE, and in VBA I can do the on_checkbox_click, if chkbox.value = true then textbox1.enabled = true else textbox1.enabled = false. I can do that for the other two textboxes in the Chkbox click event.
When I Tick the checkbox it enables the textboxes, which is good, but when I create/move to the next record, instead of these textboxes being disabled as default, they are enabled because i ticked the chkbox for the first record. I dont want the manipulation of one AccountsIDs questionnaire to affects the other records. If I add an unbound textbox which I want to display a message if the chkbox is ticked, then if I tick it on one record, it has the displayed message on all records. How can this be if each questionnaire is independently i.e each questionnaire is for ONE accountID.
It seems the textboxes etc are not unique to each accountID but they should be because they are in the Account table and when I enter values and use the checkboxes without doing the disabling or showing a textbox comment, they are separate and work great, but when I use my code to manipulate the flow of a questionnaire for each account i.e enabling textbox/showing textbox comment, it changes the formatting on the other records questionnaire which I don't want as each questionnaire will be different, so a chkbox may enable a question on one ID but not on another as it wont be relevant, so at the moment I only have ONE truly working questionnaire which works for ONE account , but I want it to work uniquely for each account.
I have a simple dbase that shows names in a table as "Smith, John" for example. My query links two tables, and should show all names in the aforementioned table. However, certain names are missing. Here's where it get's weird - if I change the spelling of their name (Smith, J for example), suddenly they will show with the correct data. There are no common strings to the missing names, but on each, when I change the spelling, each missing name appears. I have made sure the relationship is joined to show all data in the "Names" dbase.
Some vba code which is able to get the last updated or last modified value of an excel file stored in a folder in a shared drive and update a field on a form in ms access.
I have a main form called "frmMain" and on it I have a text control named "txtBoatStatus". The control source for txtBoatStatus is determined by code that I have in the Form_Current event. The code is as follows:
txtBoatStatus.Value = "There are " & BoatStatus & " boat orders that are complete."
(end code sample)
Now when I first open the frmMain everything works great and the control will say, "There are 5 boat orders that are complete." Perfect. However, In the instance if I open the form with my Boat Orders and mark off another order as complete (bringing my total to 6), the txtBoatStatus does not update when I reopen frmMain. It will only update and show, "There are 6 boat orders that are complete." if I manually hit SHIFT+F9.
How can I do this automatically? I've tried various things such adding "Me.Recalc" or "Me.Requery" to differnt events, controls, etc. but I still cant get it to show the updated number automatically. How can I get it to update without SHIFT+F9?
The file is huge with many sections (eg Names, Address) in it. What I need to do is load it into Access for some analysis.Is there a way I can split the file one loading to the system into multiple tables?
I have a database which I've creating but now want to make others available to update - in the past this has not gone well! The database uses data from two excel sheets and the problem has been people do not always check if these have been updated today before running and therefore the database gets loaded with old data.I have found code that will check and display a message showing datelastmodified for a file but what i'm trying to find is code which will check both files' datelast modified, if they are modified today then run the update macro, if one or both are not modified today, then to display a message saying that the excel is not updated.
I am totally new to ms access form development. I have to construct a form with a text box a command button and listbox. listbox contains the list of items.I have populated the list box with the items in the tables.Now on the same page I have to add new item via text box and when click command button it should be added(all these thing I have done). Problem is that I have to do some thing like if a type any letter in the text box all listbox item are arrange like that like
If Items are abcd,aaaa,aabb, aa,abb,bba,bcd,bab I enter ba in the textbox then itme should be arrange like
I've got a table of associate directors "t_ADnames" and want to build separate tables for each AD name that pulls a pass through query from our data warehouse. I'm thinking it's got to be done with a macro somehow? So it would run pass_query where AD name = "John" and insert into t_john, then it would check the next name in t_ADnames and run the same query for say "Mark" and insert all his data into t_mark and so on until the list (of about 12 people) has been completed.
I have a code that allows the user to select the file that they want to import, however it automatically imports the first worksheet into a specific table. Is it possible to change the code to make it import the first worksheet (or with a specific name) into one table and another worksheet into another table?
Code: Dim dlg As FileDialog Set dlg = Application.FileDialog(msoFileDialogFilePicker) With dlg .Title = "Select the Excel file to import" .AllowMultiSelect = False .Filters.Clear
A search form, to search into those tables (It searches by "User")
The search form contains a listbox that shows results (listPC)
And the following code:
Option Compare Database Dim strUserPC As String, strUserTel As String Dim db As DAO.Database, rsUserPC As DAO.Recordset ', rsUserTel As DAO.Recordset Private Sub txtSearch_LostFocus() strUserPC = "" strUserTel = ""
[Code] .....
It works, but I have one problem. It only shows telephones or desktop, not both. It deppends on which line inside UpdateList is first.
That example searches into 2 tables:
-Telephones -Desktops
And searches by "user".
I want to list all telephones and desktops that a user has assigned.
I am wondering if there is an efficient way to compare two fields from one table to another two fields from another table. So basically
Code:
If targetTable.Field1.Value = sourceTable.Field1.Value And targetTable.Field2.Value = sourceTable.Field2.Value Then targetTable.Field3.Value = sourceTable.Field3.Value
The problem is that I need to run this for all entries in targetTable. The only I could think of was to use 2 nested for loops (one for target table and one for source table) as outlined in the following (my data is currently in Excel, but I want to import it to Access)
Code: For i = 2 To 5754 For j = 2 To 3500 If targetSheet.Range("I" & i).Value = sourceSheet.Range("AR" & j).Value And targetSheet.Range("K" & i).Value = sourceSheet.Range("AS" & j).Value Then targetSheet.Range("I" & i).Value = sourceSheet.Range("AT" & j).Value
The above code works but it is really slow (takes about 12 mins on a high-end CPU).