showing a subform based on the main form

  • Follow


I have a main form named frm Item PT.  It has a subform that shows as a 
datasheet.  The subform is named Fail.  On the main form, when a combo box 
shows "Unnacceptable", I want to show the subform related to that record to 
enter information about why it is unacceptable.  The forms are linked 
together using the PT ID field.

Right now I have the following code:

Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
 in the after update event

Although it doesn't show the subform like I would like it to (as if I had 
clicked on the plus sign to show the subform), it does open the subform so I 
can enter a new record.  The problem is when the form opens, it does not 
inherit the main forms PT ID.  When I enter data into the subform that opens, 
it will not save the record.  

Two questions here:

1.  Is there a way to get it to really show the subform in the same window 
as the main form (as if I clicked on the plus sign)

2.  If I have to open it as a separate form, how do I get it to pull the PT 
ID in so I can enter a new record?

Thanks in advance for any help!
0
Reply Utf 4/15/2010 2:04:01 AM

Here is a link to the code needed on the after update of the combo box
http://allenbrowne.com/ser-03.html

before you put the line
Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")

Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia


"sg" <sg@discussions.microsoft.com> wrote in message 
news:F94A8390-F80B-4552-B398-9A2891E140CB@microsoft.com...
>I have a main form named frm Item PT.  It has a subform that shows as a
> datasheet.  The subform is named Fail.  On the main form, when a combo box
> shows "Unnacceptable", I want to show the subform related to that record 
> to
> enter information about why it is unacceptable.  The forms are linked
> together using the PT ID field.
>
> Right now I have the following code:
>
> Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
> in the after update event
>
> Although it doesn't show the subform like I would like it to (as if I had
> clicked on the plus sign to show the subform), it does open the subform so 
> I
> can enter a new record.  The problem is when the form opens, it does not
> inherit the main forms PT ID.  When I enter data into the subform that 
> opens,
> it will not save the record.
>
> Two questions here:
>
> 1.  Is there a way to get it to really show the subform in the same window
> as the main form (as if I clicked on the plus sign)
>
> 2.  If I have to open it as a separate form, how do I get it to pull the 
> PT
> ID in so I can enter a new record?
>
> Thanks in advance for any help! 


0
Reply Jeanette 4/15/2010 5:16:15 AM


Thanks for your quick reply, Jeanette. 

I am still having issues...

Now my code in the after update property of the combo box is:

Private Sub status_AfterUpdate()
 Dim rs As DAO.Recordset

    If Not IsNull(Me.Status) Then
        'Save before move.
        If Me.Dirty Then
            Me.Dirty = False
        End If
        'Search in the clone set.
        Set rs = Me.RecordsetClone
        rs.FindFirst "[PT ID] = " & Me.Status
If rs.NoMatch Then
            MsgBox "Not found: filtered?"
        Else
            'Display the found record in the form.
            Me.Bookmark = rs.Bookmark
        End If
        Set rs = Nothing
    End If
Me.[fail].Visible = (Me.[Status] = "Not acceptable")

End Sub

Note:  I changed the field name of the combo box to Status - it seemed that 
the former name may have been causing problems because I had a "/" in the 
field name.  

Anyway, when I change the status to "Unacceptable", I get the following error:

Run-time error '3070':
The Microsoft Office Access database engine does not recognize 'Acceptable' 
as a valid field name or expression.

When I click on Debug, the following line of code is highlighted:

        rs.FindFirst "[PT ID] = " & Me.Status

I saw on the link you sent me that if the field is text you have to write 
this line differently, but it is an autonumber field so I thought I was ok.

The other thing that I'm wondering is whether my combo box is causing 
problems.  This was actually set up as a lookup field in the underlying table 
so I'm not sure if that is causing a problem.  We do need to store this data 
in the table...do I need to create an actual combo box on the form?  

I don't know what the error I am getting means - I would appreciate your 
feedback!

"Jeanette Cunningham" wrote:

