Category : Databases and related files
Archive   : A4HELP.ZIP
Filename : A4HELP.DBT

 
Output of file : A4HELP.DBT contained in archive : A4HELP.ZIP
@"¦Ä~’:£XKÒÄ~zÄ~¤:
XK
Ä~ÒÄ~®:‰GÒÄ~À:»8ÚÄ~îÄ~ÚÄ~=$gÚÄ~ä>F|;|;vF;‘XK€F€–;Æ;š;á€Æ;²;—XKø´;XKøFîÒÄ~Æ;ÄXK
FHlE@ì;Ä~Fúȉ3JFµqì;ÊFø;ß_/IF
XK

Fpp&<‰G
F0 through prompts in an application (ie pass %A to the filter in a
date format). This comes in handy for printing reports before a certain
date on a certain date, after a certain date or between certain dates.
In your application create a menu item called set date filter.
Then type the following in the macro keys section:

{Prompt, "input a date in MM-DD-YYYY format", %A, 10}ir{ENTER}{ENTER}
{ENTER}{ENTER}{ENTER} {ENTER}date=ctod("{%A}"){ENTER}A{F10}{F10}

This will set the filter to what ever the user types in at the
prompt{%A}. This equation will set a filter in the range to look for
any date equal to that date put in at the prompt. This is useful if
you are only looking for one date in particular, but most of us want to
see a larger range of dates. Let's say we want to be able to set a
beginning date and an ending date through prompts in the application.
The macro key's would look like this:

{Prompt, "input a starting date in MM-DD-YYYY format", %A,10}
{Prompt, "input an ending date in MM-DD-YYYY format", %B,10}
ir{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}
date>=ctod("{%A}").and.date<=ctod("{%B}"){ENTER}A{F10}{F10}

This macro will find any date greater than or equal to what is placed in
prompt A and less than or equal to any value placed in prompt B.

*Note an additional v{ESC} may be needed at the end of the macro to
return it to the applications macro since the changing of a range
through index at the main menu will leave you at the main menu on
completion and not at the application main menu.

{Prompt, "input a starting date in MM-DD-YYYY format", %A,10}
{Prompt, "input an ending date in MM-DD-YYYY format", %B,10}
ir{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}
date>=ctod("{%A}").and.date<=ctod("{%B}"){ENTER}A{F10}{F10}v{ESC}

þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ In order to have an application come up with the choose database 
selection as opposed to the default database, you should leave the 
start-up database section blank and put a C in the start-up macro 
section of that application. If you want the application to default to 
a specific sub-directory then you should put your drive path after the C 
in the start-up macro section. It would look something like this:
Start-up Macro: CC:\ALPHA4\DATA\.
The reason we put the default sub-directory in the macro as 
opposed to the start-up database section is because it won't allow a 
start-up database to be defined without the DBF or SET extension.to look for
any date equal to that date put in at the prompt. This is useful if
you are only looking for one date in particular, but most of us want to
see a larger range of dates. Let's say we want to be able to set a
beginning date and an ending date through prompts in the application.
The macro key's would look like this:

