MS Access 2016 VBA - modify TextBox via VBA in Tabular Form - vba

the problem I have seems to be related with the tabular form which allows showing multiple entries at the same time.
I want to have one column (A) calculated from another column (B) but (A) shall still be editable. If I use ControlSource for (A) the underlying textbox becomes non-editable. The same applies for the usage of queries. Both options are not good. Therefore I want to use VBA code that modifies the content of (A) based on changes in (B). And vice versa, if the user modifies (A), (B) gets updated. Btw. (A) does not get stored in the database, only (B).
Problem is, if I update the value of (A) via VBA during an event of (B), the whole column (A) shows the same value and is not calculated line by line in the tabular form mode. Any assistance / help appreciated. Thanks!

An unbound textbox will show the same value for all records. Period.
2-way data dependency is unusual. Think I have seen something like it only once. Involved calculating square footage. User entered rectangular dimensions then had choice of entering the actual footage to account for irregular boundaries or cutouts and the adjustment was calculated or entering the adjustment and the actual was calculated. User had to select a radio button to designate the editable control. This was not on a continuous records form, just single record.

Related

Holding parameter values when report is refreshed due to custom buttons used for expand/collapse groups

This may be as simple as it can't be done, but I have to ask. :) I am building a report using Report Builder 3.0. The report contains a table which also has Grouping established. I wanted to give the user an easy way to expand/collapse all rows of the table, so I used the method of creating a parameter with two values (0 for collapse, 1 for expand), tied the visibility of the group to the parameter using an expression in the Hidden Property for the group. Then I created two text boxes for Expand and Collapse and added the respective parameter/value in the Action in the text box properties.
At this point, everything works as intended. Here is where I run into the issue. I added another parameter, lets just call it "Location". The parameter is a text data type that allows multiple values and gets it available values from dataset/query in the same report. This is where I am guessing what I want may not be possible. When I select my Location(s), then run the report it all looks good. However, when I click on one of the Expand/Collapse text boxes, it clears out the values that I selected for the location(s). I am guessing this is due to the fact that the available values for the Location parameter is set via a query at run time. Is there any way to maintain the values for the Location parameter when triggering the expand/collapse buttons?
Thanks in advance!

MS Access - Continuous form custom text entry

Good Morning All,
I am wrestling with a problem with continuous forms.
I have a continuous form based on a query that pulls transaction information from a table.
I want to have text box on each row where the user can override the fee value, at which point when the submit button is clicked the overridden information is written into a second table in the database.
When I add an unbound text box onto the continuous form I end up with all entries reflecting the amount I have just entered.
If I add a dummy column onto the SQL query, I am unable to edit the information.
Is there a way to do this? Below is an example of the form input I am shooting for:
Snip:
I don't think this can be done in Access.
I think the closest you can get, is to display the value from the secondary table in your continuous form; and then, after some user input (focus into the textbox, or double-click the text box, or button click), prompt the user to enter a value using either the VBA InputBox function, or leveraging the built-in Zoom box. Check that the user-entered value is a valid number, update your external table, and refresh the query results.
You might also create a custom form to validate the input.

Access 2007 need to Force a query update based on a field change in a form?

I have an access database with several calculated fields in text boxes on a form. Most of those update immediately after the data included in the calculation is updated. However I have a couple of those calculated field text boxes that include a data point from a Query, when I update a filed that would impact the query results, those calculated fields do not update correctly until I click through a few records or close and open the form.
How can I force that specific query to update after updating a specific filed on the form?
Try refreshing the form.
Me.Refresh
As an aside, you really should get out of the habit of using bound forms, because you have to end up kludging a bunch of stuff (like this) to get it to work properly, and the Undo functionality (cancelling the entry of a new record) is unstable at best. By unbinding a form, you can have more control over how it reacts to calculated fields and dumping a new data entry is a snap.

MS Access: Continuous Forms and Subforms

Is there a more ideal way to create a form that gets sources from 2 different queries than getting a mainform and putting a subform inside?
Is there any way to make a dynamic subform that can expand depending on the number of entries it outputs?
My gripe with using a Continuous form is that it also shows the blank "next" entry.
Many thanks.
1) It is not possible to say, what is "ideal way". Solution depends on your actual requirements. E.g. I sometimes use "list" of values from second query on place of subform from that second query.
Another way is to turn your viewpoint upside down and try "hang" your form on your second query (or on some table from that second query) and "stick" needed data to the form according to your requirements (e.g. by subform, by calculated field, by dlookup, by vbscript subroutine, or whatever you need)
2) Regard "new entry" - try test all options about "can insert new", "can edit", "read only" etc.

Access: Workarounds for updating data in not updatable query?

tldr: Can not update records from query because of aggregate functions. What workarounds do you suggest?
I have a table containing decision criteria to which a user can assign a relative weight. I calculate the absolute weight in an SQL query using an aggregate function (as described here Divide the value of each row by the SUM of this column).
qryDecisionCriteria
name relative_weight absolute_weight (calculated)
price 2 50 %
quality 1 25 %
experience 1 25 %
I would like to present the query result in a form, where the user can update the relative weights, and then sees the absolute_weights.
However, the query results are not updatable, because the query involves an aggregate function.
What alternative methods or workarounds could I use, so that a user can edit relative_weights and view absolute_weights as a kind of visual feedback?
I read about temporary tables here http://www.fmsinc.com/MicrosoftAccess/query/non-updateable/index.html but I'm not sure, how to implement this.
Maybe I could also create an additional "edit form" based on a simple query, that is automatically invoked when the user selects a record in qryDecisionCriteria data?
Or maybe just display data from two queries (one updatable, one with the calculated field) next to each other in the form?
Which options would you recommend and why?
Make the Record Source for the form the updatable base query. In the text box which shows the calculated absolute weight set the control source to
=DSum("relative_weight","<base table name>")/Forms!<Form Name>!relative_weight
You'll need to be sure that you do two things with this
When you drag fields onto a form in Access it makes the name of the control the same as the control source column. this is really annoying and can cause a lot of headaches. Rename your control to something like txtColumnName. That way Forms!<Form Name>!relative_weight is guaranteed to reference the field and not the textbox.
in the AfterChange event for the relative_weight textbox you should add an event handler in which the following code is run
txtabsolute_weight.Requery
This will make sure the formula is recalculated whenever someone changes a weight. Otherwise they need to hit F5.