> Here is a link to the code needed on the after update of the combo box
> http://allenbrowne.com/ser-03.html
> 
> before you put the line
> Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
> 
> Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia
> 
> 
> "sg" <sg@discussions.microsoft.com> wrote in message 
> news:F94A8390-F80B-4552-B398-9A2891E140CB@microsoft.com...
> >I have a main form named frm Item PT.  It has a subform that shows as a
> > datasheet.  The subform is named Fail.  On the main form, when a combo box
> > shows "Unnacceptable", I want to show the subform related to that record 
> > to
> > enter information about why it is unacceptable.  The forms are linked
> > together using the PT ID field.
> >
> > Right now I have the following code:
> >
> > Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
> > in the after update event
> >
> > Although it doesn't show the subform like I would like it to (as if I had
> > clicked on the plus sign to show the subform), it does open the subform so 
> > I
> > can enter a new record.  The problem is when the form opens, it does not
> > inherit the main forms PT ID.  When I enter data into the subform that 
> > opens,
> > it will not save the record.
> >
> > Two questions here:
> >
> > 1.  Is there a way to get it to really show the subform in the same window
> > as the main form (as if I clicked on the plus sign)
> >
> > 2.  If I have to open it as a separate form, how do I get it to pull the 
> > PT
> > ID in so I can enter a new record?
> >
> > Thanks in advance for any help! 
> 
> 
> .
> 
0
Reply Utf 4/16/2010 1:31:01 AM

I should also tell you that after I get out of the debugger, the subform does 
open as a separate form, but it is still not populating the PT ID field in 
the subform so I am still unable to save the data.  

"sg" wrote:

> Thanks for your quick reply, Jeanette. 
> 
> I am still having issues...
> 
> Now my code in the after update property of the combo box is:
> 
> Private Sub status_AfterUpdate()
>  Dim rs As DAO.Recordset
> 
>     If Not IsNull(Me.Status) Then
>         'Save before move.
>         If Me.Dirty Then
>             Me.Dirty = False
>         End If
>         'Search in the clone set.
>         Set rs = Me.RecordsetClone
>         rs.FindFirst "[PT ID] = " & Me.Status
> If rs.NoMatch Then
>             MsgBox "Not found: filtered?"
>         Else
>             'Display the found record in the form.
>             Me.Bookmark = rs.Bookmark
>         End If
>         Set rs = Nothing
>     End If
> Me.[fail].Visible = (Me.[Status] = "Not acceptable")
> 
> End Sub
> 
> Note:  I changed the field name of the combo box to Status - it seemed that 
> the former name may have been causing problems because I had a "/" in the 
> field name.  
> 
> Anyway, when I change the status to "Unacceptable", I get the following error:
> 
> Run-time error '3070':
> The Microsoft Office Access database engine does not recognize 'Acceptable' 
> as a valid field name or expression.
> 
> When I click on Debug, the following line of code is highlighted:
> 
>         rs.FindFirst "[PT ID] = " & Me.Status
> 
> I saw on the link you sent me that if the field is text you have to write 
> this line differently, but it is an autonumber field so I thought I was ok.
> 
> The other thing that I'm wondering is whether my combo box is causing 
> problems.  This was actually set up as a lookup field in the underlying table 
> so I'm not sure if that is causing a problem.  We do need to store this data 
> in the table...do I need to create an actual combo box on the form?  
> 
> I don't know what the error I am getting means - I would appreciate your 
> feedback!
> 
> "Jeanette Cunningham" wrote:
> 
> > Here is a link to the code needed on the after update of the combo box
> > http://allenbrowne.com/ser-03.html
> > 
> > before you put the line
> > Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
> > 
> > Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia
> > 
> > 
> > "sg" <sg@discussions.microsoft.com> wrote in message 
> > news:F94A8390-F80B-4552-B398-9A2891E140CB@microsoft.com...
> > >I have a main form named frm Item PT.  It has a subform that shows as a
> > > datasheet.  The subform is named Fail.  On the main form, when a combo box
> > > shows "Unnacceptable", I want to show the subform related to that record 
> > > to
> > > enter information about why it is unacceptable.  The forms are linked
> > > together using the PT ID field.
> > >
> > > Right now I have the following code:
> > >
> > > Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
> > > in the after update event
> > >
> > > Although it doesn't show the subform like I would like it to (as if I had
> > > clicked on the plus sign to show the subform), it does open the subform so 
> > > I
> > > can enter a new record.  The problem is when the form opens, it does not
> > > inherit the main forms PT ID.  When I enter data into the subform that 
> > > opens,
> > > it will not save the record.
> > >
> > > Two questions here:
> > >
> > > 1.  Is there a way to get it to really show the subform in the same window
> > > as the main form (as if I clicked on the plus sign)
> > >
> > > 2.  If I have to open it as a separate form, how do I get it to pull the 
> > > PT
> > > ID in so I can enter a new record?
> > >
> > > Thanks in advance for any help! 
> > 
> > 
> > .
> > 
0
Reply Utf 4/16/2010 1:35:01 AM

1. " I changed the field name of the combo box to Status - it seemed that
the former name may have been causing problems because I had a "/" in the
field name."

