Link to home
Start Free TrialLog in
Avatar of kevin1478
kevin1478Flag for United Kingdom of Great Britain and Northern Ireland

asked on

Access 2003 - VBA - pass customer_id from 1 form to another

Dear Experts,

I have a form named customer, based on a customer table. It has a button and on click a 2nd form opens named customer_record. This is based on a customer_record table.

The customer_record form should open already populated with information relating to the customer on the customer form. The pk is customer_id.

This works when there is an associated record in the underlying customer record table, as youd expect.

However, if the customer does not have a related customer record the 2nd form opens blank, as you expect. In such a situation, I want the ability to enter a customer record in the customer_record form that is automatically associated with the customer on the customer form.  At present, I can enter a record but only if I select the pk of the customer on the customer_record form. The pk does not transfer automatically. I assume this is because it is a new customer_record, that has yet to be made.

I want to be able to open a customer form. Click the button to open the customer_record form and view or add associated records, without having to select the customer pk.

I hope this makes some sense.  Can you please advise? Thank you.



Private Sub Command68_Click()
On Error GoTo Err_Command68_Click
 
    Dim stDocName As String
    Dim stLinkCriteria As String
 
    stDocName = "frm_customer_enquiry"
    
    stLinkCriteria = "[customer_id]=" & Me![tbl_customer_customer_id]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
 
Exit_Command68_Click:
    Exit Sub
 
Err_Command68_Click:
    MsgBox Err.Description
    Resume Exit_Command68_Click
    
End Sub

Open in new window

Avatar of ozinm
ozinm

That's odd. Not that I've used the wizards in a while but if you create a button to open a sub-form in a new window I thought it handled that.

Anyhow, another way you could do it is pass parameters to the subform.
See:
http://www.fmsinc.com/free/NewTips/Access/accesstip13.asp

With this you can pass the PK + anything else that would be useful in the other form.
ASKER CERTIFIED SOLUTION
Avatar of TextReport
TextReport
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
The only problem with the Application.CurrentProject option is that it returns true if the form is in Design View. I normally use

If syscmd(acSysCmdGetObjectState, acform, "frmEmployees") = X Then

X can be one of the following constants acObjStateOpen, acObjStateDirty or acObjStateNew

Cheers, Andrew
Cheers Andrew,
Haven't seen that one before. Very nice.
*added to my code snippets*

Avatar of kevin1478

ASKER

Thank you very much. All working and I really appreciate your help.