{Prompt, "input Let's say we have a database called FRED.DBF and we have a 
duplicate database named BARNEY.DBF. In FRED.DBF we have an input form 
identified by the letter A. In DOS the file name created by that input 
form is FRED.I4A. If we want to use that same input form in BARNEY.DBF 
there is no utility in Alpha4 to copy input forms from one database to 
another, however it can be done through DOS.
Here's what you do:
1. Determine the letter of the form you want to copy from FRED to 
BARNEY. Let`s say it is form C.
2. Go into your second database, BARNEY, and find a letter that is not 
being used in that database. Let's say D is not used.
3. Go into the data sub-directory with your Alpha4 databases in it.
4. Type in COPY FRED.I4C BARNEY.I4D
5. Go into BARNEY.DBF and make sure that the new form D works.
6. You are done.
****WARNING****
Before using this procedure make sure that the letter you are copying to 
does not exist in your second database(ie BARNEY.I4D). This would copy 
over any existing form in the secondary database using that letter.MM-DD-YYYY format", %B,10}
ir{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}
date>=ctod("{%A}").and.date<=ctod("{%B}"){ENTER}A{F10}{F10}

This macro will find any date greater than or equal to what is placed in
prompt A and less than or equal to any value placed in prompt B.

*Note an additional v{ESC} may be needed at the end of the macro to
return it to the applications macro since the changing of a range
through indeQ. When I convert my Alpha/three databases to Alpha FOUR they do not 
get moved to any of the new Alpha FOUR sub-directories. They're still on 
the old subdirectory. Why is this?

A. Alpha/three and Alpha FOUR use the exact same file format for data 
storage (.DBF) and indexing (.NDX). You can use these files directly in 
Alpha FOUR so only the support files (e.g. forms, field rules, reports) 
get converted. Since the database and index files need no conversion, 
the Alpha/three to Alpha FOUR conversion leaves the database, the index 
and all the newly converted support files on the same subdirectory.

If you would like to use the database directly from the old subdirectory 
just CHOOSE it from the main (see page 8-1 in the Alpha FOUR Reference 
manual). Alpha FOUR will always default to the last used database. If 
you would like to copy the database and all the converted support files 
to another (C:\A4\Data?) subdirectory you can use the DOS copy command; 
for example: COPY C:\ALPHA3\DATA\DATABASE.* C:\ALPHA4\DATA. Remember to 
also copy the appropriate index (.NDX) files. See page A-17 in the Alpha 
FOUR manual for a list of the new Alpha FOUR file extensions.ŒCq ü$ÀJDRIVE BINê5h ÿ$êJPAGER BINDDV %¹ JSPOOL BINՔ1
%gKW BAT¨‹w%3KWV BAT±‹w%!LOGON BAT!?¾6%TMAKEBAT EXEQŒ
7%£@MARK COM!nÂ@%ÓNET3 COMŽ~A%ö¡NETBIOS COMÄQôV%ëOne of the major enhancements in Alpha FOUR is the ability to 
pre-process fields in your reports. Total, average, first, last, count 
etc can now be pre-processed before the report starts printing so you 
can use these results in expressions or print them anywhere on your 
report.
In the example below the SYSTEM->PAGENUMBER field will print the current 
page number and the summary field PAGE_COUNT will print the total number 
of pages in the report.

Here's how to print the current and the total page count on each page of 
the report, using the format "Page 1 of 10":
1- In the Report Layout screen, type "Page " in the Page Header section, 
making sure to leave about 15 spaces before the right margin.
2- Place the SYSTEM->PAGENUMBER field after "Page ":
a) Press Alt-F to select a field.
b) When the Databases box pops up, select the SYSTEM database.
c) When the Fields box appears with the system fields, select PAGENUMBER.
d) When the Types box pops up, select "Value".

3- Position the cursor within the SYSTEM->PAGENUMBER field marker (the 
heavy dashed lines), and use the MINUS key to decrease the field marker 
to two places.
4- Type " of " after the field marker.
5- Press Alt-U to access the Summary Fields definition screen.
6- Enter the following options for the summary field:
Name: PAGE_COUNT
Summarize: SYSTEM->PAGENUMBER
Type: Last
Level: Grand
Ignore: None
Mode: Pre-processed
NOTE: Make sure to use the "Last" summary option, which prints the last 
value of the field being summarized (i.e., the last page number). Using 
either the "Total" or the "Count" summary options will not print the 
correct page total.

7- Press F10 (Continue) to save the new summary field.
8- Place the SUMMARY->PAGE_COUNT field after the "of ":
a) Press Alt-F to select a field.
b) When the Databases box pops up, select the SUMMARY database.
c) When the Fields box appears with the system fields, select PAGE_COUNT.
d) When the Types box pops up, select "Value".
9- Position the cursor within the field marker, and use the MINUS key to 
decrease the field marker to two places.
 Enter the following options for the summary field:

Summarize: SYSTEM->PAGENUMBER
Type: Last
Level: Grand
Ignore: None
Mode: Pre-processed

7- Press F10 (Continue) to save the new summary field.

8- Plac>PAGENUMBER field after "Page":
a) Press Alt-F to select a field.
b) When the Databases box pops up, select the SYSTEM database.
c) When the Making "IF" Statements Work for You

Q: I know that "IF" statements could make my database do a lot more for 
me, but they confuse me. Any hints?

A: Conditional logic (the "IF" statement) can be a powerful and 
versatile tool in your Alpha FOUR database.
A few hints about the structure of these expressions should help you 
understand them better:

1) "IF" expressions are always in the format: IF(L,A,B)
L is a logical expression that evaluates to either True
or False
IF(STATE="MA",...) -or- IF(VALUE=225,...)
A is what to do if L evaluates to True
B is what to do if L evaluates to False

If you know BASIC, the first comma acts like a THEN statement and the 
second comma acts like an ELSE statement.

2) Both A and B must result in the same data type (e.g., if A will 
result in a character string, then B must also result in a character 
string). A and B must also match the data type of the field they will 
be stored in.
For example:
IF(STATE="MA","IN STATE","OUT OF STATE") is Correct
IF(STATE="MA","IN STATE",VALUE*.05) is Not Correct

"IN STATE" and VALUE*.05 are mis-matched data types.
"IN STATE" will return a character string, while VALUE*.05 will return 
a number.
If you are unsure about the type of a particular field, press the 
"Fieldnames" function key to display a list of the fields, and check the 
letter in parentheses following the field name; (C)=character, (D)=Date, 
etc... . In Alpha FOUR, to find the field type press F2 from the main 
menu.

3) More syntax rules:
Character strings are always in quotes:
IF(NAME="JONES",...
Numeric values are never in quotes:
IF(TOTAL=1000,..
Logical fields never use an operand (i.e. "=","<<" or ">>").
This is because the "=", "<<"or ">>" is understood by
simply stating the fieldname:

IF(LOGICAL="Y",A,B) is Not Correct
IF(LOGICAL,A,B) is Correct
IF(LOGICAL="N",A,B) is Not Correct
IF(.NOT.LOGICAL,A,B) is Correct

4) If you are still getting an error message:
-Make sure the fieldnames are spelled correctly (re-insert them with the 
"FIELDS" function key).
-Make sure you have one closed parenthesis for each open parenthesis and 
make sure they are positioned correctly.

e example we used here you could only consider two possibilities: either STATE is "MA" or STATE is not "MA." What if you also want to check whether STATE is "NH", "RI", "CT", "VT", or "ME"?
In the next isNESTED "IF" Statements

In the last record we discussed the basics of writing "IF" expressions.

We used the example expression:
IF(STATE="MA","IN STATE","OUT OF STATE")
Here you could only consider two possibilities: either STATE is "MA" or 
STATE is not "MA". What if you also want to check whether STATE is "NH", 
"RI", "CT", "VT", or "ME"?

The conditional can account for these choices if you insert, or "nest" 
one IF statement directly into the True (A) or False (B) part of another 
IF statement:
Remember "IF" expressions are always in the format: IF(L,A,B)
L is a logical expression that evaluates to either True
or False
IF(STATE="MA",...) -or- IF(VALUE=225,...)
A is what to do if L evaluates to True
B is what to do if L evaluates to False
When you Nest "IF" Statements you replace a single response, A and/or B, 
with a choice. You do this by inserting another "IF" Statement in place 
of A and/or B. This causes Alpha/three to check another logical 
expression (L) before deciding what to print:

IF(L,IF(nestedL,nestedA,nestedB),B)

Here A has been replaced with another "IF" Statement. If L is true 
Alpha/three checks the nested "IF" to see if nestedL is also true. If so 
it gives us nested A, if not it gives us nestedB. If L had evaluated to 
false Alpha/three would have avoided the nested "IF" and given us B.

The above example shows one level of nesting with the nested "IF" 
replacing the true (A) action. Below is an example of multiple levels of 
nesting with the nested "IF" in each replacing the false (B) action.

Line 1: IF(STATE="MA","MASSACHUSETTS",
Line 2: IF(STATE="NH","NEW HAMPSHIRE",
Line 3: IF(STATE="RI","RHODE ISLAND",
Line 4: IF(STATE="CT","CONNECTICUT",
Line 5: IF(STATE="ME","MAINE","VERMONT")))))

NOTE: This above has been broken into separate lines for clarity. 
In your actual expression, each subsequent "IF" should immediately 
follow the comma preceding it to create one long expression.

In Line 1, the program determines whether STATE is "MA"; if so, it will 
print "MASSACHUSETTS" (the True (A) value). If STATE is not "MA", the 
program will go on to the False statement (shown here in Line 2), where 
another (nested) IF statement checks whether STATE is "NH", etc....

Lines 2,3,4,and 5 are the (nested) false values for the "IF" statement 
just above them.

In Line 5, the expression is completed with one last true value, 
"MAINE", and the one false value for the entire conditional, "VERMONT". 
What we've said here is: if STATE is not any of the values already 
listed, print "VERMONT". We then end with five closed parentheses, one 
for each open parenthesis.

As long as an "IF" statement is written correctly and could stand on its 
own, it can be inserted to replace the True (A) or False (B) value of 
another "IF" statement. Up to 10 levels of nesting are allowed. Make 
sure that all of your true values and all of your false values will 
result in the same data type (character, date, numeric, etc...). ëc3ÀP¸ÿP‹v„zýPš.K‹v„{ýPšqíëR‹v‹„zý2ä‰Füƒ~ü|+ÇFþ‹v´zývþÿ4‹v‹„zþPš©í‹Fþ@‰FþH;FüuÚëƒûw¼ƒër·Ñã.ÿ§š&‹å]ÂU‹ììÿv¸ÿP‹v„zýPš.K‹å]ÂU‹ìì ÆFþÆFö‹v‹D
‹~;Eò|;‹}òO‹vtÄ&‹ˆFô‹vÿDòÿvôš]KÑèsÿvô¸PFöPš.Këë뷀~öv ¸PFöPÿv3ÀP¸ÿÿPš7ÑèsÆFþ‹Fþ‹å]ÂU‹ììÇFìÇFò‹F
;Fò}頋vòNÄ^&‹ˆFðÿFò¡æ:FðuÇFìë֋^ìëdÿvðÿvèÿënÇFìFîPUè!ÿÑèsD‹^ð2ÿë‹Fî2äPÿvèèþë/ÿvîšfë%ë#ƒû+wùƒë#Quicker than Packing

Q: Is there a quicker way to permanently remove marked records without 
going through Pack?

A: When you want to permanently remove marked records in Alpha FOUR, 
"Packing" the database may not be the best method. When you pack the 
database, the program rewrites the entire database file each time a 
deleted record is removed; this can take time. Instead, you can use the 
"Copy" command to copy only the not-deleted (unmarked) records to a new 
database, .
The Copy command does not update the indexes, so when the copy is 
complete you should immediately select (attach) all your indexes to the 
new copy and update (rebuild) them. Remember to deselect (detach) these 
indexes from the original database before deleting it.

d, you can use ALPHA/three's "Copy" utility to copy ONLY the not-deleted records.
The copy utility does NOT update the indexes, so when the copy is complete you should immediately select the indexes and update them yourself. Searching for Blank Character Fields

Q: Is there a simple way to search for blank character fields in my 
database? How about non-blank character fields?

A: Blank character fields can be located using the expression: 
FIELDNAME<"!". The Exclamation point has the lowest ASCII value of any 
of the keyboard characters except the space, therefore a character field 
with anything in it at all will be greater than, or equal to, the 
exclamation point.
Using the opposite expression, FIELDNAME>="!" will locate only the 
records where FIELDNAME is not blank.
where FIELDNAME is not blank.
NWSLTRDBDBF β-
ÐNLCOMPNYDOC ãB•Š-!NLCREDITDOC "„•þ-yNLFUNNY1DOC !G˜¥-V NLINTRO DOC jEŠ¶!îNLPRODUCDOC 47Šš )NLRICH49DOC ,•ý-ãNLTECH DOC ‘²gðNWSLET2 NDX !d"NWSLTPRGNDX –ˆŽã#NWSLTPRTEDT [K†H NWSLTRDBDBC ‹|šØåWSLTRDBDBF ¬²Ô#¤Q If I use the system date in my Alpha FOUR letters it gives me a "th" 
or "rd" next to my day, for example: Sep 15th, 1989. Are there any other 
ways to format the current date?

A Below is a list of the date formats available in Alpha FOUR letters. 
When you insert !d1 - !d8 into your letters Alpha FOUR strips the 
command and replaces it with the corresponding date format. For the date 
September 15, 1989 the date options are:

Command Format Result
!D1 DD-MM-YYYY 15-09-1989
!D2 DD MONTH YYYY 5 Sep 1989
!D3 MONTH DD, YYYY Sep 15, 1989
!D4 MM-YY 09-89
!D5 MM-DD-YY 09-15-89
!D6 DD-MM-YY 15-09-89
!D7 MONTH DDxx, YYYY Sep 15th, 1989
!D8 DD-MONTH-YY 15-Sep-89

Using a lower case "d" will move any text following the command three 
spaces to the left.
This... Balance due on: !d7.
Will print like this... Balance due on: Sep 15th, 1989.

Using an upper case "D" will replace the command with three spaces 
leaving the date at the position after the number. This is mostly used 
to maintain columns.
This... Balance due on !D7
Will print like this... Balance due on Sep 15th, 1989
ÿÿˆ‰Š‹ÿÿÿÿÿÿÿÿ‘’“”•–—˜™š›œžŸ ÿÿ¢£¤¥¦§¨©ª«¬­®¯°ÿÿ²³´ÿÿ¶·¸¹ÿÿ»¼ÿÿ¾¿ÀÁÿÿÃÄÅÆÿÿÈÉÊËÿÿÍÎÏÐÿÿÒÓÔÕÖÿÿØÙÚÿÿÜÝÞßàÿÿâãäÿÿæçèéêÿÿÿÿÿÿÿÿÿÿÿÿÿÿòóôõö÷øùúûüýþÿQ I'm using Alpha FOUR and I sometimes get "?" (question marks) in my 
reports where calculated numeric values should print. Alpha/three would 
occasionally display the error message "Illegal Argument". Why?

A When Alpha FOUR prints "?" or Alpha/three tells you "Illegal 
Argument" the program is indicating it can't calculate the expression 
correctly with the current values in the fields. Most often this is due 
to a division by zero.

When a calculated expression divides one numeric field (the numerator) 
by another (the denominator) it will try to divide by zero if the 
denominator field is zero or blank. This is mathematically incorrect.

To get the program to display "0" whenever the numerator field is zero 
or blank, replace the division expression you are currently using with 
the following expression (FIELD1 is the numerator field, FIELD2 is the 
denominator field):

Replace this: FIELD1/FIELD2
With this: IF(FIELD2=0,0,FIELD1/IF(FIELD2=0,1,FIELD2))

This will also appear during data entry if you haven't yet entered 
anything into the denominator field. Check the FIELD RULES or calculated 
fields section of your form for division expressions and replace them 
with the expression above. This will cause the calculation to display 
"0" until the denominator is entered.king "IF" Statements Work for You *AW/A3/A4 88Equation Nesting "Ifs" Q&A (continued) "IF" equations (nesting) This database is a compilation of the helpful hints for alpha4 created 
by the Alpha Software Technical Support department. In order to read 
some of these helpful hints, you must go into change under view on the 
record you would like to see. A good example of a file that you need to 
edit in order to see the full file is record 10 of this database.
A4HELP.DBF's was designed by Jim Little with the input of, but not 
limited to, Bob Keddy and Francie Peake. Please distribute this freely 
among any other Alpha4 users you may know. This file will be 
periodically updated to include more helpful hints. -Jim.s is mathematically incorrect.

To get the program to display "0" whenever the numerator field is zero 
or blank, replace the division expression you are currently using with 
the following expression (FIELD1 is the numerator field, FIELD2 is the 
denominator field):

Replace this: FIELD1/FIELD2
With this: IF(FIELD2=0,0,FIELD1/IF(FIELD2=0,1,FIELD2))

This will also appear durLet us assume the following database setup, where U/C stands for User 
entered or Calculated in the field rules:

Field Type U/C
PRODUCT C U
VENDOR1 C U
AMOUNT1 N U
VENDOR2 C U
AMOUNT2 N U
VENDOR3 C U
AMOUNT3 N U
VENDOR4 C U
AMOUNT4 N U
VENDOR5 C U
AMOUNT5 N U
LOWTEST N C
LOWVEND C C

A sample of data entered into these fields would be

PRODUCT: Widgets

VENDOR1: Poctor and Bumble AMOUNT1: 345
VENDOR2: Little and Littler AMOUNT2: 315
VENDOR3: Krueger Enterprises AMOUNT3: 388
VENDOR4: Keddy Krafts AMOUNT4: 333
VENDOR5: Skin and Fleecem AMOUNT5: 366



The equations entered into the field LOWTEST would look like this:

MIN(MIN(MIN(AMOUNT1,AMOUNT2),MIN(AMOUNT3,AMOUNT4)),AMOUNT5)

The first thing this equation does is look at the MIN(AMOUNT1,AMOUNT2) 
and returns the minimum value of the two, 315. It then looks at 
MIN(AMOUNT3,AMOUNT4) and returns the minimum value of those two, 333. 
Then it looks at the MIN of the values found before 315,333 and returns 
the minimum of 315. Finally, it makes one last evaluation by comparing 
the minimum value of all the other evaluations, 315 with the value in 
AMOUNT5,366, and it returns the value 315.

Now that that value is in LOWTEST, the equation in LOWVEND can be shown 
and explained:

IF(LOWTEST=AMOUNT1,VENDOR1,IF(LOWTEST=AMOUNT2,VENDOR2,IF(LOWTEST=AMOUNT3
,VENDOR3,IF(LOWTEST=AMOUNT4,VENDOR4,IF(LOWTEST=AMOUNT5,VENDOR5," ")))))

This nested if statement will start with the first IF and compare the 
amount in LOWTEST(315) with the amount in AMOUNT1(345). IF the two are 
equal THEN(,)it will put the name of VENDOR1 in the LOWVEND field 
ELSE(,) it will go on to the next IF statement. In this case it goes 
onto the second IF statement and finds a true statement with 
LOWTEST=AMOUNT2 so then it puts the value in VENDOR2(Little and Littler) 
into the LOWVEND field.art-up Macro: CC:\ALPHA4\DATA\.
The reason we put the default sub-directoQ If I use the system date in my Alpha FOUR letters it gives me a "th" 
or "rd" next to my day, for example: Sep 15th, 1989. Are there any other 
ways to format the current date?

A Below is a list of the date formats available in Alpha FOUR letters. 
When you insert !d1 - !d8 into your letters Alpha FOUR strips the 
command and replaces it with the corresponding date format. For the date 
September 15, 1989 the date options are:

Command Format Result
! D1 DD-MM-YYYY 15-09-1989
! D2 DD MONTH YYYY 5 Sep 1989
! D3 MONTH DD, YYYY Sep 15, 1989
! D4 MM-YY 09-89
! D5 MM-DD-YY 09-15-89
! D6 DD-MM-YY 15-09-89
! D7 MONTH DDxx, YYYY Sep 15th, 1989
! D8 DD-MONTH-YY 15-Sep-89

Using a lower case "d" will move any text following the command three 
spaces to the left.
This... Balance due on: !d7.
Will print like this... Balance due on: Sep 15th, 1989.

Using an upper case "D" will replace the command with three spaces 
leaving the date at the position after the number. This is mostly used 
to maintain columns.
This... Balance due on !D7
Will print like this... Balance due on Sep 15th, 1989
ÿÿˆ‰Š‹ÿÿÿÿÿÿÿÿ‘’“”•–—˜™š›œžŸ ÿÿ¢£¤¥¦§¨©ª«¬­®¯°ÿÿ²³´ÿÿ¶·¸¹ÿÿ»¼ÿÿ¾¿ÀÁÿÿÃÄÅÆÿÿÈÉÊËÿÿÍÎÏÐÿÿÒÓÔÕÖÿÿØÙÚÿÿÜÝÞßàÿÿâãäÿÿæçèéêÿÿÿÿÿÿÿÿÿÿÿÿÿÿòóôõö÷øùúûüýþÿQ If I use the system date in my Alpha FOUR letters it gives me a "th" 
or "rd" next to my day, for example: Sep 15th, 1989. Are there any other 
ways to format the current date?

A Below is a list of the date formats available in Alpha FOUR letters. 
When you insert !d1 - !d8 into your letters Alpha FOUR strips the 
command and replaces it with the corresponding date format. For the date 
September 15, 1989 the date options are:

Command Format Result
!!D1D1 DD-MM-YYYY 15-09-1989
!!D2D2 DD MONTH YYYY 5 Sep 1989
!!D3D3 MONTH DD, YYYY Sep 15, 1989
!!D4D4 MM-YY 09-89
!!D5D5 MM-DD-YY 09-15-89
!!D6D6 DD-MM-YY 15-09-89
!!D7D7 MONTH DDxx, YYYY Sep 15th, 1989
!!D8D8 DD-MONTH-YY 15-Sep-89

Using a lower case "d" will move any text following the command three 
spaces to the left.
This... Balance due on: !d7.
Will print like this... Balance due on: Sep 15th, 1989.

Using an upper case "D" will replace the command with three spaces 
leaving the date at the position after the number. This is mostly used 
to maintain columns.
This... Balance due on !D7
Will print like this... Balance due on Sep 15th, 1989
ÿÿÿÿÿ‘’“”•–—˜™š›œžŸ ÿÿ¢£¤¥¦§¨©ª«¬­®¯°ÿÿ²³´ÿÿ¶·¸¹ÿÿ»¼ÿÿ¾¿ÀÁÿÿÃÄÅÆÿÿÈÉÊËÿÿÍÎÏÐÿÿÒÓÔÕÖÿÿØÙÚÿÿÜÝÞßàÿÿâãäÿÿæçèéêÿÿÿÿÿÿÿÿÿÿÿÿÿÿòóôõö÷øùúûüýþÿQ If I use the system date in my Alpha FOUR letters it gives me a "th" 
or "rd" next to my day, for example: Sep 15th, 1989. Are there any other 
ways to format the current date?

A Below is a list of the date formats available in Alpha FOUR letters. 
When you insert !d1 - !d8 into your letters Alpha FOUR strips the 
command and replaces it with the corresponding date format. For the date 
September 15, 1989 the date options are:

Command Format Result
!!d1D1 DD-MM-YYYY 15-09-1989
!!d2D2 DD MONTH YYYY 5 Sep 1989
!!d3D3 MONTH DD, YYYY Sep 15, 1989
!!d4D4 MM-YY 09-89
!!d5D5 MM-DD-YY 09-15-89
!!d6D6 DD-MM-YY 15-09-89
!!d7D7 MONTH DDxx, YYYY Sep 15th, 1989
!!d8D8 DD-MONTH-YY 15-Sep-89

Using a lower case "d" will move any text following the command three 
spaces to the left.
This... Balance due on: !d7.
Will print like this... Balance due on: Sep 15th, 1989.

Using an upper case "D" will replace the command with three spaces 
leaving the date at the position after the number. This is mostly used 
to maintain columns.
This... Balance due on !D7
Will print like this... Balance due on Sep 15th, 1989
ÿÿÿÿ‘’“”•–—˜™š›œžŸ ÿÿ¢£¤¥¦§¨©ª«¬­®¯°ÿÿ²³´ÿÿ¶·¸¹ÿÿ»¼ÿÿ¾¿ÀÁÿÿÃÄÅÆÿÿÈÉÊËÿÿÍÎÏÐÿÿÒÓÔÕÖÿÿØÙÚÿÿÜÝÞßàÿÿâãäÿÿæçèéêÿÿÿÿÿÿÿÿÿÿÿÿÿÿòóôõö÷øùúûüýþÿQ If I use the system date in my Alpha FOUR letters it gives me a "th" 
or "rd" next to my day, for example: Sep 15th, 1989. Are there any other 
ways to format the current date?

A Below is a list of the date formats available in Alpha FOUR letters. 
When you insert !d1 - !d8 into your letters Alpha FOUR strips the 
command and replaces it with the corresponding date format. For the date 
September 15, 1989 the date options are:

Command Format Result

* D1 DD-MM-YYYY 15-09-1989
D2 DD MONTH YYYY 5 Sep 1989
D3 MONTH DD, YYYY Sep 15, 1989
D4 MM-YY 09-89
D5 MM-DD-YY 09-15-89
D6 DD-MM-YY 15-09-89
D7 MONTH DDxx, YYYY Sep 15th, 1989
D8 DD-MONTH-YY 15-Sep-89

* Put ! before D#

Using a lower case "d" will move any text following the command three 
spaces to the left.
This... Balance due on: !d7.
Will print like this... Balance due on: Sep 15th, 1989.

Using an upper case "D" will replace the command with three spaces 
leaving the date at the position after the number. This is mostly used 
to maintain columns.
This... Balance due on !D7
Will print like this... Balance due on Sep 15th, 1989ÿÿ‘’“”•–—˜™š›œžŸ ÿÿ¢£¤¥¦§¨©ª«¬­®¯°ÿÿ²³´ÿÿ¶·¸¹ÿÿ»¼ÿÿ¾¿ÀÁÿÿÃÄÅÆÿÿÈÉÊËÿÿÍÎÏÐÿÿÒÓÔÕÖÿÿØÙÚÿÿÜÝÞßàÿÿâãäÿÿæçèéêÿÿÿÿÿÿÿÿÿÿÿÿÿÿòóôõö÷øùúûüýþÿ In order to find records that have something in their memo field you 
can run a table search that would look for any occurence of a vowel. 
The reasoning behind this is that not many, if any, memo fields will be 
without vowels. The Table Search would look like this:


Field Operator Look For And/Or

MemoName *A A Or
MemoName *A E Or
MemoName *A I Or
MemoName *A O Or
MemoName *A U

te equal to that date put in at the prompt. This is useful if
you are only looking for one date in particular, but most of us want to
see a larger range of dates. Let's say we want to be able to set a
beginning date and an ending date through prompts in the application.
The macro key's would look like this:

{Prompt, "inputLet us say we have one field called NAME that has values similar to:
Mr. Jim Little,
or Ms. Mary A. Trumpwart
and we want to break this down into three components:
TITLE FIRSTNAME LASTNAME.
First we must create three new fields through Database, Reconfigure. 
After we have accomplished this we will have to Globally update the new 
fields with their new values. We will do title first since it is the 
easiest. For simplicity,";" denotes a comment made by me and is not 
part of the equation

The global update equation would read: TITLE=WORD(NAME,1) ;This would 
make the first word of NAME the new value of TITLE.

The second field would be FIRSTNAME: FIRSTNAME=IF(ISBLANK(WORD(NAME 
,4)),WORD(NAME,2),WORD(NAME,2)+" "+WORD(NAME,3)) ;This would update 
the FIRSTNAME field with just the second word if there are only three 
words, for example Mr. Jim Little, but if there are four words it will 
put the second and third into the FIRSTNAME field, in the case of Ms. 
Mary A. Trumpwart.

Thirdly, we would want to update the LASTNAME: LASTNAME=IF(ISBLANK(WORD 
(NAME,4)),WORD(NAME,3),WORD(NAME,4)) ;This tests for the last word in 
our string and puts it into the LASTNAME field.


The results of our database would look like this:

TITLE FIRSTNAME LASTNAME
Mr Jim Little
Ms Mary A. Trumpwart
t th

  3 Responses to “Category : Databases and related files
Archive   : A4HELP.ZIP
Filename : A4HELP.DBT

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/