Field names are best with just letters of the alphabet from a - z and you 
can use numbers from 0 - 9 in conjunction with letters of the alphabet.
Special characters such as / and full stop and comma and quotes and most 
other special characters have particular meanings in the internal parts of 
access and cause problems if used in names for fields, queries, forms etc.

2. Yes, the lookup field in the table will be causing the problem with the 
combo.
Instead of a lookup field, create a table for status.
You can have 2 fields in the table, StatusID - autonumber and StatusName - a 
text field.

Let's know how you get on.


Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia


"sg" <sg@discussions.microsoft.com> wrote in message 
news:5D1695F6-DB9C-4D5D-85B8-D41F8548AC1D@microsoft.com...
> Thanks for your quick reply, Jeanette.
>
> I am still having issues...
>
> Now my code in the after update property of the combo box is:
>
> Private Sub status_AfterUpdate()
> Dim rs As DAO.Recordset
>
>    If Not IsNull(Me.Status) Then
>        'Save before move.
>        If Me.Dirty Then
>            Me.Dirty = False
>        End If
>        'Search in the clone set.
>        Set rs = Me.RecordsetClone
>        rs.FindFirst "[PT ID] = " & Me.Status
> If rs.NoMatch Then
>            MsgBox "Not found: filtered?"
>        Else
>            'Display the found record in the form.
>            Me.Bookmark = rs.Bookmark
>        End If
>        Set rs = Nothing
>    End If
> Me.[fail].Visible = (Me.[Status] = "Not acceptable")
>
> End Sub
>
> Note:  I changed the field name of the combo box to Status - it seemed 
> that
> the former name may have been causing problems because I had a "/" in the
> field name.
>
> Anyway, when I change the status to "Unacceptable", I get the following 
> error:
>
> Run-time error '3070':
> The Microsoft Office Access database engine does not recognize 
> 'Acceptable'
> as a valid field name or expression.
>
> When I click on Debug, the following line of code is highlighted:
>
>        rs.FindFirst "[PT ID] = " & Me.Status
>
> I saw on the link you sent me that if the field is text you have to write
> this line differently, but it is an autonumber field so I thought I was 
> ok.
>
> The other thing that I'm wondering is whether my combo box is causing
> problems.  This was actually set up as a lookup field in the underlying 
> table
> so I'm not sure if that is causing a problem.  We do need to store this 
> data
> in the table...do I need to create an actual combo box on the form?
>
> I don't know what the error I am getting means - I would appreciate your
> feedback!
>
> "Jeanette Cunningham" wrote:
>
>> Here is a link to the code needed on the after update of the combo box
>> http://allenbrowne.com/ser-03.html
>>
>> before you put the line
>> Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
>>
>> Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia
>>
>>
>> "sg" <sg@discussions.microsoft.com> wrote in message
>> news:F94A8390-F80B-4552-B398-9A2891E140CB@microsoft.com...
>> >I have a main form named frm Item PT.  It has a subform that shows as a
>> > datasheet.  The subform is named Fail.  On the main form, when a combo 
>> > box
>> > shows "Unnacceptable", I want to show the subform related to that 
>> > record
>> > to
>> > enter information about why it is unacceptable.  The forms are linked
>> > together using the PT ID field.
>> >
>> > Right now I have the following code:
>> >
>> > Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
>> > in the after update event
>> >
>> > Although it doesn't show the subform like I would like it to (as if I 
>> > had
>> > clicked on the plus sign to show the subform), it does open the subform 
>> > so
>> > I
>> > can enter a new record.  The problem is when the form opens, it does 
>> > not
>> > inherit the main forms PT ID.  When I enter data into the subform that
>> > opens,
>> > it will not save the record.
>> >
>> > Two questions here:
>> >
>> > 1.  Is there a way to get it to really show the subform in the same 
>> > window
>> > as the main form (as if I clicked on the plus sign)
>> >
>> > 2.  If I have to open it as a separate form, how do I get it to pull 
>> > the
>> > PT
>> > ID in so I can enter a new record?
>> >
>> > Thanks in advance for any help!
>>
>>
>> .
>> 


0
Reply Jeanette 4/16/2010 5:08:17 AM

Ok - I got the combo box put in and now I get the message, "Not Found, 
filtered?" which I see is in the code, but I don't know why what I am doing 
isn't working.  This comes up no matter what I choose from the combo box.  
any suggestions?

"Jeanette Cunningham" wrote:

> 1. " I changed the field name of the combo box to Status - it seemed that
> the former name may have been causing problems because I had a "/" in the
> field name."
> 
> Field names are best with just letters of the alphabet from a - z and you 
> can use numbers from 0 - 9 in conjunction with letters of the alphabet.
> Special characters such as / and full stop and comma and quotes and most 
> other special characters have particular meanings in the internal parts of 
> access and cause problems if used in names for fields, queries, forms etc.
> 
> 2. Yes, the lookup field in the table will be causing the problem with the 
> combo.
> Instead of a lookup field, create a table for status.
> You can have 2 fields in the table, StatusID - autonumber and StatusName - a 
> text field.
> 
> Let's know how you get on.
> 
> 
> Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia
> 
> 
> "sg" <sg@discussions.microsoft.com> wrote in message 
> news:5D1695F6-DB9C-4D5D-85B8-D41F8548AC1D@microsoft.com...
> > Thanks for your quick reply, Jeanette.
> >
> > I am still having issues...
> >
> > Now my code in the after update property of the combo box is:
> >
> > Private Sub status_AfterUpdate()
> > Dim rs As DAO.Recordset
> >
> >    If Not IsNull(Me.Status) Then
> >        'Save before move.
> >        If Me.Dirty Then
> >            Me.Dirty = False
> >        End If
> >        'Search in the clone set.
> >        Set rs = Me.RecordsetClone
> >        rs.FindFirst "[PT ID] = " & Me.Status
> > If rs.NoMatch Then
> >            MsgBox "Not found: filtered?"
> >        Else
> >            'Display the found record in the form.
> >            Me.Bookmark = rs.Bookmark
> >        End If
> >        Set rs = Nothing
> >    End If
> > Me.[fail].Visible = (Me.[Status] = "Not acceptable")
> >
> > End Sub
> >
> > Note:  I changed the field name of the combo box to Status - it seemed 
> > that
> > the former name may have been causing problems because I had a "/" in the
> > field name.
> >
> > Anyway, when I change the status to "Unacceptable", I get the following 
> > error:
> >
> > Run-time error '3070':
> > The Microsoft Office Access database engine does not recognize 
> > 'Acceptable'
> > as a valid field name or expression.
> >
> > When I click on Debug, the following line of code is highlighted:
> >
> >        rs.FindFirst "[PT ID] = " & Me.Status
> >
> > I saw on the link you sent me that if the field is text you have to write
> > this line differently, but it is an autonumber field so I thought I was 
> > ok.
> >
> > The other thing that I'm wondering is whether my combo box is causing
> > problems.  This was actually set up as a lookup field in the underlying 
> > table
> > so I'm not sure if that is causing a problem.  We do need to store this 
> > data
> > in the table...do I need to create an actual combo box on the form?
> >
> > I don't know what the error I am getting means - I would appreciate your
> > feedback!
> >
> > "Jeanette Cunningham" wrote:
> >
> >> Here is a link to the code needed on the after update of the combo box
> >> http://allenbrowne.com/ser-03.html
> >>
> >> before you put the line
> >> Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
> >>
> >> Jeanette Cunningham MS Access MVP -- Melbourne Victoria Australia
> >>
> >>
> >> "sg" <sg@discussions.microsoft.com> wrote in message
> >> news:F94A8390-F80B-4552-B398-9A2891E140CB@microsoft.com...
> >> >I have a main form named frm Item PT.  It has a subform that shows as a
> >> > datasheet.  The subform is named Fail.  On the main form, when a combo 
> >> > box
> >> > shows "Unnacceptable", I want to show the subform related to that 
> >> > record
> >> > to
> >> > enter information about why it is unacceptable.  The forms are linked
> >> > together using the PT ID field.
> >> >
> >> > Right now I have the following code:
> >> >
> >> > Me.[fail].Visible = (Me.[accept/not accept] = "Not acceptable")
> >> > in the after update event
> >> >
> >> > Although it doesn't show the subform like I would like it to (as if I 
> >> > had
> >> > clicked on the plus sign to show the subform), it does open the subform 
> >> > so
> >> > I
> >> > can enter a new record.  The problem is when the form opens, it does 
> >> > not
> >> > inherit the main forms PT ID.  When I enter data into the subform that
> >> > opens,
> >> > it will not save the record.
> >> >
> >> > Two questions here:
> >> >
> >> > 1.  Is there a way to get it to really show the subform in the same 
> >> > window
> >> > as the main form (as if I clicked on the plus sign)
> >> >
> >> > 2.  If I have to open it as a separate form, how do I get it to pull 
> >> > the
> >> > PT
> >> > ID in so I can enter a new record?
> >> >
> >> > Thanks in advance for any help!
> >>
> >>
> >> .
> >> 
> 
> 
> .
> 
0
Reply Utf 4/20/2010 1:51:01 AM

5 Replies
177 Views

(page loaded in 0.208 seconds)


Reply: