well, of course, the problem wasn't Access - it recognized the Datasheet
view just fine. the problem was that i was having a stupid attack (not so
unusual for me!). the error in the loop was caused by the fact the the loop
goes through *all* the controls on the form, which includes the labels
attached to the textbox controls. and labels don't have a ColumnHidden
property, at any time. so let's try the following code instead, as
Dim ctl As Control, frm As Form, str As String
Select Case Me!frFunctionalArea
Case 1
str = "General"
Case 2
str = "SAC"
Case 3
str = "Permitting"
Case 4
str = "Pre-Con"
Case 5
str = "Construction"
Case 6
str = "Commission"
Case 7
str = Telco/MW"
Case Else
str = "show column"
End Select
Set frm = Me!SubformControlName.Form
For Each ctl In frm.Controls
If Not TypeOf ctl Is Label Then ctl.ColumnHidden = (ctl.Tag = str)
Next
again, replace SubformControlName with the correct name of the subform
control within the mainform, as i explained earlier in the thread. the code
skips labels, so that takes care of the error we both experienced.
also, note that instead of setting the ColumnHidden property explicitly to
True, i used "toggle" code to hide/show each column as appropriate. this is
an important difference from your posted code - even if ctrl.Visble had been
a valid property reference in Datasheet view, your code would have hidden
controls *but would not have UNhidden them where appropriate*. when working
with properties that change conditionally, remember that you not only want
to change a property when a certain condition is met, you also usually want
to set the property *back* to its' "default" setting when the condition
isn't met.
hth
tina said:
hmm, yeah, me too. i'd never tried this before, so i'm surprised to see that
apparently Access doesn't recognize that the subform is in Datasheet view.
both ColumnHidden and ColumnWidth properties are specific to form Datasheet
view - they're not valid in SingleForm view or ContinuousForms view. let me
play with this a bit, and see if i can come up with a solution. i'll post
back today.
Ayo said:
Now I am getting "Object doesn't support this property or method" error
:
well, first of all, make sure you're using the right reference for the
subform. you need the name of the *subform control within the
mainform*.
to
get that, open the mainform in Design view. within Design view, click *once*
on the subform, to select it. in the Properties box, click on the
Other
tab
and look at the Name property. that's the name of the subform control. then
try the following, as
Dim ctl As Control frm As Form
Set frm = Me!SubformControlName.Form
For Each ctl In frm.Controls
ctl.ColumnHidden = (ctl.Tag = "General")
Next
replace SubformControlName with the correct name that you got from the
exercise in the previous paragraph, of course.
hth
I just tried it using:
For Each ctrl In Me.tblMilestones_subform.Form.Controls
If ctrl.Tag = "General" Then
Me.tblMilestones_subform.Form.Controls(ctrl.Name).ColumnWidth
= 0
End If
Next
It didn't work for me. The code ran with out any problem except the
columns
are still in the sibform.
:
Well,
You can obviously drag the margins of the column in the subform,
but
to
do it
via code you are going to have to do something like the following. When
I
opened a datasheet as the form, I was able to go to the immediate window
and
type:
forms("frm_Datasheet").Controls("txt_Field1").columnwidth = 0
and it hid the column.
When I put the datasheet in a form as a subform, and gave the subform
control
the name "sub_datasheet" I was able to hide the column with the
following:
forms("frm_Datasheet_Parent").sub_Datasheet.controls("txt_Field1").
ColumnWidth = 0
To make it visible again, give the ColumnWidth property a value in twips
(inches * 1440)
HTH
Dale
Ayo wrote:
Yes it is.
Is this subform a DataSheet?
[quoted text clipped - 3 lines]
Any ideas.
Thanks