Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsFormsForms ProgrammingQueriesModules / DAO / VBAReports / PrintingMacrosDatabase DesignSecurityConversionImporting / LinkingSQL Server / ADPMultiuser / NetworkingReplicationSetup / ConfigurationDeveloper ToolkitsActiveX ControlsNew UsersGeneral 1General 2
Access DirectoryToolsTutorialsUser Groups
Related Topics
SQL ServerOther DB ProductsMS OfficeMore Topics ...

MS Access Forum / Database Design / August 2004

Tip: Looking for answers? Try searching our database.

How to phrase If/Then clauses in the control source field

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
- 11 Aug 2004 04:15 GMT
Hello,
      This is a continuation of an earlier thread about
Parsing strings from one field into many. I making a
database,that contains five fields of overlap and to make
the data entry easier I am trying to automate some of it.
I have a code field, and then four other fields whose
information can be derived from the code ((codelooks like
this: 01MP, and has four parts. The first number refers
to the year 2000, the second number refers the season of
the year (spring), the third to type of media (a
magazine), and the fourth the genre (politics).)) Anyway,
my problem lies in the fact that the code only has one
digit for the year, and the time span is from 1996 to
present. so how could one phrase an expression that
essentially says: if the first digit of the code string
is >=6 but <=9, add the value to 1990, and if the value
is >=0 but <=5 add it to 2000 (a short term solution; the
code thing will eventually be revised). Thanks for any
help or info you can provide!
tina - 11 Aug 2004 04:31 GMT
Dim intYear As Integer
intYear = Left(CodeString, 1)
Select Case intYear
   Case 6 To 9
       FieldOrVariable = 1990 + intYear
   Case 0 To 5
       FieldOrVariable = 2000 + intYear
End Select

you'll have to tweak it to work in your specific circumstances, but that
should get you started.

hth
> Hello,
>        This is a continuation of an earlier thread about
[quoted text clipped - 15 lines]
> code thing will eventually be revised). Thanks for any
> help or info you can provide!
- 11 Aug 2004 07:17 GMT
I tried it but it gave me a syntax error message. Is
there a general if/then template?
>-----Original Message-----
>Dim intYear As Integer
[quoted text clipped - 32 lines]
>
>.
Ernie - 11 Aug 2004 07:28 GMT
What Tina posted belongs in VBA code. If you really prefer
to put this into your qbe pane then you would type
something like this:

NewYear: iif(left(codefield,1) = "0", 2000, iif(left
(codefield,1) = "1", 2001, iif( etc...

Note that "Year" is reserved in access, substitute
whatever field you want to store the year in where I
have "NewYear"

HTH
>-----Original Message-----
>I tried it but it gave me a syntax error message. Is
[quoted text clipped - 45 lines]
>>
>.
M.L. Sco Scofield - 11 Aug 2004 08:18 GMT
Well anonymous,

If you're going to be dabbling with these kinds of things, I highly
recommend getting some Access books and doing some studying.

I'd recommend getting "Beginning Access 2002 VBA" by Wrox. (The 2003 book is
not out yet.)

You've gotten some perfectly usable answers in both your first thread and
this thread. (BTW, please don't start a new thread for the same problem. You
should have posted to the first thread saying you didn't understand their
answer and ask for clarification.)

The problem with the answers you've gotten is that they are not complete.
They unfortunately assumed that you had a basic understand of Access and a
little VBA coding.

In one of your posts you ask for an If-Then "template." There is no such
thing. The "syntax" for an If-Then structure is very clearly explained in
the help file. If you need more than that, read the book I mentioned above.

There is no syntax error in the code that Tina posted. Any syntax errors you
are getting are from how you are trying to use the code. Which, BTW, you
never mentioned. To understand how to use the code Tina posted, (and the
code in the replies in the other thread,) you need to read the above book.

In the mean time, (and *not* a replacement for you getting and reading the
above book,) I'm going to make some guesses from the subject line of your
post.

1 - You want a finished solution, not some pointers.

2 - Tina missed the words "control source" in the subject line or maybe she
would have given you a "complete" solution.

3 - She was expecting you to replace "FieldOrVariable" and "CodeString" in
her code with *your* actual names.

Here is how Tina's code needs to be completed to work in a control source:

'~~~ Start Code ~~~
Public Function ReturnYear(CodeString)

 Dim intYear As Integer

 intYear = Left(CodeString, 1)

 Select Case intYear
   Case 6 To 9
     ReturnYear = 1990 + intYear
   Case 0 To 5
     ReturnYear = 2000 + intYear
 End Select

End Function

'~~~ End Code ~~~

1 - Copy and paste this code into the body of a standard code module (From
the database window, select Modules and click new.)

2 - Close the code window and save the code module as basMyFunctions.

3 - In the control source of your text box, put:

=ReturnYear([YourFieldName]))

And replace "YourFieldName" with *your* field name that has the code in it.

4 - Purchase "Beginning Access 2002 VBA"

5 - Read it.

Bottom line, as someone else mentioned, you shouldn't be messing with fields
that are combinations of separate information.

Separate information should be in *separate* fields.

Hitting the tab key during data entry is *not* that big a deal.

And it is *not* something you should program around for some kind of
perceived convenience.

Good luck.

BTW, did I mention you need to buy and read "Beginning Access 2002
VBA"???...

Sco

M.L. "Sco" Scofield, Microsoft Access MVP, MCSD, MCP, MSS, A+
Useful Metric Conversion #17 of 19: 1 billion billion picolos = 1 gigolo
Miscellaneous Access and VB "stuff" at www.ScoBiz.com
> I tried it but it gave me a syntax error message. Is
> there a general if/then template?
[quoted text clipped - 42 lines]
> >
> >.
tina - 11 Aug 2004 16:58 GMT
yes, Sco, i did miss the reference in the header. the post began by talking
about "Parsing strings from one field into many", so i assumed the poster
was working on code to break out data from a single table field into several
fields in another table (not *show* data in a form's calculated control).
and i assumed he pretty much knew how to break out the data, and was just
looking for a more elegant function to replace whatever he was already
using.
well, you know what they say about "assuming..."!  <g>
at any rate, your instructions were about as complete as could be asked for;
i'm glad you stepped in to help further.  :)

> Well anonymous,
>
[quoted text clipped - 136 lines]
> > >
> > >.
M.L. Sco Scofield - 12 Aug 2004 06:37 GMT
Thanks for the kind words Tina.

One of my biggest problems is still reading both the subject and body *and*
connecting them. I frequently read what I want to. And you know where that
goes...

Keep up the good work.

Sco

M.L. "Sco" Scofield, Microsoft Access MVP, MCSD, MCP, MSS, A+
Useful Metric Conversion #17 of 19: 1 billion billion picolos = 1 gigolo
Miscellaneous Access and VB "stuff" at www.ScoBiz.com

> yes, Sco, i did miss the reference in the header. the post began by talking
> about "Parsing strings from one field into many", so i assumed the poster
[quoted text clipped - 154 lines]
> > > >
> > > >.
tina - 11 Aug 2004 16:50 GMT
hon, you don't give nearly enough specific information for someone to
provide you with a specific solution. even now, you said you got an error
message, but didn't provide specific details.
assuming that Sco's assumptions about your specifics are correct (and since
he obviously read the previous thread and i didn't), he gave you very
specific and correct instructions - and good advice. hopefully you'll find
both instructions and advice helpful. good luck.
> I tried it but it gave me a syntax error message. Is
> there a general if/then template?
[quoted text clipped - 42 lines]
> >
> >.
M.L. Sco Scofield - 12 Aug 2004 06:37 GMT
"Hon"??? :-)

Sco

M.L. "Sco" Scofield, Microsoft Access MVP, MCSD, MCP, MSS, A+
Useful Metric Conversion #17 of 19: 1 billion billion picolos = 1 gigolo
Miscellaneous Access and VB "stuff" at www.ScoBiz.com

> hon, you don't give nearly enough specific information for someone to
> provide you with a specific solution. even now, you said you got an error
[quoted text clipped - 50 lines]
> > >
> > >.
anonymous - 13 Aug 2004 06:03 GMT
Hello Sco and Tina,
              Thank you both for all your help! I'm
really sorry I didn't understand what you were saying the
first time around and ended up bothering the both of you
so much. I just began using Access last week, and I had't
learnt enough to utilize your advice. I apologize for all
the trouble and I will get "Beginning Access Book" you
recommended. Once again, I really appreciate all the help
you've given me and I'm sorry to have bothered you so
much!
M.L. Sco Scofield - 13 Aug 2004 08:43 GMT
anonymous,

1 - How about a name? Even if it's just a "newsgroup" name. It's hard to
tell all of the "anonymous"s apart.

2 - You didn't really say. Did you finally get it working?

3 - You weren't a "bother." Just an annoyance. :-)

To help us help you in the future:

1 - Try to use the right group. This was more of a code with a form problem.
The "microsoft.public.access.formscoding" group might have been a better
group than "tablesdesign."

2 - Be straight with your experience and what you need. It's OK to not know
things. It is not OK to hide it.

3 - Unless you've taken other database and programming classes, having just
started using Access a week ago, I suspect that you're not really ready to
be working with code.

4 - To be honest, this explains why you're breaking basic design rules with
your "combined" field in the first place.

5 - My recommendation on the book was based on a bad assumption. I
incorrectly assumed that because you were venturing into code, that you had
a *very* solid understanding of databases and Access. Based on only using
Access for a week, you should probably start with some more basic books.
Take a look at "Database Design for Mere Mortals" by Michael Hernandez and
"Microsoft Office Access 2003 Inside Out" by John Viescas. After you get a
solid Access foundation, then start looking into code.

Good luck anonymous.

Sco

M.L. "Sco" Scofield, Microsoft Access MVP, MCSD, MCP, MSS, A+
Useful Metric Conversion #17 of 19: 1 billion billion picolos = 1 gigolo
Miscellaneous Access and VB "stuff" at www.ScoBiz.com

> Hello Sco and Tina,
>                Thank you both for all your help! I'm
[quoted text clipped - 6 lines]
> you've given me and I'm sorry to have bothered you so
> much!
James - 14 Aug 2004 03:19 GMT
Hello,
     Thanks for the help once again. The code worked
well, and I was able to adapt it a little for the modules
of the other fields. Thanks for all the help and advice!
>-----Original Message-----
>anonymous,
[quoted text clipped - 50 lines]
>
>.
M.L. Sco Scofield - 14 Aug 2004 16:22 GMT
You're welcome James.

Sco

M.L. "Sco" Scofield, Microsoft Access MVP, MCSD, MCP, MSS, A+
Useful Metric Conversion #17 of 19: 1 billion billion picolos = 1 gigolo
Miscellaneous Access and VB "stuff" at www.ScoBiz.com

> Hello,
>       Thanks for the help once again. The code worked
[quoted text clipped - 77 lines]
> >
> >.
tina - 13 Aug 2004 10:31 GMT
no problem. come on back to the newsgroups whenever you have a question, and
just remember to try to give specific details about the circumstances -
you'll have a better chance of getting a useful answer the first time
around! there are a lot of really knowledgeable folks here, especially the
MVPs, who will be a great resource for you. good luck as you begin your
"learning Access" journey!  :)

> Hello Sco and Tina,
>                Thank you both for all your help! I'm
[quoted text clipped - 6 lines]
> you've given me and I'm sorry to have bothered you so
> much!
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.