Change field format programmatically

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hi,

I have a table of items - where the item number display format is different
for based on item type.
e.g item type vertical item number ver-123 a b cc dd
item type piping itme number ver-4567890 a dd


Is ther a way I can alter the format so that when the record is dispayed it
display's the item number in the appropriate way?

Thanks
wAyne
 
wAyne said:
I have a table of items - where the item number display format is different
for based on item type.
e.g item type vertical item number ver-123 a b cc dd
item type piping itme number ver-4567890 a dd


Is ther a way I can alter the format so that when the record is dispayed it
display's the item number in the appropriate way?


If the form is displayed in Single View (not datasheet or
continuous), then you can use the form's Current event to
set the item number text box's Format property as needed.
Then general idea is something like:

Select Case Me.ItemType
Case "vertical"
Me.txtItemNumber.Format = "@@@@@@ @ @ @@ @@"
Case "piping"
Me.txtItemNumber.Format = "@@@@@@@@@@@ @ @@"
Case
. . .
 
Hi Marshall,

yeah, I thought of this -- but it is a continuous form -- is there asyway
to do this for continuous forms?

wAyne
 
In this case, things get kind of tricky.

Create a function in the form's module to format the value:

Private Function MyFormat(num, typ) As Variant
Select Case typ
Case "vertical"
MyFormat = Format(num, "@@@@@@ @ @ @@ @@")
Case "piping"
MyFormat = Format(num, "@@@@@@@@@@@ @ @@"
. . .
End Select
End Function

Create an text box to display the formatted value. Set its
control source expression to :
=MyFormat([item number], [item type])
and use its GotFocus event to immediately (re)set the focus
to the item number text box so the value can be edited.

Finally, size and position the display text box exactly on
top of the item number text box.
 
Thanks Marsh,

Worked great ...

I di dmake one change -- instead of using a case statemtn - I placed the
formats in with the unit type table and used those -- allows for more
flexibility -- and right now they keep changing there minds on fomrats and
adding new types.

wAyne_

Marshall Barton said:
In this case, things get kind of tricky.

Create a function in the form's module to format the value:

Private Function MyFormat(num, typ) As Variant
Select Case typ
Case "vertical"
MyFormat = Format(num, "@@@@@@ @ @ @@ @@")
Case "piping"
MyFormat = Format(num, "@@@@@@@@@@@ @ @@"
. . .
End Select
End Function

Create an text box to display the formatted value. Set its
control source expression to :
=MyFormat([item number], [item type])
and use its GotFocus event to immediately (re)set the focus
to the item number text box so the value can be edited.

Finally, size and position the display text box exactly on
top of the item number text box.
--
Marsh
MVP [MS Access]

yeah, I thought of this -- but it is a continuous form -- is there asyway
to do this for continuous forms?
 
Good generalization. Any time you can put stuff in a table
(where users can edit via a form) instead of code (where you
have to program and distribute the changes), you are way,
way better off. Just make sure the function's logic guards
against all kinds of user mistakes ;-)
--
Marsh
MVP [MS Access]


Worked great ...

I di dmake one change -- instead of using a case statemtn - I placed the
formats in with the unit type table and used those -- allows for more
flexibility -- and right now they keep changing there minds on fomrats and
adding new types.


Marshall Barton said:
In this case, things get kind of tricky.

Create a function in the form's module to format the value:

Private Function MyFormat(num, typ) As Variant
Select Case typ
Case "vertical"
MyFormat = Format(num, "@@@@@@ @ @ @@ @@")
Case "piping"
MyFormat = Format(num, "@@@@@@@@@@@ @ @@"
. . .
End Select
End Function

Create an text box to display the formatted value. Set its
control source expression to :
=MyFormat([item number], [item type])
and use its GotFocus event to immediately (re)set the focus
to the item number text box so the value can be edited.

Finally, size and position the display text box exactly on
top of the item number text box.

yeah, I thought of this -- but it is a continuous form -- is there asyway
to do this for continuous forms?


wAyne wrote:
I have a table of items - where the item number display format is different
for based on item type.
e.g item type vertical item number ver-123 a b cc dd
item type piping itme number ver-4567890 a dd


Is ther a way I can alter the format so that when the record is dispayed it
display's the item number in the appropriate way?


:
If the form is displayed in Single View (not datasheet or
continuous), then you can use the form's Current event to
set the item number text box's Format property as needed.
Then general idea is something like:

Select Case Me.ItemType
Case "vertical"
Me.txtItemNumber.Format = "@@@@@@ @ @ @@ @@"
Case "piping"
Me.txtItemNumber.Format = "@@@@@@@@@@@ @ @@"
Case
. . .
 
hi wayne,

i'm having the same prob too. i tried the case statement as marsh suggested.
it works well half way thru. but when i add new record the format gets
defaulted to "@@@@@@-@@-@@@@".

here's what i'm using:

Private Sub Form_Current()
Select Case Me.cboIdType
Case "IC"
Me.txtPtID.Format = "@@@@@@-@@-@@@@"
Case "BC"
Me.txtPtID.Format = "@@ @@@@@@"
End Select
End Sub

appreciate ur help.
tq


wAyne said:
Thanks Marsh,

Worked great ...

I di dmake one change -- instead of using a case statemtn - I placed the
formats in with the unit type table and used those -- allows for more
flexibility -- and right now they keep changing there minds on fomrats and
adding new types.

wAyne_

Marshall Barton said:
In this case, things get kind of tricky.

Create a function in the form's module to format the value:

Private Function MyFormat(num, typ) As Variant
Select Case typ
Case "vertical"
MyFormat = Format(num, "@@@@@@ @ @ @@ @@")
Case "piping"
MyFormat = Format(num, "@@@@@@@@@@@ @ @@"
. . .
End Select
End Function

Create an text box to display the formatted value. Set its
control source expression to :
=MyFormat([item number], [item type])
and use its GotFocus event to immediately (re)set the focus
to the item number text box so the value can be edited.

Finally, size and position the display text box exactly on
top of the item number text box.
--
Marsh
MVP [MS Access]

yeah, I thought of this -- but it is a continuous form -- is there asyway
to do this for continuous forms?


wAyne wrote:
I have a table of items - where the item number display format is different
for based on item type.
e.g item type vertical item number ver-123 a b cc dd
item type piping itme number ver-4567890 a dd


Is ther a way I can alter the format so that when the record is dispayed it
display's the item number in the appropriate way?


:
If the form is displayed in Single View (not datasheet or
continuous), then you can use the form's Current event to
set the item number text box's Format property as needed.
Then general idea is something like:

Select Case Me.ItemType
Case "vertical"
Me.txtItemNumber.Format = "@@@@@@ @ @ @@ @@"
Case "piping"
Me.txtItemNumber.Format = "@@@@@@@@@@@ @ @@"
Case
. . .
 
Back
Top