"report; reports; reporting; break; blank; line; lines; blank line; space;no line; separator; no separator; remove; invisible; invisible column; space; add space; vary; variable; variable spacing; variable columns; 1411"," ","On a report I am printing that has name, address and telephone and then have about 7 columns of extraneous information that no one will be using, I am trying to leave a space after the phone number and before all the other info. I have used derived columns to define a column 20 spaces wide @txt(20,' '), but cannot get rid of the dotted header line. The only thing I have in my notes on this is not working - I'm sure I left out a crucial step as usual! My note: To get NO headings in a report, need two things: To get rid of dotted line: HS(\) and to get rid of title h(\ ); need both. The first has no space after the backslash; the second does have a space. When I put this in the heading line OR in the bottom line (column spec?), neither work and just print info in the report. What am I doing wrong?"," ",1411, ,"Feb 25, 1996","I think you might be reversing your commands. In any event, try this: DERIVED COLUMNS Heading: 20:\ Formula No. 1 ' ' Column/Sort Spec: 15,HS(\ ) (There is a space after the \ and before the ) in the column/sort spec). You'll also notice that I made other changes to the approach you were taking. The reason is that (as far as I know) - without a header or 'separator' - Q&A will not leave 20 spaces; it will ignore them all and only leave one space, which is the narrowest width a column can be. So, all you have to do is add the width to the heading line. In my example I used 20 (which represents the number of spaces you indicated -- remember, of course, that Q&A will leave an additional space(s) on each side of that, for a total of 22 or more). Then in the formula, quote-space-quote is all that's needed to tell Q&A not to print anything. I trust you (and others) will see the incredible value to this technique. You can actually vary the amount of spacing between two or all (or any number in between) of the columns in your report."," "," "," "," "," "," "," "," "," " "mail merge; mail; merge; merging; write; write module; merge spec; retrieve; retrieve spec; field editor; F6; F6 key; expand; epand field; field; expanded field; expanded; memory; memory problem; problem; 1410"," ","I have a problem with Mail Merge using the 'write module.' During the merge process, at the 'retrieve spec' screen, I press F6 to expand a field. Every time, even in different databases, my computer has what I can only describe as a 'memory seizure'!!! This does not occur if I use F6 to expand a field in 'file'. It only occurs during the mail merge process when I am entering a retrieve spec to limit the records I want merged. I tried 'remming out' in my autoexec.bat and config.sys, to see if I could pinpoint the problem. No luck. Any suggestions?","5",1410, ,"Mar 26, 1996","This may occur when you use an old QA.CFG file with Q&A 5.0. It is NOT yet known whether this is a flaw in 5.0. It may simply be that your QA.CFG file was corrupted and simply surfaced at this point. If it hadn't shown up - in this relatively harmless way - it may have surfaced in some other manner. To see if this is the problem, I would suggest that you rename the QA.CFG file (to QACFG.OLD), then exit and re-enter Q&A. Try F6 again and, if it works, you have identified the cause of your problem. If necessary, reinstall the old file (rename QACFG.OLD back to QA.CFG) and restart Q&A. Copy any global settings you may otherwise forget, such as for alternate program menus, printer settings, report setting, path statements, etc. Then exit Q&A, get rid of the QA.CFG file, restart Q&A, and simply 'reset' your global settings. Q&A will create a new 'healthy' QA.CFG file and your back in business and even better off than when you started. By the way, I recommend that you keep a backup of your QA.CFG file for just such a situation. (I call mine QACFG.BAK). One more 'tidbit' that might be helpful. If you MUST use a complex retrieve statement that would normally require an expanded field and you simply CAN'T WAIT until you resolve the issue, there is a fairly simple solution. Type your retrieve spec in either a field that has sufficient room or in a separate write document. Copy (F11) it to the clipboard. Then go to your 'retrieve' field, leave it CLOSED, and simply paste (F12) the retrieve spec into the field. You don't have to open the field in order for a long value to be copied into it. (Of course, if you did this in another field in the form, don't forget to remove it, before executing your search). One additional factor may contribute to a problem with using the field editor in a 'merge' retrieval. There may be a conflict if you try to set global font defaults. There is an extremely easy work-around if this is, indeed, a problem. Just save a DOCUMENT with the fonts you would have liked as the default ... and then use this document as a 'template' for future documents. I hope this information is helpful and wish you good luck."," "," "," "," "," "," "," "," "," " "report; reports; heading; header; footer; foot; date; date stamp; current; current date; 1409"," ","I am trying to place 'Report completed 'date'' in the footer of a report in Windows. I can enter the text 'Report completed' but it won't accept @date - like the DOS version will. Is there any way I can complete the footer so that whenever I run the report, the current date will appear?","W",1409, ,"Feb 22, 1996","You sure can! It sounds like you know how to handle the text but I'll include that too, for the benefit of others. Simply choose (S)elect, (D)esign Reports/Labels and choose the appropriate report. Then select (R)eports, (V)iew Header/Footer. Click on the 'T' (text editor) in the upper left hand side of the screen to the right of the arrow. Drag the cursor to the Footer area and draw a rectangular box where you want the text to appear. In the text box, type Report Completed and leave a space. Now click on (E)dit, Paste (S)pecial, D(a)te Symbol. You'll see #DATE appear. (BE SURE that you choose Date SYMBOL and not CURRENT DATE. Current Date will actually insert 'today's' date, and it will not change). Click on (R)eports, (S)ave Report. When you run your report, you'll see the current date."," "," "," "," "," "," "," "," "," " "hp; @help; help; help screen; blank; error; incorrect; restrict; restricted; mandatory; value; specific; specific value; specific entry; entry; 1368"," ","We have a one character field (#110) to code a type of company. Choices are: E = Employer A = Agency, (temp, recruiter, search firm) J = Sister chapters of our job club group. F = Friends of OPEN (sponsors, local chamer of commerce, etc) ? = Unknown (need to phone and find out). The custom help for #110 looks like the above. I want to have the @help screen pop up if the field is left blank on exit or if an invalid value is entered. For field programming I included >#110: if @error=1 then @help(#110);@msg('Press F1 to see your choices') I had used the restrict values, at first with ! for required then changed to A;E;F;J;? (couldn't get it to work with both the choices and the ! (required). However, the user can actually enter anything and it will let them go to the next field. Then, looking at the Q&A Bible it suggested that the restrict value spec not be used, but rather program the field itself to 'keep the cursor there and pop-up the help msg unitl a valid value is entered,' but could not find a sample to show this technique. I tried to use various if then else and/or combinations for the allowed values and then @help(#110). Still can't seem to limit the typist to the values wanted and loop with the @help(#110) pop-up on error or mismatch. I was trying to do it without using the lookup table if possible, but..."," ",1368, ,"Jan 9, 1996","Here's a simple statement that will check field #110 to ensure that there is a value. >#110:if #110 = '' then {@hp(#110);goto #110} This is saying that if, after leaving field #110, it is empty - display the help screen and go back to field #110, thereby creating a 'loop' until SOME value is entered. This can be modified to: >#110:if not (#110='e' or #110 = 'a' or #110 = 'j' or #110 = 'f' or #110 = '?') then {@hp(#110);goto#110} Now Q&A will check to ensure not only that the field is NOT EMPTY but that it contains ONLY an 'authorized' entry. Now that I've answered your question (I hope), let's go back to something more basic (since this is a learning experience). You most definitely can use restrict specs to make it mandatory that a field BOTH be completed AND contain a specific value. There is a very good reason why your restrict spec was not working and it was simply a \ (yes I mean that, literally) (pun intended and I think you'll see why shortly). Chances are that you entered your restrict spec as follows: CODE: !a;e;j;f;? You simply needed to add one character, as follows: CODE: !a;e;j;f;\? The 'problem' is that Q&A uses the question mark as a 'wild card' and, therefore, interprets it as meaning any one single character. The way you entered it, any SINGLE character would be accepted; however, had you tried to enter aa (or anything more than one character) it would not have been accepted. The backward slash mark \ is recognized by Q&A as a 'signal' that the character immediately following should be taken literally, so by preceding the question mark with the backward slash, it now knows you will only accept a question mark and that you don't mean it to be used as a 'wild card.' I hope this information is helpful and wish you continued good luck!"," "," "," "," "," "," "," "," "," " "index; APTM; Application Programming Tools Manual; Manual; missing; missing index; 1369"," ","I received Q&A 5.0 but my Application Programming Tools Manual doesn't have an index in it. What happened?","5",1369, ,"Jan 10, 1996","Apparently, they forgot it. It seems that none of the APTM's have one. But, not to worry. The Q&Answerman created one for you, and in this index, you can even use F7 to 'search.' Here it is: INDEX TO APPLICATION PROGRAMMING TOOLS MANUAL - VERSION 5 FOR DOS <. See on-entry statements >. See on-exit statements + (addition), 16 < and > (angle brackets), macros and, 138 * (asterisk), macros and, 138 : (colon), 15 / (division), 16 = (equal to), 16 > (greater than), 16 >= (greater than or equal to), 16 { (left curly bracket), 21 < (less than), 16 <= (less than or equal to), 16 * (multiplication), 16 <> (not equal to), 16 + (plus sign), 48 ' (quotation marks), 48 } (right curly bracket), 21 ; (semicolon), 19 - (subtraction), 16 A @ABS(), 24, 43 @ADD, 23, 36 on-entry/on-exit statements and, 11 addition (+), 16 [[Alt]], macros and, 123 [[Alt]][[O]]...[[Alt]][[9]], autostart macros and, 127 [[Alt]][[F2]], macros and, 118 [[Alt]][[1]], macros and, 124 AND, 16, 19, 21-22 angle brackets (< and >), macros and, 138 arrow keys, macros and, 124 @ASC(), 25, 48 @ASKUSER ( ), 28, 66 Assigning Access Rights, 115 assigning Field IDs, 107-108 asterisk (*), macros and, 138 autostart macros, 127 @AVG(), 24, 43 B in macro syntax, 139 in menu syntax, 141 BEGIN, 21 brace symbols ({ }), 21 buffer (macro), 128 built-in functions, 23-29 C calc key ([[F8]]) calc statements and, 7 on-entry/on-exit statements and, 8 calc statements, 7 on-entry/on-exit statements and, 9 [[CapsLock]], macros and, 123 CEND, navigation programming and, 109 @CGR(), 24, 39, 40 CHOME, navigation programming and, 109 @CHR(), 25, 49 CLEAR(), 25, 49 clearing macros, 122 clock (system), 32 @COLOR(), 28, 62-64 CNEXT, navigation programming and, 109 colon (:), 15 column, LOOKUP and, 74 commands navigation programming, 109 programminp, 111-112 See also specific command comparison functions, 27, 72 conditional statements, 19-22 described, 19 constants, defined, 29 context functions, 23, 36 converting interest, 39 CPREV, navigation propramming and, 109 [[Ctrl]], macros and, 123 [[Ctrl]][[F8]],macros and, 137 cursor, moving. See navigation programming custom application macros, described, 118 custom menus described, 117 designing, 129-134 tips, 135-136 D @D( ), 23, 32 Database Lock, 115-116 illustrated, 116 databases dBase, 92-93 locking/unlocking, 115-116 shared, 38 DATE, 32 @DATE, 23,33 date functions, 23, 32-33 dates, examples, A-1-2, A-3-4 dBase databases, 92-93 .DBF, dBase databases and, 92 .DBT, dBase databases and, 93 defininp macros, 123-128 @)DEL( ), 25, 50 Derived Column Spec, @XLOOKUP and, 91 Design Custom Menu screen, illustrated, 130 designinp custom menus, 129-134 df dBase databases and, 92 XLOOKUP and, 87 @DITTO(), 25, 51 division (/), 16 division by zero, 17 @DOM(), 23, 33 @DOW$(), 23, 33 E editing Lookup Tables 79-80 macros, 137-141 editors. See Field Editor, Program Editor ELSE. See IF...THEN...ELSE encoding macrofiles, 142 END, 21 in macro syntax, 140 in menu syntax, 141 entering navigation programming, 106-110. See also on-entry statements; on-exit statements Entry/Exit Profile Box, illustrated, 11 equal to (=), 16 ERR, 17 indirection and, 114 @ERROR, 27, 61 error messages, 120, C-1 [ [Esc] ] macros and, 118, 123 menus and, 134 @NUMBER and, 38 on-entry/on-exit statements and, 10 executing navipation propramming, 108-109 execution order, 7-11 existing macros, runninp, 118-119 @EXIT, 28, 68 exiting fields/records. See on-entry state- ments; on-exit statements @EXP(), 24, 44 expressions, defined, 3 F [[shift]][[F2]] macros and, 118 menus and, 133 [[F3]], navigation programming and, 107 [[shift]][[F4]], macros and, 124 [[F6]] Lookup Tables and, 78, 79 macros and, 136 navigation programming and, 107 [[F8]] (calc key) calc statements and, 7 on-entry/on-exit statements and, 8 [[shift]][[F8]], on-entry/on-exit statements and, 10 [[F10]] @NUMBER and, 38 on-entry/on-exit statements and, 10 [[shift]][[F10]], @NUMBER and, 38 field, LOOKUP and, 74 @FEDIT, 28, 68 @FIELD(), indirection and, 113-114 Field Editor, Lookup Tables and, 78, 79 field identifiers, lists of, 29 Field IDs assigning, 107-108 described, 4 indirection and, 113-114 navigation programming and, 107-108 Field Names described, 4 indirection and, 113-114 navigation programming and, 107-108 field navigation. See navigation programming Field Numbers. See Field IDs field references, undefined, 114 fields indexed, 87, 93 multiple, 88-89 multiple statements in, 19 See also on-entry statements; on-exit statements @FILENAME, 25, 51 files, macro, 120-121, 142 financial functions, 24, 39-42 fn dBase databases and, 92 XLOOKUP and, 87 form programming, described, 4. See also Program Spec functions built-in, 23-29 comparison, 27, 72 context, 23, 36 date, 23, 32-33 defined, 3 financial, 24, 39-42 indirection and, 114 mathematical, 24-25, 43-47 multi-user, 27, 59 numbering, 24, 37-38 string, 25-26, 48-56 text, 25-26, 48-56 time, 23, 32-35 typecast, 26-27, 57-58 value specific, 27, 60-61 See also specific function @FV( ), 24, 39, 40-41 G GOSUB, 111-112 GOTO, navigation programming and, 106, 109, 110 greater than (>), 16 greater than or equal to (>=), 16 @GROUP, 27, 59 H @HELP(), 25, 51-52 I, J identifiers, field, 29 identifying macros, 123 IDs. See Field IDs IF...THEN, 19-20 example, 20 multiple statements within, 21 IF...THEN...ELSE, 19, 20 multiple statements within, 21 indexed fields, 87, 93 indirection, 113-114 examples, A-14-15 @INSERT(), 25, 50 @INSTR(), 26, 52 @INT(), 24, 44 interest, converting, 39 @IR( ), 24, 39, 42 K key dBase databases and, 92 LOOKUP and, 74 Lookup Tables and, 78, 83 XLOOKUP and, 87 key code table, 143-147. See also specific key , 140 , 139 L @LEFT( ), 26, 52 left curly bracket ({), 21 @LEN( ), 26, 53 less than (<), 16 less than or equal to (<=), 16 lf dBase databases and, 92 XLOOKUP and, 87 LFNs. See Field IDs lists of field identifiers, described, 29 loading macro files, 121 locking databases, 115-116 Logical Field Numbers. See Field IDs LOOKUP, 29, 73, 75-76 example, 75-76 parameters, 74 @LOOKUP, 29, 73, 6 LOOKUPR, 29, 73, 81-83 example, 81-83 @LOOKUPR, 29, 73, 83 Lookup Tables, 78-80 defined, 74 editing, 79-80 key and, 78, 83 mixing items in, 80 size of, 80 M @MACRO( ), 28, 70 macro buffer size, 128 macro files getting, 120-121 loading at startup, 121 protecting, 142 See also macros; menus Macro Menu, illustrated, 119 Macro Options dialog box, illustrated, 125 macros autostart, 127 clearing, 122 creating, 124-126 custom application, 118 defining, 123-128 described, 117 editing, 137-141 existing, 118-119 identifying, 123 naming, 123 regular, 118 savmg, 127 starting, 127, 136 syntax, 138-140 tips, 135-136 working with, 120-122 See also macro files; menus main programming. See calc statements managing menus, 132-133 mathematical functions, 24-25, 43-47 @MAX( ), 24, 44-45 .MDX, dBase databases and, 93 menu returns, 134 menus custom, 117, 129-134, 135-136 managing, 132-133 naming, 132-133 syntax, 140-141 See also macro files; macros or specific menu messages, error, 120, C-1 @MID( ), 26, 53 @MIN( ), 24, 45 @MOD( ), 25, 45 @MODIFIED, 23 @MONTH( ), 23, 34 @MONTH$( ), 23, 34 monthly interest, converting, 39 moving cursor. See navigation programming @MSG( ), 26, 53 @MSGBOX( ), 28, 64-65 multiple fields, XLOOKUP/XLOOKUPR and, 88-89 multiple statements, 19, 21 multiplication (*), 16 multi-user functions 27, 59 N in macro syntax, 139 in menu syntax, 141 Names. See Field Names naming macros, 123 menus, 132-133 navigation programming, 106-110 described, 4 executing, 108-109 Program Spec and, 108, 110 as second layer of programming, 106 special commands, 109 See also Navigation Spec Navigation Spec described, 5 illustrated, 6 navigation programming and, 108 See also navigation programming; programming .NDX dBase databases and, 92, 93 networked databased, @NUMBER in, 38 in macro syntax, 139 in menu syntax, 141 NOT, 16, 19, 22 not equal to (<>), 16 @NUM(), 26, 54 @NUMBER, 24, 37, 38 @NUMBER( ), 24, 37-38 numbering functions, 24, 37-38 [[NumLock]], macros and, 123 O on-entry statements, 8-11 calc statements and, 9 described, 7 navigation programming and, 108 subroutines and, 111 See also navigation programming on escape, show menu, 134 on-exit statements, 8-11 calc statements and, 9 described, 7 navigation programming and, 108 See also navigation programming operators, 16 indirection and, 114 order of precedence, 17 See also specific operator OR, 16, 19, 21-22 order of execution, 7-11 of precedence, 17 P parameters LOOKUP, 74 XLOOKUP, 87 parentheses, 17 passwords, macros and, 136 Pause, macros and, 123 PgDn, navigation programming and, 109 PgUp, navigation programming and, 109 @PLAY, 28, 62 plus sign (+), 48 @PMT(), 24, 39, 41 precedence, 17 Print Screen, macros and, 123 Program Editor, 12-13 example, 13 illustrated, 12 navigation programming and, 107 programming, 14-22 commands, 111-112 complex, 18-19 described, 4-6 error messages, C-1 examples, A-1-15 execution order, 7-11 form, 4 navigation, 4, 106-110 simple, 14-17 terms, 3 troubleshooting, B-1-2 See also Navigation Spec; Program Spec Program Spec, 5, 108, 110. See also form programming; programming protecting macro files, 142 @PV(), 24, 39, 42 Q QAMACRO.ASC, 120. 121, 127 quotation marks ('), 48 R records, entering/exiting. See on-entry statements; on-exit statements references, field, 114 regular macros, described, 118 REM ' ', 28, 71 @REPLACE(), 26, 54 @REPLFIR(), 26, 54 @REPLLAS(), 26, 55 REPORTS EXAMPLES, a-8-13 @XLOOKUP and, 91 resetting @NUMBER, 38 @REST, 27, 72 RETURN, 111-112 @RIGHT(), 26,55 right curly bracket (}), 21 @ROUND(), 25, 46 running existing macros, 118-119 S @SAVE, 28, 67 saving macros, 127 [[ScrollLock]], macros and, 123 @SELECT(), 27, 60 semicolon (;), 19 @SHELL( ), 28, 69-70 @SGN(), 25, 46 shared databases, $NUMBER in, 38 size of Lookup Tables, 80 of macro buffer, 128 specs. See Navigation Spec; Program Spec @SQRT( ), 25, 46 starting macros, 127, 136 startup, loading macro files at, 121 statements calc, 7, 9 conditional, 19-22 defined, 3 multiple, 19, 21 on-entry/on-exit, 7, 8-11 See also specific statement @STD(), 25, 47 STOP, 112 @STR(), 26, 57 string functions, 25-26, 48-56 strings, examples, A - 6 subroutines, 111-112 subtraction (-), 16 @SUM( ), 25, 47 syntax defined 138 macro, 11O-140 menu, 140-141 system clock 32 T @T( ), 23, 35 @TEXT, 26, 55 text functions, 25-26, 48-56 THEN. See IF...THEN; IF...THEN...ELSE TIME, 32 @TIME, 23, 35 time functions, 23, 32-35 times, examples, A-1-2, A-3-4 @TODATE(), 26, 58 @TOMONEY( ), 26, 57-58 @TONUMBER( ), 26, 57 @TOTIME(), 27, 58 @TOYESNO( ), 27, 58 troubleshooting, B-1-2 typecast functions, 26-27, 57-58 U undefined field references, indirection and, 114 user functions, 28, 62-71 unlocking databases, 115-116 @UPDATE, 23, 36 on-entry/on-exit statements and, 11 @USERID, 27, 59 USERSELECT( ), 29, 73, 86 @USERSELECT( ), 29, 73, 83-85 V value specific functions, 27, 60-61 @VAR( ), 25, 47 variables, defined, 29 , 139 W , 140 @WIDTH, 26, 56 X xkf dBase databases and, 92 XLOOKUP and, 87 XLOOKUP, 29, 73, 88-89 multiple fields and, 88-89 parameters, 87 @XLOOKUP, 29, 73, 89-92 examples, 7-91, A-6-7 reports and, 91 XLOOKUPR, 29, 73, 88-89 @XLOOKUPR, 29, 73, 92 XPOST, 30, 73, 101-103 XPOSTR, 30, 73, 104 XUSERSELECT, 30, 73, 94-95 @XUSERSELECT, 30, 73, 99 XUSERSELECTR, 30, 73, 96-98 @XUSERSELECTR, 30, 73, 100 Y @YEAR(), 23, 35 yearly interest, converting, 39 Z zero, division by, 17"," "," "," "," "," "," "," "," "," " "mass; update; mass update; ssn; social security number; social security numbers; dash; dashes; remove dash; remove dashes; mixed; mixed values; value; values; 1373"," ","Recently I combined three small data bases in QA 4.0. Two of the three used dashes in the social security number. Now I have a nice confusing mix. I know there is a way to remove those dashes but don't have much documentation. Any help would be appreciated."," ",1373, ,"Jan 17, 1996","A simple 'Mass Update' will fix your SSN field in no time flat. First, please make a backup of your database, 'just in case.' Then, you can complete your retrieve spec something like: SSN: ..-.. and your mass update spec, something like: SSN: #1:#1=@replace(#1,'-','') When done, all your SSN's should be in the same format of 9 digits only."," ","The retrieve spec will find any field that contains a dash anywhere within the field. The mass update spec will replace any dash with 'nothing.'"," "," "," "," "," "," "," " "ditto; dittoing; ditto-ing; copy; copying; previous; prior; form; previous form; last; last form; 1372; search; update; search/update; search mode; retrieve; retrieve mode; update mode; mode"," ","I would like to emulate the ditto function from Add Records in Search/Update. Is there any way in Q&A4 that I could repeat two fields by use of macros? Basically, records (similar to mailing labels) are printed out in groups of 8. Volunteers then make follow-up calls and then need to enter information about the the follow-up, such as the volunteer's name, date called (calls may have been made on a previous date), etc."," ",1372, ,"Jan 13, 1996","Unfortunately, @ditto is not a Q&A 'built-in' function in search/update mode. There are, however, many other ways to simplify data entry and you can pretty much 'emulate' the @ditto function. (I'll describe the technique after mentioning some other 'shortcuts.') If the 'groups' are easy to retrieve, you could certainly consider a mass update to enter the constant information. Even if data entry is done directly into each record, there are still many ways to simplify it. If the call were made the same day as data entry, you can use Ctrl/F5 to enter the date. I recently created a macro for Ctrl/F5 and assigned it to the tilde (~) key. The people using it LOVED it! It's one keystroke, instead of a combo, and very easy to find because of its location on the keyboard. Also, you could create a very simple lookup table, so that the volunteer only has to enter an initial(s) and Q&A would enter the name. In version 5, you could use F11 to copy the most 'difficult' field in the first record and F12 to paste it into all subsequent records. You could even consider having all of the constant information entered into one field of the first record and use programming to parse it. That way, F11 will copy ALL of the info to the clipboard. Then F12 will bring it into the next record, where once again your programming will parse it. Now, here's the technique I promised which comes pretty close to emulating the 'ditto' function. First you would need to add a field to record 'temporary' record numbers. I usually call mine RID (for Record Identification) or, when that's already in use, TID (for Temporary Identification). The field should be formatted as (N)umber and made speedy. Then, simply program it for '@number' something like: <#999 = @number; cnext Then, in each field where you want to 'ditto' information from the previous record, you would simply enter something like: VOLUNTEER: >#10:If @lt(#10,1)='x' then #10 = @xlu(@fn,#999-1,'RID','VOLUNTEER') All the data entry person has to do is enter x in the field (whether or not the field has data in it). On leaving the field, the value from the previous record will be brought forward. I usually use navigation programming to alert people when this feature is available. You can use something like: VOLUNTEER: <#10: @msg('ENTER 'X' AND PRESS ENTER TO COPY THE INFO FROM THE PREVIOUS RECORD). In a date field, you wouldn't want to enter 'x' because then you'll get a message that it is not a valid date which is (technically speaking) YUCKY! . In a case like this you might want to change the programming to look for an 'empty' condition and have the operator press F4 and then enter. Also, when you F10 from one form to another (in search mode) you wind up in the same field you were in when you left the preceding field. This might 'negate' some of your careful programming, depending on where you 'land.' You might want to force the cursor to the 'home' (or some other appropriate) position before leaving one form and moving to the next. With version 5.0, and the use of macros, you would have much more flexibility and could much more easily 'counter' any potential problems. I hope that this either provides something that will work for you or that it will at least bring other alternatives to mind. Good luck!"," "," "," "," "," "," "," "," "," " "xlu; lu; xlookup; xlookup; lookup statement; external; external lookup; message; error; error message; warning; warning message; index; indexed; zip; zip code; key field; lookup error; speedy; speedy field; 1371"," ","I wrote an xlookup statement but when I try to use it I get !warning! externial key field is not indexed:zip code cannot complete external lookup."," ",1371, ,"Jan 12, 1996","In order for an xlookup statement to work, the field that is being looked up in the external database must be indexed or set to speedy. Suppose, for example, that in your Customer database you are doing an external lookup to your ZIPCODE database by matching on a field called CODE. From the main menu, select (F)ile, (D)esign file, (C)ustomize a file (filename -- in this example ZIP), (S)peed up searches. Then move your cursor to the CODE field and enter the letter S. Press F10 to save this change. If your xlookup statement is otherwise correct, your xlookup should now work just fine."," "," "," "," "," "," "," "," "," " "export; import; db; dbf; .dbf; dbase; dbIV; dbaseIV; access; file; name; names; field; field name; field names; fieldname; fieldnames; length; character; characters; length; label; labels; duplicate; duplicates; duplicate field; duplicate fields; duplicate name; duplicate names; duplicate field names; duplicate field name; duplicate fieldname; duplicate fieldnames; 1408"," ","I exported the data from a Q&A 4.0 file to a dbf file but found that the dbf did not have all the fields that the dtf file had. I am missing quite of few of them. They were date and money fields. What gives? Is there a way that I can get ALL the fields?"," ",1408, ,"Feb 18, 1996","First let me tell you that I have both exported and imported QA/DBF files on many occasions with complete success. I hope, if nothing else, that will offer you some encouragement. It's hard to know what might be causing the problem, but you should be able to get it to work. One factor that might contribute could be field names that dBase won't recognize such as field names that begin with non-alphabetic characters. I also believe that some versions of dBase won't recognize numeric fields if they are one character long. You might try changing numeric fields to text before exporting. Also, I think that because of the way field names are converted that some might be seen as 'duplicates' and dropped out because of that. Probably the best overall suggestion I could make is to (1) make a backup of the Q&A file (2) change the format of all fields to text (3) be sure all the field names start with an alpha character, and it's probably best they contain no blank spaces, (4) be sure all field names are unique within the FIRST TEN characters and (5) be sure the file they are imported to is set for all text fields. I hope this suggestion will help you convert the data."," "," "," "," "," "," "," "," "," " "report; reports; heading; report heading; variable; data; variable data; header; footer; report header; report footer; xlu; xlookup; xlookups; lu; lookup; lookups; 1370"," ","I just received my copy of Q&A ver5.0 and want to put an @XLOOKUP in a report header. I do billing with reports and want to have it merge my company name, address, etc. I have entered it in the header but want to automate it because I do this for a number of locations and don't want to have to type the address in each header. Maybe you have an idea.","5",1370,26,"Jan 11, 1996","What you want to accomplish is quite simple. First, remember that as a general rule, you can't use programming in a report header/footer that references a field in the database. So, while you can use xlookup statements, you can only lookup a constant 'value.' This wouldn't accomplish what you want in this particular case; however, there is a very easy solution. You CAN do an xlu in a derived column AND you can then place the value from the derived column in the header. To start, we need to tell Q&A WHEN to change the information in the header. I assume that you already are using a 'page break' in your column/sort spec, something like: ACCOUNT: 10,AS,P OTHER: 20 (If you didn't want the 'ACCOUNT' to show in the report, you would simply add ,I to make it invisible) Now, you would complete a derived column, something like: Heading: (To set up for header) Formula No. 1 @xlu('COMPANY',ACCOUNT,'ACCOUNT','ADDRESS') Column/Sort Spec: 30,I This will perform an xlookup to the COMPANY database, use the account field in the CURRENT database, to find a matching account in the company database and will bring back the ADDRESS to the derived column (which we made invisible, so it won't appear in the body of the report). THEN, in the header, of your report, you would enter: 1: *PG {?1}* This is a 'typical' merge type programming statement. The question mark tells Q&A that what follows is the number of the formula that contains the value. In this case, we created the xlookup in formula #1 of the derived columns. We could have done it in any formula (1 through 16) and referenced it here. One word of caution about how you refer to the formula number. If you DO NOT SKIP a field in your derived columns, then you can just use the 'pre-printed' formula number. BUT let's say you skipped the first formula and entered it in formula #2 .... Q&A would consider this the FIRST formula and could only find it (in the header) if you referred to it as formula #1. I don't mean to confuse you; I simply want to help avoid potential 'problems.' Another record in this database, identified as XRef #26, discusses a more complex alternative method."," "," "," "," "," "," "," "," "," " "card; cards; post; post card; post cards; postcard; postcards; label; labels; mailing labels; print; printer; printing; mail; mailing; mailing labels; 1417"," ","Please tell me how/if I can mail merge 4X ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿ postcards so that there is a different address ³ ³ ³ on each instead of 4 of the same. ³ ³ ³ ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´8.5' ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ 11'"," ",1417, ,"Mar 5, 1996","The fact that you are printing '4 of the same' tells me that you probably created a regular word processing document. Indeed, if you are repeating the merge fields 4 times in one document, you will get four repetitions of the data from each record you merge with. That's great, when that's what you want ... which apparently is not the case at present. The trick is to simply take advantage of the Mailing Labels feature, provided with Q&A Write. From the main menu, select (W)rite, (M)ailing labels. Don't let the fact that you're selecting 'labels' fool you. We're simply going to treat 4x post card as if they were each labels, 5 1/2' (wide) x 3 3/4' high. (The printing will be done DIRECTLY to the post cards). Highlight a standard label (such as the Avery 5160) and press F5. A 'copy to' block will appear at the bottom. Start the name with a - or * so it will appear at the top of the list (Q&A sorts label names alphabetical). You might want to name it - Post Card 4X and then press enter. Highlight the new label and press enter. A 'picture' of the label will appear. If the field names are not the same as yours, then enter the proper field names between the asterisks. If you prefer, you can press Alt/F7 and enter the name of the database your addresses will be coming from. Then you can select the field name from the list that will appear. When the field names have been placed, hold the Control key and press F6 (Ctrl/F6). Change the width to 5.5'. Tab to the height and change that to 3.75'. (You might want to press F1, to access the help available with regard to designing mailing labels). I would leave the margins and cpi alone; you can always come back and modify them later if you need to. Press F10. You can now press your insert key and move the field names to the proper location within the screen. Press F10 and the Mailing Label Print Option menu will appear. If you used Alt/F7 to add any of your own fields then the filename should appear on the very last line: 'Name of Q&A merge file.:' If it doesn't appear, enter it now. Be sure to modify the 'Number of labels across' to 2 and the lines per label sheet to 46 (to start). Also, be sure to select the appropriate printer. (If you're using a LaserJet, you undoubtedly need to select 'landscape' mode). Press F10 and a retrieve spec will appear. I would suggest that you select a few records to start with. You might want to first choose page preview to see how the information looks on screen. In any event, I would suggest that you first try this on plain bond paper so that you can test a few records, rather than wasting valuable post cards. You might have to make some minor adjustments but, overall, this should do the trick. Be sure to save the post card label (Shift/F8) so that you'll be able to use it whenever needed. You'll be glad to know that I have tested this and it does work! Two other records in this database (identified as XRef #24) may be helpful. One relates to Membership Cards and the other relates to single postcards. They may have an additional tip or two that you can apply here ."," "," "," "," "," "," "," "," "," " "Xpost; post; add; text; 1407"," ","Can Xpost be used to add text from one database to another into a field that already contains text? For example, my 'source' database has my clients' last name only (and I want it to stay that way). My 'target' database has a name field that contains the customers first name only. I want to add - in the same field - the last name to the first name, so that, for example, John becomes John Smith. I match the records by a common (unique) telephone number.","5",1407, ,"Feb 17, 1996","Xpost can add, subtract, multiply or divide only when you're working with numeric values. (But, we won't let that stand in our way ). You can 'replace' any value by simply not specifying any of the 'operators' (i.e. add, subtract, etc.). My suggestion is to simply do an xlookup to retrieve the value from the target database (into the source database) then combine it with the value you want added and then post it. It is much quicker than you would think and quite easy to accomplish. I like to use a one-character 'posted' field which I fill with a 'check' mark once the posting has been accomplished. This shows me visually that the posting has been done and also helps me ensure that I don't post more than once. (Sometimes I use a message and an xlookup to actually show me the value from the external database, both before and after posting). Supposing your database looks something like: Phone: Last: < > You could use programming something like: Phone:#10 Last:#20 <#30 (Of course, #30 would be entered, using F6 to expand the field) #20 does all the work with: >#20: IF NOT #30 = 'û' THEN {#30 = @xlu('target',#10,'Phone','Name') + ' ' + #20; xpost('junk',#10,'Phone',#30,'Name'); #30 = 'û'} I make #30 'read only' so the cursor doesn't stop there. You could instead (depending on your needs or personal preference) simply use a goto statement to skip by it. There are, of course, many variations of this. If you don't want the û to show, you could hide the field from view. If you don't go through the field more than once and want the posting done only when you add a record, you could preface the programming with If @add -- and then eliminate the û completely. (Just remember, you have to have SOME field that you can use to add your two values together. This could be any field that has not yet been completed). HOW you 'put this together' will depend on precisely how you wish to do your posting, but 'put it together' you CAN."," "," "," "," "," "," "," "," "," " "edit; editing; long field; long fields; screen; table; view; table view; F5; F6; field editor; expand; expand field; expanded; expanded field; field; fields; expanded view; 1374"," ","Is there any way to edit long text fields while viewing it in a sorted order on the screen (table view, with only one line view from each field). I would like to see ALL the data on the screen in each field, just like you see on the screen option before printing a report, but be able to EDIT THE INFO WHILE VIEWING ALL OF THE PAGE ON THE SCREEN!"," ",1374, ,"Jan 22, 1996","When you're in a field in table view, you can simply press F6 to expand the field and see a considerable amount of text. You can 'move' through the field to see all text and you can edit it to your heart's content. You can, if you like even print the contents of the field. Not only can you print it, but you can select 'print preview' and see a full page of the contents right there on the screen. You can also press F5 to get an expanded view of the field which appears on the bottom of the screen. Usually, I browse the table using my down arrow key. Since I'm comfortable with macros, I simply change the down arrow key to first move down a row and then automatically press F5. (When I'm done, I simply remove the macro). (Naturally you can use any other 'easy' key). This way, with one key-stroke, I not only move down from line to line but instead of being limited to viewing 15 characters in the field (in long fields, only 14 characters plus the arrow), I can now view (up to) 67 characters on the bottom line. Frequently, those extra characters make all the difference in the world. F6 (to utilize the field editor) is best used on an 'as needed' basis because if it were done 'automatically' it would destroy your table view. I hope this information helps ease the 'frustration' just a little. Good luck!"," "," "," "," "," "," "," "," "," " "label; labels; label sheet; label sheets; header; heading; footer; top; margin; top margin; 1375"," ","I'm using label sheet has a 2 line page margin at top and bottom. I would like to be able to put a header or footer on the labels that tell people what it is (Area, date, description, page #). Is this possible?"," ",1375, ,"Jan 17, 1996","As far as I know there is no built-in way to produce a header or footer on a sheet of labels nor, under any circumstances could it include 'programming.' You could, however, use a trick that I learned to add a fourth line to report headers. If you want to include 'constant' information, you can enter it in the 'printer control codes' on the 'Mailing Label Print Options' screen. (This won't show up on page preview, so you actually have to try printing it out). Another option might be to prepare a merge document to simply produce a one line header on your label sheets ... and then to use these sheets to print your labels. Please keep in mind - that while many people run label sheets through a laser printer more than once - you do so at your own risk. Label manufacturers recommend against this."," "," "," "," "," "," "," "," "," " "envelope; envelopes; print; printer; printing; print envelope; print envelopes; printing envelope; printing envelopes; address; return; return address; document; merge; mail merge; merge document; merge envelope; 1376"," ","Using a database in Q&A, is it possible to print on envelopes both return address and addressee name and address?"," ",1376, ,"Jan 17, 1996","The 'short' answer is. You CANNOT use a return address with the special 'envelope print option' and you CAN use a return address with a merge document. Now for the 'long, long' answer. Since you prefaced your question with 'using DATABASE in Q&A,' the answer is probably yes. In the write program, simply create a merge document specifically designed for envelopes. Type the return address as you want it to appear in the upper left-hand corner of your document and your merge fields in the appropriate location. Set your page length for 18-24 lines according to your particular needs. I also suggest that you include a one-line bottom margin and place *P 12* (formfeed character) at the rightmost part of the footer to ensure a form feed at the end of the envelope). That's all there is to it. In version 4.0 there is a file called ENVDOC.EXE in your Q&A directory. When you 'run' this file, it will create several 'envelope documents' for printing envelopes with return addresses. The accompanying text file READENV.ME provides instructions on how to best use these documents. You may prefer using these 'templates' rather than designing your own. The reason I said 'probably yes' is that Q&A has an automatic envelope printing feature when using the word processor; however, that particular feature is NOT able to print a return address. To help you decide which approach to use, you might want to consider the following. Generally, you would use an envelope (merge) document when one or more of the following situations apply: To print a return address on the envelope. To position the address differently than the embedded Q&A position. To print envelopes on a printer with a sheet feeder. You need to have the number of lines per envelope set at other than 24 You have a printer that is not supported with an envelope driver The envelope line spacing option in Q&A causes several things to come into play. It fixes the page length to 24 lines per page. (The page length on the define page is ignored). Q&A scans the document from the top of the page and ignores anything that has a date or numbers in the beginning. Q&A looks for text that is on the left margin and then looks below to find the next blank line between the inside address and the salutation. If there is nothing below the inside address, Q&A will send the maximum number of linefeeds and probably cause a creep problem. YOU MUST HAVE A BLANK LINE AFTER THE INSIDE ADDRESS AND A LINE OF TEXT BELOW THAT LINE. The print head is positioned on the envelope to a place that is 8 lines down and 3.5 inches indented to the left. To print envelopes, using this special option, you would normally have (or could create a partial one for the purpose of printing envelopes) a business letter complete with a header. For example: *NAME* *ADDRESS* *CITY*, *STATE* *ZIP* Dear so-and-so, . When you go to print, the merge fields will be replaced with the correct information. By having a body there, Q&A will know when the address ends and the body of the letter begins. After this is set up, press F2 to print. From here you may need to select the envelope printer driver (if it is different than your regular printer option) and change line spacing to Envelope. You could, of course, use a combination of these approaches. You could create a merge document to print your return address on a supply of envelopes and then use these envelopes with the 'envelope' selection to print the addressee information. I also know people who prefer to use print coordinates for this task. From the Q&A Main Menu, select (F)ile, (P)rint (filename), (D)esign and create a print spec for envelopes. This works well (as it would in a merge document) if you want to merge both the return address and the addressee from the records in your database."," "," "," "," "," "," "," "," "," " "report; reports; reporting; birthdate; age; count; subcount; sub-count; column; columns; derived column; derived columns; group; groups; age groups; category; category; group count; group counts; category count; category counts; range; 1377"," ","I have both date of birth and age fields in a data base I am working with. I would like to create a report that would give me a count of ages 18 to 34, 35 to 49, 50+ etc.in the same report. Could this be done with derived columns using data from the date of birth or age fields? If not is there another way?"," ",1377, ,"Jan 17, 1996","This most certainly can be done. Since I don't know the specifics of what you want in the report, I'm going to provide one solution, which hopefully you'll be able to adopt to your specific needs. Column/Sort Spec: ~~~~~~~~~~~~~~~~ NAME: 40,SC,C,AS,CS DOB:10,I AGE: Derived Columns: ~~~~~~~~~~~~~~~ Heading:Compute Age Formula No. 1: @YR(@DATE)-@YR(#10) - ((@MONTH(@DATE) < @MONTH(#10)) or (@MONTH(@DATE) = @MONTH(#10) AND @DOM(@DATE) < @DOM(#10))) Column/Sort Spec: 20,I Heading: Age!Group Formula No.2: @txt(#20>='18' and #20<=34,'18-34') + @txt (#20>=35 and #20 <=49,'35-49') + @txt(#20>=50,'50 + over') Column/Sort Spec: 30,AS Age Group Name --------- --------------- Goodman, John Marx, Groucho --------------- Count: 2 18-34 Fields, Doris Garbo, Gretta --------------- Count: 2 35-49 Fox, Jessica Streisand, B. --------------- Count: 2 50 + over Gable, Clark Hutton, Betty Oliver, Jane --------------- Count: 3 ========= =============== Count: 9 I'm purposely recommending that you calculate the age in a derived column since this way, the age will always be accurate up to the date the report is printed. If you are still using Q&A version 4, you probably won't have room for this. In this case simply omit the first derived column and enter 20,I in the AGE field in the column/sort spec. In this case be sure that you mass update your records to calculate the current age (I usually wrap the calculation and the report in a macro so that it only requires one keystroke). Also, if you haven't yet received Q&A version 5, you won't be able to fit the formula for the age groups in one derived column. In that case, use one derived column for each of the (three, in this case) age groups, then use a fourth field to add those three columns together. By the way, you could also use the specs for #10 (DOB) and #20 (Compute Age) in a cross tab report. Instead of showing 30,AS for the Age Group, you can identify it as a COL OR ROW. You can get some nice statistical breakdowns by age groups, this way."," "," "," "," "," "," "," "," "," " "date; dates; format; date format; date formats; style; styles; @date; @date function; function; Customize; customize database; initial; initial value; initial values; values; global; global options; options; problem; date problem; import; ASCII; date import; date imports; import date; import dates; importing dates; 1378"," ","Date import problems with Q&A DOS version 5.0","5",1378, ,"Feb 1, 1996","On January 17, 1996, another Q&A'er (Bill Halpern) reported problems in Q&A DOS 5.0 when importing certain date formats. Here's what he had to say: 'In Q&A version 5.0 there is a bug in the date formats. When you choose date format 7, which should be MM/DD/YY, what you really get is a format of DD.M.YY. When you select date format 9, which should be MM/DD/YYYY, you get a strange format which comes out DD. Month(spelled out) YYYY. In addition, I have found some much more serious issues with the date formats which can irrevocably change/ruin your data. The situation occurs when you are importing data, which includes dates, into new records in a database. If you are using date formats 1, 3, 5, 11, 13, 14, 15, 16, 19, or 20 the problem will not affect you. However, if you are using date formats 2, 4, 6, 7, 8, 9, 10, 12, 17, or 18 you are playing with fire. The problem involves transposition of the day and month values of the dates and only occurs for dates where the day value is 12 or less (can be interpreted as a month value). In this situation, with the database set to the problem date formats above, the day value will become the month and the month value will become the day. For Example, if you were using a standard ASCII import file which looked like: '10/4/94','2/24/95' '11/8/94','6/29/95' '6/2/94','2/28/95' and you had the date format set to 9, the dates would read: 10. April 1994 24. February 1995 11. August 1994 29. June 1995 6. February 1994 28. February 1995 note the problem with the first date field in each record. With the same import file and date format 7 selected the results would be: 10.4.94 24.2.95 11.8.94 29.6.95 6.2.94 28.2.95 again, the first date fields are reversed. This same situation happens with all of the problem formats listed above. So, stay away from the problem areas until the fix is made and use only the 10 good date formats listed above.' And here is my reply: 'I think we're all in agreement with the first part of your message. Date formats 7, 9 and 10 clearly do not conform to the expected results. With regard to your other 'findings' you may have discovered a situation that has always existed in Q&A. I know, I myself always wondered how any program could possibly distinguish between February 1, 1996 if it were written as 2-1-96 VS 2nd January, 1996 if it were (also) written as 2-1-96. I didn't have your patience to test all of this out in version 4.0. I did, however, test date format #2 in version 4.0 which I entered as 10-4-94 which, if imported from another database would be October 4, 1994. I created 3 fields one in date format and two in text formats, as follows: Date: 10-4-94 Text: 10-4-94 Text then Date: 10-4-94. As soon as I pressed 'enter,' the first date format changed as follows: Date: 10 Apr 1994 Text: 10-4-94 Text then Date: 10-4-94 And I then changed the last (text) field to date, which resulted in: Date: 10 Apr 1994 Text: 10-4-94 Text then Date: 10 Apr 1994 (Entering a date such as 10-29-94 resulted in an appropriate date of 29 Oct 1994) It would seem to me that unless a date would be 'invalid' Q&A has no way of knowing that what you're sending them is month, day, year ... as opposed to day, month, year. I was wondering whether you did any testing in 4.0. I would imagine that you'll probably find the same results (not including the 3 formats clearly in error). I also found (in both version 4 and 5) that if I entered the same date (10-4-94 for October 4, 1994) BUT entered it in the standard Q&A format of 1994 10 4, Q&A will properly format it (in format 2) to 4 Oct 1994. Finally, the last test I made was to first format a date to #15 and imported 10-4-94. I then changed it to format #2 and it properly reformatted to 4 Oct 1994. In short I'm not sure whether this is a bug or not but if it is, it has apparently existed in previous versions. One thing is for sure. You discovered something extremely important because, clearly dates can be irrevocably destroyed using certain formats. Fortunately I usually use format 15 otherwise I'd be worrying about how many dates I may have screwed up in the past. I guess one solution is to FIRST import to one of the 'acceptable' formats and THEN change to the one actually desired. Personally, I'd be more comfortable importing dates (which I always import to a TEXT field) and then converting it to a format of 1994/10/4 and then changing it to date with whatever format I want. I'll be looking forward to further comments given this additional perspective. Nice going!' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Finally, Lance Jacobs (the CompuServe SYSOP) posted this following message from a member of the Q&A Technical Support staff: 'Communications from customers on the electronic services prompted research on my part to find out how Q&A deals with ambiguous dates. An ambiguous date is a date in which the number of the day is small enough that it can be taken for a month number. For example, the fourth of February can be written as 2/4/95 (M/D/YY) as standard US convention. However, some use the convention: 4/2/95 (D/M/YY). The question becomes how does Q&A distinguish between 2/4/95 and 4/2/95? The following discussion applies to all versions of Q&A. As an example, consider a standard ASCII file that contains date data. Let's say that the file contains the following records: '8/31/1994','9/6/1994','White' '8/21/1995','8/22/1995','Novello' '5/9/1995','5/8/1995','Payne' '10/30/1995','11/6/1995','Tyska' By examining the first record it is clear that the date convention used in this file is: M/D/YYYY. We know this because the first date in the first record can only be 'the thirty-first day of the eighth month ...', not 'the eighth day of the thirty-first month...'. For the next part of the discussion, let's examine date formats in Q&A 5.0. The following table illustrates the various date formats available: Date Format Number Date Displayed As 1 MON D, YYYY 2 D MON YYYY 3 M/D/YY 4 D/M/YY 5 M/D/YYYY 6 D/M/YYYY 7 D.M.YY 8 DD/MM/YY 9 D. MONTH YYYY 10 D.M.YYYY 11 MONTH D, YYYY 12 D MONTH YYYY 13 M-D-YY 14 M-D-YYYY 15 MM-DD-YY 16 MM-DD-YYYY 17 DD.MM.YY 18 DD.MM.YYYY 19 YYYY-MM-DD 20 YYYY/MM/DD MON 3 letter abbreviation for the month M Month number without leading zero MONTH Full month name MM Month number with leading zero D Day without leading zero YY Last two numbers of the year DD Day with leading zero YYYY Full year date Going back to the example, it is clear that the date format used in the example is format number 5. Note also that record number 3 is completely ambiguous. There is no way to tell just from this record whether the dates are May 9th and 8th or the 5th of September and August. Either is possible. Tests show that the choice on the Global Format Options screen effects more than just the way dates are displayed in the database. It turns out that Q&A uses this choice to govern how ambiguous dates are imported into the database. Let's go back to the example. Let's say that I import the data from the above text file into a database with the date format in the Global Format Options screen set to number three (M/D/YY). The four records created will have the following data in the two date fields: 8/31/94 9/6/94 8/21/95 8/22/95 5/9/95 5/8/95 10/30/95 11/6/95 However, if I change the date format to number four (D/M/YY), the data will import as: 31/8/94 9/6/94 * 21/8/95 22/8/95 5/9/95 * 5/8/95 * 30/10/95 11/6/95 * Note that the asterisked dates have been imported incorrectly. The first instinct is to assume that Q&A has switched the day and month numbers for the asterisked dates, but that is NOT what is going on. Let's look at each date and examine how Q&A deals with it: For the first date: '8/31/1994', Q&A examines the date and determines that the second number must be a day and not a month because it is greater than 12. So Q&A correctly switches the month and day and displays the date as 31/8/94. For the second date, '9/6/94' (September 6, 1994), Q&A has no clue from the date itself which number is the month and which number is the day. What Q&A does is look to the format chosen in the global format options screen for help in deciding. In this case, it displays the date as 9/6/94 (June 9, 1994). Since this evaluation is performed on a field by field case for each record imported, Q&A really can do nothing else. This problem can only occur in a very specific set of circumstances. First, the global format chosen for the database must display the day either before or after the month. Second, the data being imported must be formatted with the month and day in the other order. In the example treated above, the problem was that the global format was day before month, but the data in the text file was in the format of month before day. In either case the result is that the ambiguous dates are imported incorrectly. The solution is easy. Simply make sure that the date format chosen on the Global Options Screen and the date format of the data in the file match as to the order of month and day. Sharp - eyed users will note that three of the date formats in the above table, do not conform to the formats displayed on the Global Format Options screen. For Q&A 5.0 for DOS, date formats 7, 9, and 10 display differently than indicated. The table below shows the formats as they should display, and the formats as they do display: Date Format Number Date Should Display As Date Is Displayed As 7 MM/DD/YY D.M.YY 9 MM/DD/YYYY D. MONTH YYYY 10 DD/MM/YYYY D.M.YYYY Mike Hayes Q&A Technical Support Symantec Corporation'"," "," "," "," "," "," "," "," "," " "recover; recovery; phase; phases; 8; 8 phases;; 1379"," ","When, once again today, waiting for a File/Utility/Recovery Operation to complete I was curious as to what the 8 phases are called and what each one does. Could you please provide the information of what is being done in each of the 8 phases?"," ",1379, ,"Jan 22, 1996","Ah ... something I've always been curious about and just never pursued. I do know that it's very rare (if ever) that all phases are used. Usually, the first three phases are the only ones to be executed. If I ever work on a database where the 'Intelligent Assistant' has been accessed, then it continues with phase 4 and above. Now, here's a more comprehensive answer from a Symantec representative. While we may not understand the process associated with all of the steps, it does help provide a clearer picture. The important thing is that, in most cases, 'it works' and when it doesn't, there are still other options available. 'Here are the technical specs on what the Recover Database phases do. Q&A RECOVER PHASES: 1) Rebuilds CIT and Free Table. ( This is very low level checking ) (CIT is a technical term related to the basic unit of the file structure of Q&A, sort of like a block for a disk drive. I don't know what the letters stand for). 2) Rebuilds GDT and counts morphs ( If there are no print or report specs etc., it is almost instantaneous.) (GTD stands for Generation Descriptor Table. Morph stands for the Intermediate code that Q&A produces from the actual programming that is entered. This intermediate code is then used to create the final machine language instructions. 3) Rebuilds data indexes 4) Builds new lexicon 5) Reinstalls the lessons 6) Puts synonyms into the new lexicon. 7) Phases 7 & 8 are related to the Query Guide. 8) ' ' ' ' ' The first two are the critical ones. If you have a failure with either of them, then you are going to need to try using QEXTRACT on the database. Phases 4 through 8 are related to the Intelligent Assistant and Query Guide. If these are not being used, then those should skip by very quickly.' (per Lance Jacobs, Symantec Electronic Tech Support)"," "," "," "," "," "," "," "," "," " "userselect; xuserselect; USR; xusr; xuserselectr; xus; xusr; list; listing; pick list; picklist; 1380"," ","Is it possible to get a userlist from the current open database. In other words using the @fn to get a list. I haven't had any luck, any ideas. My point is the use the entries of a field to get my list. Well!!!","5",1380,22,"Feb 3, 1996","You can most certainly 'get a userlist from the current open database.' I would suggest using @XUSR (an external user select with a range). Here is a very 'basic' programming approach. NAME: <#50=@XUSR(@fn,'name','name','a','z') When you get to your name field, you will be presented with a list of all the names already in the database that start with the letter a through those that start with the letter z. There are MANY variations of this. You could, for example, provide the beginning and ending parameters in the field itself instead of in the programming. You could, of course provide 'conditions' as to when the statement executes, e.g. <#50: IF #50 = '' then #50 = @XUSR ... etc. The latter is particularly important because if you (1) already have a value in the field and then (2) escape without changing (or re-selecting) it, the field will be blanked (using the syntax I gave you). In any event, I hope this will 'get you started' and, of course, you'll find many more examples of 'variations' of this programming, right here in The Q&Answerman."," "," "," "," "," "," "," "," "," " "DaDa; error; message; error message; messages; error messages; 1381"," ","What, if anything, does the term DaDa stand for?"," ",1381, ,"Jan 20, 1996","According to a Symantec employee (Lance Jacobs): 'DADA stands for 'DaDa'. One of the Q&A programmers had a young child while he was writing the first release of Q&A, and the baby was always calling him 'Da Da'. So he then decided to put this word into the program. He could not figure out where, so he decided to add it to some error codes.' He further asserts: 'No kidding, here. This is a TRUE Q&A story.' Personally, I think this is wonderful! It is refreshing to think that something that sounds so innocuous, has such a wonderful touch of humanity woven into it."," "," "," "," "," "," "," "," "," " "report; subtotal; subtotals; total; totals; derived; column; derived column; total only; totals only; count; subcount; count only; don't repeat; repeat; bottom; bottom line; bottom only; 1382"," ","I've got a report that lists all the income in one column, and all the expenses in another, and totals at the end. I know I can go a derived column and get a running daily profit or loss, but I only want it at the bottom of the report-this may go for several (5-6) pages on a monthly basis, when I do the annual it will run 60-70 pages. Can I do it in Ver 5.0 dos?? BTW the income is in column 3 and expenses in column 5, but I can rearrange the columns."," ",1382, ,"Jan 20, 1996","I cannot figure out a way to have the net income appear ONLY on the same line as the totals. I can however place it at the very end immediately above the 'totals separator,' and, if you like repeat it either on the totals (or a separate) line. I hope that will be sufficient for your needs. First, I'm assuming that there is a column 1 that is probably a description of an 'account' or an item for which there is an income and an expense. Here's what I would suggest then (retaining your numbers): Description: #1,AS Income: 3,T Expenses: 5,T Two simple derived columns will 'finish it off.' Heading: Line!Number Formula No. 1 1 + #40 Column/Sort Spec: 40,I Heading: Net!Income Formula No. 2 @txt(@count(#40)=#40,@total(#3)-@total(#5)) Column/Sort Spec: 50,F(M) To have the net income repeated below the 'totals separator all you have to do is modify the final derived column sort spec to include a total, e.g.: 50,F(M),T Alternatively, you can place it on a line of its own by making two simple changes (instead of using 'total'). I would suggest that you change the column sort spec to include an 'average label' (and change it's name), e.g.: 1,AS,AL(Net Income) and modify the final derived column sort spec to include an 'average' of the net income, e.g.: 50,F(M),A By the way I purposely left gaps in the numbering sequence so that you could convert to multiples of ten, if you like, and something I strongly recommend. This provides much greater flexibility, should you want to add columns later. Also, this report should work just as well if there is no column '1' and/or if you are still using version 4.0. I hope that this information is helpful and that you are pleased with the results. Good luck!"," "," "," "," "," "," "," "," "," " "Bitmap; Bitmap.EXE; BMP; .BMP; .PCX; PCX; image; images; picture; pictures; graph; graphic; graphics; dos; command; line; prompt; dos command; command line; dos command line; command prompt; dos command prompt; 1383"," ","With reference to bitmap.exe the QA5 'Getting Started' manual states on pg. 3-12 that: You can use this program at the DOS command prompt, giving it the name of Q&A database file you want to browse. For example: bitmap.exe staff.dtf As far as I can tell this is not correct. Bitmap.exe wants the name of an image file on the command line. Is there a way to browse pictures in a database from the DOS command line?","5",1383, ,"Jan 25, 1996","The BITMAP.EXE command will definitely work from a DOS command line. (I just tried it and 'yup,' it's still working ). I have a feeling that your problem lies in one of two areas. Either you have a syntax error or a 'path' error. Let me first give you the syntax and then point out a few of the more likely mistakes we are liable to make. I suggest that you try the employee.dtf - which should be in the sample subdirectory - because we know that the pictures are properly installed there. Here's the syntax FROM the QA subdirectory which is where my BITMAP.EXE program is installed. C:\qa>bitmap.exe c:\qa\sample\employee.dtf You can shorten this in several ways. One is to omit the '.exe' resulting in: C:\qa>bitmap c:\qa\sample\employee.dtf Another - providing your database is in the same path as your bitmap.exe file is to simply delineate any further subdirectories. Staying with the above scenario, you could shorten your statement to: C:\qa>bitmap sample\employee.dtf So, you must start from the subdirectory where the BITMAP.EXE file exists and provide sufficient path information to find the database. Another common mistake is to omit the .DTF portion of the filename (since so many of us do that when we are working within Q&A). DO NOT leave out the .dtf portion of the database C:\qa>bitmap c:\qa\sample\employee for example - will give you the following error message 'Unknown image format... Program canceled!' If you installed your program - accepting the default directories - then replace QA (in my examples) with QADOS50. Once you get this much accomplished, you'll open up many opportunities by combining it either with the use of external programs and or macros."," "," "," "," "," "," "," "," "," " "@shell; shell; shelling; shell out; shelling out; out; external; launch; launch external program; program; value; values; copy; transfer; bring; take; parameter; parameters; %; %f; %g; %h; variable; variables; pass; passing; pass variable; pass variables; passing a variable; passing variables; 1384"," ","I've been trying to use the @shell function, but I'm not getting the expected results. Perhaps you can shed some light on this for me. When I program a field as shown in the programming manual: >#2: @shell('c:\qa\qa') I get a 'not valid programming' error when trying to save the field. If I type >#2 = @shell('C:\qa\qa') it works and returns a 0 to field #2 when I exit the shelled copy of Q&A. It seems like the first example ought to work, and anyway I don't always want to return an exit code to a field. Also, if I want to pass on one of the variable parameters to Q&A with the @shell function it doesn't seem to work. #2 = @shell('c:\qa\qa %g') doesn't load Q&A with the variable file like it does when using the External program menu. From what I read in the manual, it seems like it should. I want to pass a unique number, so that I can print a document and use the number as a retrieve spec. I'll be interested to hear your advice about this.","5",1384, ,"Mar 2, 1996","I was hoping that I could beat you to the punch (only I didn't know it would be you and I'll bet you didn't know I was expecting this). I, too, have experienced similar occurrences with @shell. I was hoping to research it further BEFORE the question was asked. So, I'm going to give you the answer in two parts. My 'here's what I've got so far,' which I'll share with you now. Then, I hope I can find time in the near future to explore this further. >> >#2: @shell('c:\qa\qa') I get a 'not valid programming' error when trying to save the field. << I get the same response and have modified my programming the same way you have. >> If I type >#2 = @shell('C:\qa\qa') it works and returns a 0 to field #2 when I exit the shelled copy of Q&A. << Once again, I made the same modification and get the same results. Here's a technique I use that you might want to try to avoid the troublesome 'returned value.'. Even though you want to shell out of field #2, you can direct the value to another field, e.g. FIELD:> #2: #999 = @SHELL etc. Field number 999 can be hidden anywhere and made read only so it will never be accessed. Also, you can also easily add a ;Clear(#999) statement, if you like. This may or may not be the 'final word' but (in the meantime) it is a way to complete the programming, have the @shell function work and not be troubled by the returned value. As far as I know, you cannot pass the variable parameters (%f, %g, %h) with the @shell function. I believe it will only work when using the External program menu. It's very easy to use with external programs, however, because you can simply create a macro to call up the menu and make your selection. Then you can execute the operation from any field in the database with a simple @macro statement. One reason I think the parameters don't work with @shell is that they are described on page 3-8 of the Getting Started Manual which only refers to Launching External Programs. Page 69 and 70 of the Application Programming Tools Manual, on the other hand, refers to passing a value of a field with @shell, but in this regard I believe this means that you can pass the value of a field to the command line itself. For example: FIELDA: #10 FIELDB: >#20: #900 = @shell('c:\qa\qa '+ #10); clear(#900) FIELDC: #900 Now, when you're in a form and you exit field #20 @shell will execute with the command line in the statement PLUS whatever value you have in field number 10. If for example the value in field #10 is: -ALREPORTS.MAC -M1' then Q&A will execute AND will AutoLoad the REPORTS.MAC macro file AND will execute the macro defined (within the Reports.Mac macro file) as Alt1. I think you can see the incredible power because field #10 could be a 'pick list' that could start Q&A (or another program, of course) with any macro file and any autostart macro. The possibilities are mind-boggling. There is, however, another very simply solution for 'passing variables' between different 'sessions' of Q&A. Simply create any 'junk' document. Call it 'variable' or whatever. Before 'shelling out,' simply use the field editor to save the record number to this 'Variable' document. (If the field is formatted as (N)umeric, you could always create an 'echo' (T)ext field for the purpose of using the field editor). Now, when you are at the retrieve spec in the next copy of Q&A, simply insert the 'Variable' document into the appropriate field. Another option to consider, however, is to not even shell out. Why not just use the clipboard to (1) copy the number, (2) save the form, (3) open the document (4) print it - using F12 to paste the number into the retrieve spec, (5) Search the database (once again pasting the number as a retrieve spec) - to return to the original form. I apologize if my answer sounds a little 'iffy,' but I believe (and hope) I've provided you with some helpful information. I'm sure we'll be expanding on this and all the other new available functions as we gain more experience and learn more 'tricks.' So, good luck. I hope this helps!"," "," ","You will find documentation on @SHELL in the Application Programming Tools Manual, page 69 - and documentatioon on LAUNCHING EXTERNAL PROGRAMS in the Getting Started Manual, page 3-8."," "," "," "," "," "," " "file; size; compress; compress file; file size; compress files; reclaim; reclaim space; space; copy; database; copy database; backup database; restore; restore database; wasted; wasted space; recover; recover space; recovery; use; use space; dead; dead space; 1385"," ","Following a recent problem with a network, I have just had cause to run 'Recover Database' following a total lock-up of the system. The recovery was successful, and I have been unable to find any problems, but the .DTF and .IDX files for the particular database now only occupy about 70% of the space previously needed. Is this normal? (Despite having used Q&A versions from 2.0 onwards, I have never looked at the file size after 'Recover' before, also I have only used 'Recover' on a stand-alone system before)."," ",1385, ,"Jan 24, 1996","You're in good shape and Q&A did exactly what it's supposed to. Q&A does not 'pre-allocate' space for your database; files are simply expanded as needed. When you delete records, Q&A 'marks' the space as being available for future use but does not 'free' it from the database. So, in normal use the file will general stay the same .. or grow in size but will not 'shrink.' When you run 'Recover' Q&A Q&A gets rid of the wasted space (as well as repairing other problems if necessary). For this reason, by the way, it's a good idea to run 'recover' on a recurring basis. I always enjoy highlighting the name of the 'recovered' file and comparing it to the size of the 'original' file (as you apparently did) .... so I can see the savings in disk space. I hope this information is helpful and wish you good luck!"," "," "," "," "," "," "," "," "," " "function; key; function key; keys; function keys; F7; Alt/F7; AltF7; restricted; restricted field; restricted spec; field; spec; popup; pop-up; picklist; pick list; pick-list; 1386"," ","Is there a command in 5.0 which will automatically or conditionally popup the Alt-F7 combination for selection from a specified and editable list. I would like to use this rather than @US etc. commands when I have a field which may require changes to the list. Is this a matter for @MACRO?","5",1386, ,"Jan 28, 1996","When I first started 'playing' with version 5.0, I assumed there would be a 'built-in' method for having a restricted list automatically appear. There isn't. You're right! @macro to the rescue (for just about anything). I have found that the simplest solution (at least for me) is to define function keys as a macro of the same name. AltF7 is a perfect example. Just press Shift/F2, (D)efine Macro, Alt/F7, (Y)es, Alt/F7, Shift/F2, F10 and enter to save it to the appropriate macro file. From now on, when you press Alt/F7, guess what? It will behave as it always did. (In this case, it will provide you a 'picklist' of your restricted field specs). AND, IN ADDITION, you can now use it very easily in a macro: SHIP VIA: <#230:@macro('') is all it takes to have your picklist appear as you enter the field. Please take note of the format when referring to the function key macro because it must both be in quotes and contain the brackets. I find this incredibly convenient because you don't have to create special macro names and you can now execute any function key (so defined) as a macro."," "," "," "," "," "," "," "," "," " "restrict; restricted; restrition; restric spec; restriction spec; spec; !; exclamation; exclamation point; literal; literal character; mandatory; field; mandatory field; require; required; requirement; required field; 1387"," ","In a restricted field, I have a problem when I try to F10 to the next record. I locked up for a long time and I had to Escape out. I tracked the problem down to the restrict spec in file customize. In various fields I had use a spec something like this !;Phoenix;Mesa;Tempe The ! makes the field a required field in Qa4. It prevents the user from leaving the record if there is such a field with a missing value. A value must be filled in that field in order for the record to be saved. However in QA5, no value is recognized as a valid value if it is preceded by the ! so I removed the ! and everything works fine. However, now what do we do if we want to force a field to be filled in.","5",1387, ,"Feb 7, 1996","You may be surprised to learn that you had been using an incorrect format, in the restricted field, all along. So, if it worked in Q&A 4.0 THAT was pure luck, I would imagine (or, perhaps, a flaw in 4.0 that was fixed in 5.0). I can tell you that I never had a problem in either version. Simply remove the semicolon after the exclamation point so that it appears as: !Phoenix;Mesa;Tempe I tested it and it works fine. It expects and accepts the appropriate values and will not allow you to leave the field blank. In support of my hypothesis, if you look at the example in page 3-25 of the Q&A DOS 4.0 User Manual, you'll see that the example they show reads as: CITY: !Phoenix;Tucson I hope this information is helpful and that the minor modification has you 'back in business.' Good luck!"," "," "," "," "," ","x"," "," "," " "Suffix; Jr; Jr.; Sr; Sr.; Last Name; Strip; Remove; Copy; Partial; 1388"," ","I have a little puzzle that if solved may just make this a true data entry persons dream. We need to have Jr. and Sr. deleted as they are transported into a salutation field. Example template is - ID: SALUTATION: TITLE: FNAME: LNAME: So we type in the field LNAME: Jones, Jr. Now 'Jones, Jr.' gets copied to the salutation field as 'Jones, Jr.', but instead of that we need it to say 'Jones' only in the salutation field. I've tried to use the left and right programming but I can't seem to get it to work. If someone out there knows how to do this I would appreciate any help very much. Thanks!!"," ",1388, ,"Jan 30, 1996","Let me first suggest the following solution, using the fields you already have: LNAME: #110 SALUTATION: <#120 IF @INSTR(#110,', JR.') OR @INSTR(#110,', SR.') THEN #120 = @LT(#110,@INSTR(#110,',')-1) ELSE #120 = #110; CNEXT This will leave the Last name field as it is (e.g. Jones, Jr.) and will place only the last name (e.g. Jones) in the Salutation field. The cursor will skip the Salutation field and go to the next form in your record. This does not, however, solve all your problems. What about last names that have III or Esq. or M.D., etc. My suggestion is that you create a separate field for a 'Suffix' and enter Jr. Sr., III, etc. in that field. When you need the full name, then just as you are probably now joining the first and last name together, you can easily join the first and last name AND (when appropriate) the 'suffix' field. Whichever way you decide to go, I hope this information is helpful and wish you good luck."," "," "," "," "," ","X"," "," "," " "clipboard; cut; copy; paste; transfer; transfer info; info; information; field; fields; several fields; F11; F12; F11/F12; 1389"," ","Just received my 5.0 and the startup guide is very sketchy about F11 'Copy to Clipboard.' I want to copy several fields and transfer them to Write, but I can only copy one field at a time into the clipboard. If I transfer to the next field and copy, the previous field is flushed out and replaced by the new field. Am I missing something, or can the clipboard only handle one entry at a time? If so it doesn't seem to help very much in transfer of multiple fields.","5",1389, ,"Jan 30, 1996","You're right in concluding that 'the clipboard can only handle one entry at a time.' As far as I know, that's even true of Windows programs. I've never come across any option that would allow me to 'append' information to a clipboard. There are, of course, several ways to accomplish what you want. One would be to use a print spec. The way the clipboard could serve in this regard would be to create a macro that would (1) copy a unique record identifier to the clipboard (2) leave the form and go to a pre-saved print spec, (3) paste (into the retrieve spec) the record identifier, (4) print to disk (5) paste the record identifier into a retrieve spec to return (if desired) to the form you started from. Another alternative might be to simply use an empty text field within the form itself to 'collect' the information you want to 'transfer.' You could (1) paste (F11) one field into the clipboard, (2) open the field editor for the 'collection' field and go to the end, and (3) copy (F12) the information. You could repeat the process as often as necessary to 'collect' all the info you wish to transfer. (If these are 'standard' fields, you could create a macro to automate the process). Then you could simply use Ctrl/F5 to save the info as a document (which you could later import to another document if you wish) OR you could copy and paste (F11/F12) that one complete field. I'm certain there are many other ways that you could accomplish your ultimate objective. I hope that what I have suggested will either 'fit the bill' or will help you generate some alternatives of your own. Good luck!"," "," "," "," "," "," "," "," "," " "picture; pictures; field; field; picture field; picture fields; bitmap; b; i; image; change; format; formats; picture format; change format; change picture format; 1390"," ","I have a problem. I want to change a field from a picture format and I don't know how to do this. I tried all tricks and nothing works. I have already spent too much time on this. Please help me with an idea.","5",1390, ,"Feb 5, 1996","As far as I know, once you create a picture field, there is no way that you can access that field on the format spec screen. The fact that you say you want to change it, however, is an indication that you no longer wish to associate any pictures with it. If that is the case you can change it very easily by redesigning the database. PLEASE, make a backup before you start, just in case something goes wrong. From the Main menu, select (F)ile, (D)esign file, (R)edesign a file (filename). Then to REMOVE the field completely, just remove the field label and the letters that Q&A assigned to it. If it looks like: Picture:Ac then you would simply remove both the label (including the colon) and the letters Ac If, on the other hand you want to keep the field label, then (be sure to leave the colon, and) just remove the letters (Ac in this example) assigned by Q&A. When you press F10 to save this change, Q&A will automatically assign a (T)ext format to the field."," "," "," "," "," ","X"," "," "," " "zero; zeros; lead; leading; leading zero; leading zeros; text; text field; remove; delete; strip; 1391"," ","I'm trying to take out the leading zeros from a field which contains house numbers in Queens, NY. The problem is that as you know, they contain a - between numbers, so simply changing the field to a number field and mass updating won't help. How can I get rid of these zeros?"," ",1391, ,"Feb 1, 1996","I assume that you're referring to a street address field that might have an entry such as: Address: 0058-05 76th Street If so, the only suggestion I could make would be to do successive mass updates by first searching for any field that starts with a zero, e.g. Address: 0.. and using a mass update spec, something like: Address: #1 = @mid(#1,2,100) This will change the field to whatever starts in the second position of the field and continues for 100 characters. (The 100 should simply be a number longer than the longest record in that field). Just keep repeating the process until 'no more records are found.' --------------------------------------------- Here's a better alternative which will do the whole job in one mass update (recommended by Joe Bryant) For the Mass Update retrieve All records. Update Spec... Address: #1: if @lt(#1,3)='000' then #1=@del(#1,1,3); if @lt(#1,2)='00' then #1=@del(#1,1,2); if @lt(#1,1)='0' then #1=@del(#1,1,1) When you have typed the spec select Shft F8 to save it, then run. Next time the specs will already be in place. (I assume a maximum of 3 zeros leading, if there could be more or less, adjust the above accordingly.)"," "," "," "," "," ","X"," "," "," " "WinCim; CServe; CompuServe; Auto; Pilot; Autopilot; Auto-Pilot; Auto Pilot; Retrieve; Retrieval; Retrieve Message; Retrieve messages; retrieve mail; mail; send; send mail; send message; send messages; send forum messages; forum; forum messages; automatic; automatically; 1392"," ","I'm looking for a way to use WinCim ... to 'automatically' retrieve messages from two forums and my mail. Is there any utility type program that will do this?","M",1392, ,"Feb 7, 1996","Thanks to some input from another Q&A'er (John Lloyd of England) I have learned about a wonderful - yet for some reason - 'hidden' feature of WinCim called 'Auto Pilot' that does just that. It's hard for me to believe that software would contain a feature that is intentionally hidden, but that seems to be the case. (I'm told that this same feature is available in Cim for OS2). There is some speculation that there have been some 'problems' running the program (and, perhaps, this is one reason it is not 'advertised'). I have used it on quite a few occasions now, and have NOT experienced any difficulty. I just want to be sure that you realize you might be 'taking a chance.' As far as I know CompuServe does NOT support this feature. Before going any further please take note of this: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ WARNING - AUTOPILOT (A 'caution' from Alec Mulvey) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Today, for the first time in over 2 years, I have experienced filing cabinet corruption (as warned about in the Auto Pilot help file). Coincidence ? ? ? I have rebuilt my cabinet indexes. And my reply: ~~~~~~~~~~~~ You never know. It might just be a coincidence given all the work that is going on in the forum. I had started getting many 'incorrect response packet' messages, recently, BEFORE I installed Auto-Pilot. As for the filing cabinets, I've already been in the habit of 'rebuilding the cabinet indexes' frequently -- much the same as I do with 'recovering' Q&A databases periodically. I have not had any problem with the filing cabinets since installing auto-pilot. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ And now, perhaps the strongest caution direct from CompuServe: ============================from SYSOP of CompuServe DOSCIM forum======= Subj: Auto Pilot in DOSCIM? Section: From: David Herriott [TSS] 111111,303 # 405561, * No Replies * To: Bob Buckland 75214,226 Date: 05-Feb-96 19:53 Bob, There is no Auto Pilot Feature for DOSCIM. Autopilot was a featured that was being developed for WinCIM, but the developers decided to go with CSNav instead. The Autopilot feature is something that is not completed or supported by CompuServe. It has been known to cause damage to people's systems. I would recommend that you stay away from it. If you have any more questions, please let me know or post them to SYSOP. -David [Sysop] ==================================end quote ====================== Having done my duty regarding 'a word to the wise .... ' here's the remaining information I would like to share: There is a 'help file' that someone contributed to a library that provides information about this feature. To access it, just do the following: GO WINUSER Click on the Library Search Icon Search for keyword 'Autopilot' The file is called PILOT.ZIP (The file is in the CIS Win Addons (Section 12); however, it's 'way down on the list' and I found that I can retrieve it faster by searching for it). It will (PK)Unzip to a Windows help file (PILOT.HLP) which provides information needed to run auto-pilot. Whoever, wrote it certainly has a sense of humor, so you might want to download it for 'amusement' if for no other reason. However, you really don't need the help file at all and it is not 'interactive' (as far as I can see) either with WinCim or Auto-Pilot. If you want to try this out (at your own risk ), just use Q&A Write. Go into CServe, WinCim and retrieve the Win.Ini file. Go to the end of the section '[General Preferences]' and add the line: Auto-Pilot=On Save it (Ctrl/F8) as an ASCII text file. The next time you open WinCim, click on the 'Special' menu and when it drops down, you'll see that 'Auto Pilot'is now available for use. (Help - in the dialogue box does NOT work). Here are some step-by-step instructions to set up a 'task set' of your own to 'run your errands.' 1. Click on 'Special' and from the drop down menu, click on 'Auto Pilot' to open a special dialogue box. (A task set 'Interactively Marked Items' will be listed. I'm sorry but I do not understand how this works. I don't seem to be able to change it - other than to delete everything listed in it). 2. Click on 'Setup' You'll get another dialogue box where you enter the 'Name of New Set.' (I called mine 'Symantec Applications'). Click on 'OK.' 3. You'll see the name of your Task set on the left of the screen and space for a task list. On the right Mail is listed as Service Choices and below that two options: (1) Get New Mail and (2) Send Mail From Out-Box). Click on the two boxes next to Mail. An x will appear and the two items will be added to the task list. 4. Now click on the 'down triangle' in the Service Choices box ... and the names of forums you have been accessing will appear. Click on the Forum Section name (Symantec DOS & OS/2 (for example) and now the sections will appear in the space below that. 5. Click on a box next to a SECTION you want (Q&A 4.0 & 5.0 DOS, for example) An X will appear and that section will now be included in the Task List. 6. Continue this process to add as many forum sections as you like. I, for example, continued by selecting Symantec Win 3.1 forum and selected the Q&A Windows section. 7. Now, underneath your task list, click on send Forum Messages. Another entry will be made to your task list: 'Mail ... Send Forum Messages' 8. Click on 'OK' and you should now see 'Symantec Applications' listed as a task set. Click on it. Click on 'begin' and it will start working. (Optionally, before clicking on 'begin,' you can - if you like - click on 'Disconnect when done' and WinCim will exit from CompuServe. Personally I, like to stay connected [remember, you're in the 'free' area], so I can roam the forum. If you're paying long-distance charges for the connection, however, this is certainly a handy feature). 9. Whenever you want to use it from now on (even before you sign on to CompuServe, click on Special, click on Auto-Pilot, (you may need to click - 'to omit' - Interactively Marked Items -- I'm not sure), Click on Symantec Applications, Click on 'Begin' and Auto-pilot will now. Send your outgoing mail Send your outgoing forum messages (to each forum you selected) Retrieve all forum messages (from each forum section you selected Leave you sitting in CompuServe in the 'free' area 10. I put an icon on my tool bar to replace clicking on Special and Auto-Pilot. To do this, just click on Special, Preferences, Ribbon. Click on an icon of your choosing and click on auto-pilot. Finally click on the icon you are willing to replace. (Naturally take one you don't use frequently). Click on OK. From now on, you can click on the icon to be presented with the auto-pilot dialogue box. When you create a task set, by the way, it is stored in the support subdirectory of your WinCim directory. I found mine, for example in CSERVE/SUPPORT with a file name (ending in .SES) of W0000002.SES If you remove these files, Auto Pilot will revert to the default setting. I hope this information is helpful and wish you success with this new tool. If you enjoy it half as much as I do, you will be 'thrilled.'"," "," "," "," "," "," "," "," "," " "install; installation; problem; error; installation problem; installation error; 5.0 installation; 5.0 installation error; 5.0; read only; attrib; 1393"," ","False Starts Installing Q&A 5.0 I'm having a problem installing version 5.0. I get a message that it can't copy the QA1.EXE file. I tried to 'ignore' the message and continue with the installation but then Q& would come up as version 4.0. I'm totally confused.","5",1393, ,"Feb 2, 1996","If you encounter a problem installing Q&A 5.0, you will most likely encounter another problem if you try to start the installation program over again. I don't know if this holds true in every case, but I can tell you it happened to two of my clients within a week. In one case, someone tried installing 5.0 on a network while Q&A was in use and was presented with a 'share violation.' Then, when they went to start the installation over, they got a message saying there was an 'error in copying the QA1.EXE file.' As it turns out, the installation program had created a QA1.EXE file on the hard drive and then made it 'read only.' Even though the QA1.EXE file was not properly installed, it could no longer be overwritten. (I know that once you install a network pack, the QA1.EXE file is always made read only). The fact that you were able to start Q&A, but it came up as version 4.0, tells me that you installed it over your existing program. Had you installed it to a new subdirectory, you would not have been able to start it at all. The solution (in either case) is simple. Just go to a DOS prompt and type Attrib -R QA1.EXE (Depending on how your system is set up, you may need a full path statement. For example, on one network computer, I could only execute the attrib command from C:\DOS, so I had to type the full path to the QA1.EXE file, i.e.: Attrib -R F:\QA\QA1.EXE This is a DOS command that will remove the 'read only' restriction on the file and you should now be able to reinstall Q&A. (Another Q&A user - Michael Schein - points out that, if you are already in the Q&A subdirectory, you can simply use the full path to locate the attrib command itself, with: C:\DOS\ATTRIB QA1.EXE -R"," "," "," "," "," "," "," "," "," " "Label; Labels; Mail; Mailing; Mailing Labels; print; printing; print label; print labels; printing labels; memory; not enough; not enough memory; 5; 5.0; bug; flaw; error; emm; emm386; 386; emm 386; ems; xms; 1292; 1394"," ","This will be a PRIMER on DOS, EMM386.EXE and HIMEM.SYS and will be lengthy - so bear with me.","5",1394,27,"Feb 11, 1996","The following message was posted in the Q&A DOS Section of the SYMDOS forum on CompuServe by Ofer Shimrat, an extremely talented Q&A enthusiast and 'co' section leader. I'm including the message verbatim, because - on a personal level - it is way above my head: 'Greetings ALL users of Q&A 5.0 and Q&A 4.0: This will be a PRIMER on DOS, EMM386.EXE and HIMEM.SYS and will be lengthy - so bear with me - perhaps SAVE this to file or PRINT it for future reference. I have been following the threads lately regarding NOT ENOUGH MEMORY and Labels and EXPANDED memory ... etc and today I even spoke with Spencer over the phone as he was helping someone else using pcANYWHERE - so I thought that this message will be timely. I first want to cover EXPANDED memory, and then EXTENDED memory. Before you start - BACKUP your CONFIG.SYS file in a safe place - (i.e. - one backup to diskette and one to hard drive). Since most of the databases in Q&A 4.0 (and soon to start in 5.0) I design for my clients are rather complex and involve multiple mail-merge documents via menu/macro systems, as a habit I ALWAYS have EXPANDED memory invoked in CONFIG.SYS. Remember that your CD player using MSCDEX and certain fax/modems ALSO use EXPANDED memory. To optimize the amount of EXPANDED memory in your system below are 2 SAFE scenarios that should yield MAXIMUM amounts of UMB's: Standing assumption is that you have DOS 6.0 or higher and that you are NOT using HIGHSCAN with EMM386.EXE in CONFIG.SYS (that is another story entirely). <1> If you own any 386 or most 486's DESKTOP (not laptops) then the first 3 lines of CONFIG.SYS should look like this:: DEVICE=C:\DOS\HIMEM.SYS /V DEVICE=C:\DOS\EMM386.EXE RAM 256 I=D800-F7FF VERBOSE DOS=HIGH,UMB This will yield approximately 122 k of HIGH MEMORY - which is sufficient for MOST applications (including networks) to load high - AND you WILL have up to 256 k of EXPANDED memory for Q&A to use ! - You will then NEVER get an out of memory message. <2> If you own any Pentium or IBM Microchannel computer the first 3 lines of CONFIG.SYS should look like this:: DEVICE=C:\DOS\HIMEM.SYS /V DEVICE=C:\DOS\EMM386.EXE RAM 256 I=D800-EFFF VERBOSE DOS=HIGH,UMB This will yield approximately 90 k of HIGH MEMORY - which is again, sufficient for MOST applications (including networks) to load high - Do NOT run item <1> above on a Pentium - your computer will FREEZE when you reboot. Remember , try the above ONLY if you have DOS 6.0 or higher - if for ANY reason YOUR particular computer freezes after rebooting with the new settings in CONFIG.SYS then: <1> reboot again <2>simply press F5 IMMEDIATELY after you see the 'Starting MS-DOS' line after the RAM count check - that will BYPASS the CONFIG.SYS and AUTOEXEC.BAT files (a 'clean boot') and take you to a C:\ prompt <3> Restore your backup copy of CONFIG.SYS and reboot again. If you have DOS 5.0, then simply make a bootable system floppy diskette using the FORMAT /S command and if for some reason the above settings do NOT work, you will have the bootable floppy from which to recover from a freeze and return to your previous settings. OK, on to the other kind of memory - If you INSIST on NOT having EXPANDED memory and ONLY want EXTENDED memory then your generic CONFIG.SYS should look something like this: DEVICE=C:\DOS\HIMEM.SYS /V DEVICE=C:\DOS\EMM386.EXE NOEMS I=D800-EFFF VERBOSE DOS=HIGH,UMB On 386 and 486 machines this should yield up to 185 k of UPPER memory - on Pentiums it may yield up to 156 k of UPPER memory. However, in certain Q&A tasks you WILL get OUT OF MEMORY messages because you do NOT have EXPANDED memory invoked. It seems that on SOME machines with Version 5.0 - doing a simple mail merge with NOEMS will yield an OUT OF MEMORY message and on OTHER machines it will NOT. Therefore, I have done some testing with different machines that belong to my clients and on SOME machines, tweaking the HIMEM.SYS command line DOES, in certain situations, alleviate the problem. HIMEM.SYS is an extended-memory manager program that coordinates the use of your computer's extended memory, including the high memory area (HMA), so that no two applications or device drivers use the same memory at the same time. You can specifically use numerous switches with HIMEM.SYS - you can also tell it what sort of machine YOU have in case YOUR hardware is slightly different than the default so it can tweak itself into allowing more memory. In most cases, you won't need to specify command-line options. The default values for HIMEM.SYS are designed to work with most hardware. As I mentioned, USUALLY, HIMEM.SYS can detect your computer type successfully. On such systems, HIMEM.SYS uses the default system type (IBM AT or compatible). HOWEVER, there are a few computers that HIMEM.SYS cannot detect. For example, systems that REQUIRE this option include Acer 1100, Wyse, and IBM 7552 model computers. Therefore, you might need to include the /MACHINE option following the HIMEM.SYS command if your computer is a type that HIMEM.SYS cannot detect and if HIMEM.SYS does not work properly on your system by using the default system type. The SYNTAX for HIMEM.SYS and MACHINE is as follows: C:\DOS\HIMEM.SYS /V /MACHINE:xxxx where xxxx is a code for one of the following computer types: Code Number Computer type ________________________________________________________________ at 1 IBM AT or 100% compatible ps2 2 IBM PS/2 ptlcascade 3 Phoenix Cascade BIOS hpvectra 4 HP Vectra (A & A+) att6300plus 5 AT&T 6300 Plus acer1100 6 Acer 1100 toshiba 7 Toshiba 1600 & 1200XE wyse 8 Wyse 12.5 Mhz 286 tulip 9 Tulip SX zenith 10 Zenith ZBIOS at1 11 IBM PC/AT (alternative delay) at2 12 IBM PC/AT (alternative delay) css 12 CSS Labs at3 13 IBM PC/AT (alternative delay) philips 13 Philips fasthp 14 HP Vectra ibm7552 15 IBM 7552 Industrial Computer bullmicral 16 Bull Micral 60 dell 17 Dell XBIOS So if for example you own a DELL computer (and who doesn't), then your HIMEM.SYS would look something like: C:\DOS\HIMEM.SYS /V /MACHINE:17 or if for example you own a machine with a PHOENIX cascade BIOS (look at it when first rebooting) then your HIMEM.SYS would look something like: C:\DOS\HIMEM.SYS /V /MACHINE:3 ... etc ... Other switches to consider for HIMEM.SYS in DOS 6.0 or above are listed as follows (from the DOS manual - ): /HMAMIN=m Specifies how many kilobytes of memory an application must require for HIMEM to give that application use of the HMA. Only one application can use the HMA at a time; HIMEM allocates the HMA to the first application that meets the memory-use requirements set by this option. You can specify a value from 0 to 63. Set /HMAMIN to the amount of memory required by the application that uses the most HMA memory. The /HMAMIN option is not required; the default value is zero. Omitting this option (or setting it to zero) specifies that HIMEM allocate the HMA to the first application that requests it, regardless of how much of the HMA the application is going to use. Keep in mind that the /HMAMIN option has no effect when Windows is running in 386 enhanced mode. /INT15=xxxx Allocates the amount of extended memory (in kilobytes) to be reserved for the Interrupt 15h interface. Some older applications use the Interrupt 15h interface to allocate extended memory rather than using the XMS method provided by HIMEM.SYS. If you use these applications, you can ensure enough memory is available to them by setting xxxx to 64 KB larger than the amount required by the application. You can specify a value from 64 to 65535; however, you cannot specify more memory than your system has available. If you specify a value less than 64, the value becomes 0. The default value is 0. /NUMHANDLES=n Specifies the maximum number of extended-memory block (EMB) handles that can be used simultaneously. You can specify a value from 1 to 128; the default value is 32. Each additional handle requires an additional 6 bytes of memory. Keep in mind that the /NUMHANDLES option has no effect when Windows is running in 386 enhanced mode. WHEW !!!!! I could elaborate further on this but I think this is sufficient. The WHOLE purpose of me writing this is, AT LEAST in the case of the DELL computer and the HP Vectra where I encountered this problem in Q&A Version 5.0 the situation was rectified when I inserted this command: On the DELL: C:\DOS\HIMEM.SYS /V /MACHINE:17 /NUMHANDLES=128 /INT15=256 On the HP: C:\DOS\HIMEM.SYS /V /MACHINE:4 /NUMHANDLES=128 /INT15=256 In NEITHER machine did I experience a problem in DOS - In Windows both machines were running a good video card but were set to 16 colors and generic VGA - I did NOT test these settings with high end video cards or with higher resolution in video. To conclude, I hope the above information is of assistance to those of you that like to tweak your systems. For the rest of you that do NOT like to tweak it (I suspect the majority) of you, then use EXPANDED memory with a generic HIMEM.SYS as detailed in the beginning of this message. REMEMBER that BEFORE you attempt to do this make sure and BACKUP your original CONFIG.SYS. Feel free to post me a message if you have any further questions. Best Regards. Ofer Shimrat SECTION LEADER Q&A for Dos Q&A for Windows and once in a while DOS enthusiast !'"," "," "," "," "," "," "," "," "," " "clipboard; paste; copy; f12; f11; problem; 1395"," ","I have a MASTER.DTF file covering highlights of 5 years of files. I search in the master, find the file number I want, then go into the original database that is named by the year of the data (eg. 1995.dtf, 1994.dtf, etc.) I've been trying to put a button on my MASTER.dtf that will go automatically into the right file. The problem I am having is getting the clipboard to paste the year into the SEARCH FILENAME field. I can get the year into the clipboard but when I push F12 it won't paste. Any hot ideas? I'm all ears! Thanks for any help you can give me.","5",1395, ,"Feb 2, 1996","Are you by any chance 'shelling out' (either using @shell or the external programs menu)? If so, you cannot use the clipboard between two different versions of Q&A and that would explain your difficulty. (If this is what you are doing, there ARE ways to 'transfer' the information by use of external programs - also discussed in this database). It also occurs to me that, perhaps, you are trying to 'paste' the 'year' (from the clipboard) into the MENU dialogue box ... for example, after selecting 'File,' 'Search' and accessing the box that requests a file name. If this is the case - Sorry! - (as far as I can tell) you cannot paste into that area. Once again, there would be other viable solutions you could use to accomplish this, probably using @macro."," "," "," "," "," "," "," "," "," " "message; messages; message box; messagebox; box; @message;; 1396"," "," "," ",1396, ,"Feb 2, 1996"," "," "," "," "," "," "," "," "," "," " "message; messages; message box; box; messagebox; @message; @message box; @messagebox; 1397"," ","I would like to use the new @messagebox command to provide a few different cautionary user messages to appear. Can you give me an example of the syntax?","5",1397, ,"Feb 2, 1996","Here's a simple example of @msgbox: >#308:@MSGBOX('ENTER UP TO 45 CHARACTERS FOR LINE 1','ENTER 45 CHARACTERS FOR LINE 2','') You simply provide the command and then the message for each of the 3 lines -- between the quotes. If you wish to leave one of the lines blank, just be sure to inlcude the double quote. Q&A expects and looks for 3 sets of quotes -- even if one or more of them does not hold any information. Now if you want to go 'crazy,' you can combine xlookups in your message, string messages together, and even flip-flop with the old '@message' line on the bottom of the screen. Here's an example: >#308: @MSGBOX('NOW ALL THERE IS IN THE ACCOUNT',' OF '+#255, ' IS $' + @XLU('TESTLK-A',#255,'NAME','BALANCE')); @MSGBOX('BUT I'M SURE GETTING RICHER BY THE MINUTE','',''); @MSGBOX('I GUESS YOU'VE SEEN THAT YOU CAN STRING AS', 'MANY MESSAGES AS YOU LIKE - IN ONE FIELD.', 'ISN'T THAT ENOUGH TO BLOW YOUR MIND !!#@#@@!'); @MSG('WE CAN SILL ONLY HAVE ONE @MESSAGE AT A TIME -- BUT WHO CARES!!'); @MSGBOX('ESPECIALLY, WHEN WE CAN COMBINE IT WITH', 'OUR OLD @MESSAGE','(LOOK BELOW IF YOU DON'T BELIEVE ME)'); @MSG('BY COMBINING AND FLIP-FLOPPING WE COULD BE HERE ALL DAY'); @MSGBOX(' *********** ENOUGH ALREADY! *************','','') (Hey, you asked! )"," "," "," "," "," "," "," "," "," " "userselect; xuserselect; USR; xusr; xuserselectr; xus; xusr; list; listing; pick list; picklist; speed; slow; 1398"," ","I am able to use the new xuserselect function to get a listing of all the names in my current open database. The problem is that it takes far to long to get the list. I love the feature but is there anything I can do to speed up the process?","5",1398,22,"Feb 3, 1996","You probably can if you're willing to type a letter or two to get the list. Let's look at how it works: Using the 'standard' syntax for XUSERSELECTR I might have a programming statement something like: Name: >#50: If #50 = '' then #50 = @XUSR(@fn,'Name','Name','a','z') In my address file, containing 3,244 records, it takes about 10 or 11 seconds (a long time when you're doing data entry) to produce a complete listing of all the names in the database. That's on a very efficient, Pentium 90, (Gateway 2000 P5-90) stand alone PC. The last two parameters in the syntax, are the beginning and ending values of the data you want to retrieve. If I changed it, for example to .....'g','k') then it would only retrieve values that start with the letter 'g' through those that start with the letter 'k' ..... so HANEY, Ann would be included in the list, but SHIMRAT, Ofer would not. But (as is the beauty of Q&A in most of it's programming) we can substitute 'variables' for those parameters, to something like: Name: >#50=@XUSR(@fn,'name','name',#50,#50) I would precede it with a 'navigation' message, something like: <#25:@msg('Please enter the first letter - or first few letters - of the last name.') Now, if I enter SH in the field, I will (almost INSTANTLY) get a list of all names that begin with those letters, such as SHAFFER, Sheldon through SHULMAN, Minnie. The more letters you enter, the more narrow your resulting 'pick list,' but even one letter will substantially reduce your 'waiting time.' Also, instead of a 'stagnant' programming statement, you now have one that is interactive, responsive to input from the user. By the way, I used @XUSR and could just have easily done this with XUSR. Since the 'variables' fall at the end of the @XUSR statement (whereas the 'target' field comes into play in the XUSR statement), I thought it was easier to explain this way. I hope this gives you a good 'jump start' with this phenomenal new function placed at our disposal."," "," "," "," "," "," "," "," "," " "search; searches; searching; spec; search spec; retrieve; retrieval; retrievals; retrieval spec; find; field; fields; all fields; several fields; many fields; multiple fields; variable fields; all; several; many; multiple; variable; or; F7; 1399"," ","I need to search for a value which could be in any one of nearly every field in my database. Is there an easy way to do this?"," ",1399, ,"Feb 3, 1996","There are many variations to this type of request, therefore there is no simple answer. You might for example be looking for one word that might be in any one of 5 or 10 (or any number of) fields. Or, you may be looking for one word in one field(s) and another word(s) in another field(s). To complicate this further, you may need to do this type of search repetitively; however, the value(s) you are looking for may be constantly changing. The 'standard' way to search multiple fields is to put the value(s) you want to find, in each field where it might appear. Then press Ctrl/F7. This will access a screen that allows you to change the retrieve logic. Instead of retrieving records that meet ALL of the values you have entered in your fields, you can retrieve records that meet ANY value in ANY (one or more) of the fields. If this is a 'repetitive' search, you can of course save it (Shift/F8) for future use and retrieve it (Alt/F8) as needed. If you have to search a number of fields and the value is constantly changing, then you could consider 'collecting' these values FROM several fields INTO ONE field in your database. This could be done through programming so that it wouldn't create any extra work on your part. Then, when you want to search 'accross fields' you would only have to enter the retrieve spec into the one 'collective' field. Here's an example. PHONE1:#110 PHONE2:#120 PHONE3:#130 PHONE4:#140 PHONE5:#159 PHONE6:#160 Suppose you want to search for a specific phone number, but it could be in any one of the six fields. You certainly wouldn't want to enter it six times. You could simply have programming something like: PHONE NUMBERS: #990 = #110 + '; ' + #120 + '; ' + #130 + '; ' + #140 + '; ' + #150 + '; ' + #160 Making the field 'read only' will prevent the cursor from stopping there when you are in the record ... but will allow you to use it for retrieve purposes. This programming is premised on automatic calculation. Alernatively, you might want to NOT make the field read only and preface the programming with a < sign -- followed by a 'goto' statement. (I sometimes add programming to get rid of the extra semicolons, with something like: ;#990 = @replace (#990,'; ;','; ');if @rt(#990,1) = ';' then #990 = @repllas(#990,';',' ), however, I do not find that extra semicolons have any impact on performance, in this case). By formatting the field as (K)eyword, you can enter the telephone number only, in the retrieve spec. If you prefer NOT to format it as keyword, you can enter the number with 'wildcards' such as ..7185076647.. in the retrieve spec. Another solution for completing the retrieve spec would be to simply create a 'multiple' macro to do your entry for you. When I first started with Q&A, I created a series of 4 macros. They have been an invaluable 'tool' ever since. I use Alt/J as my 'variable' macro because it is easy to access. By 'variable' I mean that I only use it for 'on-the-fly' (onetime) functions. This way, I never have to worry about over writing it. I then record Alt/1 to do nothing other than to call Alt/J. I use Alt/2 to call Alt/1 10 times ... Alt/3 to call Alt/2 10 times and Alt/4 to call Alt/3 10 times. If I need something once, I simply program Alt/J and run either Alt/J or Alt/1 (either one can be set for a 'function' or you could eliminate either one of them). According to the number of 'repeats' I want, I simply execute the appropriate combination of keystrokes. Alt/1 1 repetition Alt/2 10 repetitions Alt/3 100 repetitions Alt/5 1000 repetitions To repeat something 256 times, I would simply press Alt/3 twice, Alt/2 5 times and alt/1 6 times and I've done my part quicker than you can say/read it. Starting with your first retrieve spec field, all you have to do is record Alt/J to enter your search phrase and tab .... ONCE. After saving it, simply press the appropriate number of macro combos. If your fields are all text and long enough to accommodate your search phrase, this will work with no special concerns. If some fields are not long enough, I would suggest you build in 'F6' to open and close each field editor. If some of your fields are dates or numbers ... and/or the retrieve spec is otherwise inappropriate for the field, the macro will 'stall.' Simply skip the 'offending' field and deal with it individually. If you have to do this type of search frequently, then If you do have 'offending' fields, you might want to restructure your database so that all appropriate search fields are together. Version 5.0 opens up new possibilities. First, you can simply enter your retrieve value in one of the fields and press F11 to copy it to the clipboard. Then you can go to each remaining field and press F12 to 'paste' the value. You could even wrap all of this in a macro, to make it effortless. (I LIKE this one). Here's another that I found (so far) although it takes longer than some of the other alternatives and, personally, I don't like it as well. You could create a standard retrieve spec such as: ANY FIELD: #10: {#20 = '*' or #30 = '*' or #40 = '*' or #50 = '*' or #60 = '*' or #70 = '*'} PHONE1:#20 PHONE2:#30 PHONE3:#40 PHONE4:#50 PHONE5:#60 PHONE7:#70 Save the retrieve spec (Shift/F8) and retrieve it (Alt/F8) as needed. Go to field #10 and open the field editor (F6). Then simply do an automatic search/replace, to search for the asterisk (*) and replace it with whatever value you wish to find, e.g. 7185074815. (Once again, a macro would make it more efficient). I hope one of these viable alternatives will be to your personal liking."," "," "," "," "," "," "," "," "," " "draw; line; lines; line draw; font; cpi; proportional; fixed; proportional font; fixed font; 1400"," ","It seems that I may have inadvertantly made a change to my software or there is a glitch in the proram. When I attempt to draw a line from one side of the screen to the other, in a document, the curser stops drawing about half way across. The length of the line doesn't change if I start further across the screen either. What's going on here?"," ",1400, ,"Feb 4, 1996","Since I can't tell you 'absolutely' what the problem is, I can tell you some things that might cause it. 1) Changing the margins on the 'Define Page' (Ctrl/F6) screen so that they are narrower than you intended. 2) Reducing the font size to 17 or 20 charcters per inch and setting your right margins in columns (e.g. 75) (75 characters at 10 cpi would occupy 7.5 inches, whereas 75 characters at 20 cpi would only occupy 4.25 inches) 3) Using line draw with OTHER THAN a fixed-pitch font, such as courier (using a proportional font could cause this problem)."," "," "," "," "," "," "," "," "," " "@shell; shell; external; launch; external program; menu; macro; auto; auto load; autoload; autoload macro; auto start; autostart macro; macro file; 1401"," ","When using @shell (or the external program launching menu), what is the syntax to have Q&A both load a particular macro file and load a particular macro in that file at the same time?","5",1401, ,"Feb 4, 1996","Here's an example of programming that I use to first ask a user if they want to (shell out to) see additional records while staying in the same form. <#250: IF @ADD THEN {#990 = @askuser('Do you want to see the records','','for the workers who are out?'); If #990 = 'yes' then #990 = @shell('qa -ALOTHER.MAC -M9')} The command is the last statement between parentheses. Be sure to leave a space after qa then a dash (no space) followed by AL and (no space) the name of the macro file you want to load - followed by a space then a dash then the letter M and then the macro number. In this example -M9 stands for my Alt9 macro."," "," "," "," "," "," "," "," "," " "shell; @shell; launch; launching; external; external program; program; menu; external; menu; external program menu; 1402"," ","How does loading another copy of Q&A as an external program differ from loading it using @shell?"," ",1402, ,"Feb 4, 1996","When you load Q&A from an external program you can (1) do it through programming (2) access (AltF9) and launch it from a menu and (3) pass a variable with it. As far as I know @shell can only be executed by programming and you can not pass a variable (to the copy of Q&A) with it. You can; however, pass variable command parameters with the Q&A command .... so for example you could use QA -althismacro.asc -m9 based on one set of circumstances or QA -althatmacro.asc -m6 on another, etc. I think the end result can ultimately be the same; however, how you get there might be more convenient one way than another. Please keep in mind that since this feature is brand new, we may have other differences yet to discover."," "," "," "," "," "," "," "," "," " "program; programming; or; or's; either/or; this or that; syntax; 1403"," ","Is there a way of simplifying ... IF #10 = 'Long string of boring text' OR #20 = 'Long string of boring text' OR #30 = 'Long string of boring text' OR #40 = 'Long string of boring text' THEN #50 = 'Repetitive Strain Injury' ? such as ... (example which does not work) ... IF ( #10..#40) = 'Long string of boring text' ... I am aware of @INSTR, that implies wildcards, I want something more universal, for example IF #10 >25 or #20>25 or #30>25 I would accept something along the lines of IF (#25, #35, #45) or IF (#25 or #35 or #45) I have (I believe) tried all of these, and indirection, and I just can't find away of < avoiding repeating the condition> (except for @instr which = wildcard in a text search)."," ",1403, ,"Feb 6, 1996","Reading your message felt like someone had been eavesdropping in my mind because I have long been frustrated by the same 'challenge.' I'm sorry to say that I have not (YET) found any global solution. There is one teeny suggestion I could make, especially with regard to your first example of: IF #10 = 'Long string of boring text' OR #20 = 'Long string of boring text' OR #30 = 'Long string of boring text' OR #40 = 'Long string of boring text' THEN #50 = 'Repetitive Strain Injury' ? I like setting aside a 'bin' or 'bins' in the form itself to contain programming values. So (lets say the 'bin' is field #990), your programming would read: If #10 = #990 or #20 = #990 or #30 = #990 or #440 = #990 THEN #50 = 'Repetitive Strain Injury' You still need the repetitive 'or's' but see how much shorter the programming statement is. Then, all you have to do is place 'long boring string of text' in field #990. You can place it - or remove it - at 'will.' The beautiful part of this technique is that you can have the user (and/or the data in the form) interact 'live' with the programming - depending on what value is entered into field #990."," "," "," "," "," ","X"," "," "," " "program; programming; field; programming spec; program spec; spec; syntax; #; number; name; field #; field number; field name; no; no #; no number; no name; no field number; no field #; no field name; 1404"," ","I seem to have seen examples of programming where there is no field number in the programming spec. Is this allowed? I can't do it if it is? Example: (which does not work) Full: Fullname = Firstname +' ' + Surname Am I imagining it? I believe you MUST give a field a number if it is to have a programming statement in that field."," ",1404, ,"Feb 19, 1996","You can program without assigning a field a number and I BELIEVE (I'm not sure that) it will only work with < > symbols. >> Full: Fullname = Firstname +' ' + Surname << First, I assume that you have a typo in either your field label or the first portion of your statement. (Either the label 'Full' or the value 'Fullname' needs to be changed to match the other ... and PLEASE don't tell me you assigned 'Fullname' to the 'Full' field in your Set Field Name Spec ----- you see, I'm 'way ahead of you.' ) In any event, all you need to do is use a < symbol, for example: FIRSTNAME: SURNAME: FULLNAME: < FULLNAME = FIRSTNAME + ' ' + SURNAME; CNEXT Oh, in case you think this works because the statement starts with a reference to 'FULLNAME' that is not a necessity. You could just as easily complete your programming something like: FIRSTNAME: SURNAME:>Fullname = Firstname + ' ' + Surname; goto OK FULLNAME: OK: I hope that you're happy with this solution. Now, I'd like to point out that, in version 5, this capability takes on even greater significance. For example, by omitting numbers from programming such as: SOME FIELD: < CNEXT you can simply copy it (F11) and then paste it (F12) into one or as many fields as you like, without having to change references to field numbers or names. Omitting field references, when possible, provides tremendous, newfound, programming convenience."," "," "," "," "," ","X"," "," "," " "Q&A Application Note; Recover; Recovery; Recover database; Recovering From Index File Problems Using Q&A 4.0 for DOS; repair; repair database; .IDX; index; index file; speedy; speedy fields; 2009; #2009; technical tip; tt; 1405"," ","Q&A Application Note Q&A 4.0 Recovering From Index File Problems Using Q&A 4.0 for DOS"," ",1405, ,"Feb 6, 1996","Introduction This document will help you repair a database that has problems with the index file. Each Q&A database actually consists of two files: a file with a .DTF extension (the file with the data in it), and a file with a .IDX extension (the index file). The index file has two main functions in Q&A: it keeps the data from your speedy fields in sorted order and it stores the Intelligent Assistant information. If your database has a damaged or deleted index file, then the procedures outlined in this document along with the reindexing procedure in document 2004 may fix the problem and allow you to access the data in your database. This document covers the following situations: Part 1. The IDX File Is Missing, Or You Get An Error With Reference 0678, 0679 or 0694 Part 2. You Get An Error With Reference 0201 Part 3. You Cannot Retrieve All Of The Records In The Database Part 4. You Get An Error With Reference 0501 Or The Intelligent Assistant Is Not Working Properly Prior to performing any of the procedures outlined below, you must first duplicate the database. This will preserve a copy of the database in its current state in case something goes wrong. If you do not duplicate your database you may loose your data. Use the following procedure: Duplicating your database. 1. From the Q&A Main Menu, select Utilities, then choose DOS File Facilities. 2. From the DOS File Facilities Menu, select Copy a File. 3. At the Copy From prompt, enter the path and name of the database (For example: C:\QA\DATA.DTF). We will refer to this as your ORIGINAL database. 4. At the Copy To prompt, enter the same path, but enter a new, unique name for the duplicate of your database (For example: C:\QA\DATABU.DTF). For the purposes of this document we will call this database the DUPLICATE database. When the copy is complete you will have two databases on your hard disk. Both of these databases will be the same. Part 1. The IDX File Is Missing, Or You Receive Error 0678, 0679 Or 0694 You may get this message if the index file is mistakenly deleted or if it is damaged. In order to gain access to your data you will need to supply an undamaged index file for Q&A to use. To do this you will need to know how many of the fields in the database are Speedy fields (indexed fields), and whether you have ever taught the Intelligent Assistant. The repair process consists of 3 steps: A. Create a new database with as many fields as you have Speedy Fields B. Copy the index file from this new database to the index file of the damaged database C. Reindex the resulting database to recreate the index file If your database has six speedy fields or less, you may be able to use the index file from EMPLOYEE.DTF, one of the sample databases that comes with Q&A. If that database is available and it is not being used, then you can skip this part and go to section B, using EMPLOYEE.IDX in the copy procedure outlined in step B. A. Creating a new database 1. From the Q&A Main Menu, select File, then Choose Design a File from the File Menu. 2. From the Design Menu, select Design a New File. 3. At the Data file prompt, enter a new unique name for the database (For example: C:\QA\NEW.DTF). Be sure that this database is created in the same directory as the database with the damaged or missing index file. 4. At the Design screen, create as many fields as you have Speedy fields in the damaged database. The field names and types are unimportant. For example, if your database had 5 speedy fields you could enter the following on the design screen to create 5 fields: f1: f2: f3: f4: f5: When you have created the input form press F10 and then press F10 at the Format Spec to accept the default formats. 5. From the File Menu, select Design File, and then from the Design Menu select Customize a File. 6. At the Data file Prompt enter the name and path of the new database you just created (For example: C:\QA\NEW.DTF). 7. From the Customize Menu, select Speed Up Searches. 8. At the Speed-up Spec, type an S into every field and then press F10. 9. If you have ever used the Intelligent Assistant, then you will also have to teach this database. From the Q&A Main Menu, select Assistant, and then select Ask Me To Do Something and then enter the name and path of the new database. When the Assistant screen appears, press Escape twice to return to the Q&A Main Menu. B. Copying the Index File of the New Database 1. You will have to exit Q&A to perform this procedure. From the Q&A Main Menu, select Exit. If you run Q&A from a menu system, you will have to exit the menu system to get to a DOS command line. 2. Change to the drive and directory where your database files are located. In many cases you can do this by entering: CD \QA 3. Now copy the index file from the new database to the name of your ORIGINAL database. You can do this using the DOS COPY command (For example: COPY NEW.IDX DATA.IDX). If you are using the EMPLOYEE.IDX as your index file be aware that this sample database may not be in the same directory as your database files. Late versions of MS DOS may require confirmation if you are copying over an existing file. 4. At this point you should test the database to see if you can access your data. Restart Q&A and then select File from the Q&A Main Menu and then select Search/Update from the File Menu and enter the name and path of your ORIGINAL database. Press F10 to bring up the first record in the database. C. Reindexing the resulting database to recreate the index file If you are able to do steps A and B without getting any errors, then you should reindex the database in order to rebuild the index file of your database. Document number 2004 will give you directions for reindexing your database. Use the procedure in part 3 of the document. If you get an error message with a reference number of 0201, then follow the procedure in Part 2 in this document. If you get another error message, then you may still be able to get access to your data. Document number 2004 will give directions for attempting to repair your database. Part 2. You Get An Error With Reference 0201 An error with reference 0201 indicates that the index file of your database (the file with the IDX extension) has been damaged. This error message can result from simply rebooting your computer while Q&A was accessing the index file. Note however that this message can be the byproduct of a deeper problem and that the procedures given below may not cure the it. They will eliminate the 0201 error, but that error may be replaced by another error message. Three procedures are outlined below which will close the index file: A. Using QBASIC.EXE B. Using another version of BASIC if you have an older version of MS DOS (prior to 5.0) C. Using DEBUG.EXE if you do not have access to BASIC These procedures must be performed outside of Q&A. You will have to exit Q&A and then change to the directory containing your database (For example: CD C:\QA\DATA.DTF). A. Using QBASIC.EXE 1. Start Qbasic by typing QBASIC and then press Escape to clear the welcome screen. 2. At the blank window enter the following programming statements (Note: you will have to replace the database index file filename in the programming statement below with the name of your index file. This document uses DATA.IDX as an example): OPEN 'DATA.IDX' FOR RANDOM AS #1 LEN = 1 FIELD #1, 1 AS C$ RSET C$ = CHR$(0) PUT #1, &H21 CLOSE 3. If you wish, you may save the program that you have just created by selecting Save from the File Menu. 4. When you are ready, press F5 to run the program. You should see the program screen disappear, and the words Press Any Key to Continue appear at the bottom of the screen. 5. Press the space bar to return to the program screen and then select Exit from the File Menu to exit from the program. 6. Follow the procedure given at the end of this section for testing the database. B. Using another version of BASIC if you have an older version of DOS 1. Start your BASIC interpreter by entering its name at the command line. Many versions of MS DOS came with BASIC programs you start by entering GWBASIC or BASICA. 2. At the basic prompt, enter the following programming statements (Note: you will have to replace the database index file filename in the programming statement below with the name of your database index file. This document uses DATA.IDX as an example): 10 OPEN 'DATA.IDX' FOR RANDOM AS #1 LEN = 1 15 FIELD #1, 1 AS C$ 20 RSET C$ = CHR$(0) : PUT #1, &H21 : CLOSE 3. At this point you may choose to save your BASIC programming. You will have to consult with your BASIC manual for directions on how to do this. 4. To run the program and fix your index file, enter RUN at the BASIC command line. (You may have to use another command to run your basic program. Consult your BASIC manual for details.) 5. After the program has run, enter SYSTEM at the BASIC command line which will return you to the MS DOS prompt. 6. Follow the procedure given at the end of this section for testing the database. C Using DEBUG.EXE if you do not have access to BASIC 1. Enter DEBUG DATA.IDX at the MS DOS command line (Note: you will have to replace the database index file filename with the name of your database index file. This document uses DATA.IDX as an example). 2. If you receive the message INSUFFICIENT MEMORY, then type Q and then press Enter to exit from DEBUG and return to the MS DOS command line. The index file is too large to read into memory. You will not be able to perform this operation using DEBUG.EXE. 3. Type E120 and then press Enter. 4. DEBUG will display xxxx:0120 00. with the xxxx replaced by various numbers or letters or both. 5. Type 00 and then press Enter. 6. Type W then press Enter. 7. Type Q then press Enter. This will return you to the MS DOS command line. Follow the procedure given below for testing the database. To test your repair, choose Search Update from the File Menu and try searching for a record in your database. You should also try sorting your retrieved records on a speedy field (press F8 at the Retrieve Spec to go to the Sort Spec). Note that there is no single test you can perform to ensure the integrity of a database. Once you have fixed the index file, you will have to reindex the file using the procedures outlined in document 2004. This document begins with running recover which you will not have to do. You will have to begin with Part 3 in the repair document which will take you through the reindexing procedure. Part 3. You Cannot Retrieve All Of The Records In The Database In some situations, Q&A may be unable to retrieve all of the records in the database. The records may become 'unlinked' from the database which may make them unretrieveable. To test this select Search/Update from the File Menu. Enter the path and name of the database and press Enter. Press F10 at a blank retrieve spec and then press CTRL+END to go to the last record in the database. At the bottom of the screen, Q&A will display the number of records retrieved and the total number of records in the database. If these numbers do not agree, then the following procedure my allow you to repair the database. Note that this procedure will only work if the database has at least one field designated as a Speedy Field. To check this, select Design File from the File Menu and then choose Customize A File from the Design Menu. At the File name prompt, enter the path and name of the database and then press Enter. From the Customize Menu, choose Speed Up Searches. A Speedy Field will be designated by an S, SE, or SU in this screen. If none of the fields are designated as Speedy Fields then you will not be able to access these records using Q&A. You have the option of either sending in your database for repair, or using a utility program called QEXTRACT to extract the data from the database. Consult document 2004 for details on these options. If you do have a field designated as a Speedy Field, then you can try a modified reindexing procedure that may allow you access to those records. This procedure consists of the following steps: A Copying the Design of the Database B Exporting Data from the Database while sorting on a Speedy Field C Importing the Data into the New Design A Copying the Design of the Database 1. From the Q&A Main Menu, select File. 2. From the File Menu, select Copy. 3. At the File name prompt, enter the path and name of the ORIGINAL database (For example: C:\QA\DATA.DTF). 4. From the Copy Menu, choose Copy Design Only. 5. At the Copy to prompt, enter the name of the database you want to create in this process (For example: C:\QA\DATANEW.DTF). For the purposes of this document we will call this the COPY. Note that this name must be unique. You will be creating a new database in this process. The copy procedure is complete when you return to the Copy Menu. B Exporting Data from the Database while sorting on a Speedy Field 1. From the Q&A Main Menu, select File. 2. From the File Menu, select Utilities. 3. From the File Utilities Menu select Export Data. 4. From the Export Menu, select Standard ASCII. 5. At the Q&A file name prompt, enter the path and name of the ORIGINAL database. 6. At the Export to prompt, enter the path and name of a temporary file that will hold your data (For example: C:\QA\DATA.TXT). 7. At the Retrieve Spec Press F8. 8. At the Sort Spec, move the cursor to a field designated as a Speedy Field and enter 1as and then press F10. 9. At the Merge Spec Press F10. 10. At the ASCII Options screen, keep the default options by pressing F10. C Importing the Data into the New Design 1. From the Q&A Main Menu, select File. 2. From the File Menu, select Utilities. 3. From the File Utilities Menu select Import Data. 4. From the Import Menu select Standard ASCII. 5. At the ASCII file name prompt, enter the path and name of the temporary file created in the above procedure that has your data (For example: C:\QA\DATA.TXT). 6. At the Q&A file name prompt, enter the path and name of the COPY of the database you created above (For example: C:\QA\DATANEW.DTF). 7. At the Merge Spec press F10. 8. At the ASCII Options screen keep the default options by pressing F10. Q&A will now import the data into the copy of the database. When this done, you should test your database by attempting to retrieve all of the records in the database as outlined at the beginning of this section. If you can retrieve all of your records then your database is probably OK. Note that there is no single test that will determine the integrity of a database. You should not delete your original database until you have used the copy for a few days. If you cannot complete the above procedures without getting an error or locking up your machine, then the damage to the database is more severe. You should consult document 2004 for information on QEXTRACT and the Q&A Database Repair Service _ your only options at this point. Part 4. You Get An Error With Reference 0501 Or The Intelligent Assistant Is Not Working Properly In this situation, the Intelligent Assistant information in the database is damaged or incorrect. Reindexing the database should solve the problem. Refer to document 2004 and follow the procedure outlined beginning in part 3 of that document. Be sure that in step B you choose Copy Design Only. This will create a database without the Intelligent Assistant information. After reindexing, you will have to reteach the database before you can use the Intelligent Assistant or the Query Guide. Rev. 10/94 #2009"," "," "," "," "," "," "," "," "," " "program; programming; navigation; order; program navigation; program order; programming order; exit; entry; on-field-exit; on field exit; on-field entry; on field entry; movement; execution; execution order; userselect; xuserselect; message; messages; messagebox; msgbox; message box; 1406"," ","You said 'Version 5 brings a new 'goodie' with it because you can use an on field EXIT statement such as in the userselect family, yet the list is still provided as you enter the field.' I'm afraid that you lost me on this one.","5",1406, ,"Feb 14, 1996","I'm not at all surprised that you got lost on my comment about new entry/exit flexibility since I was very vague. Thank you for 'forcing me' to do better. What I'm going to give you is not the best example, but it is, nevertheless, an example. There are many practical applications for this, because I've been able to modify some of my previous programming and eliminate extra fields. There are times when you HAD to use on field-ENTRY programming to accomplish something in 4.0 .... which you can now accomplish with on field-EXIT programming in 5.0. For example, supposing you wanted to present someone with a message such as 'PLEASE HOLD THE ALT KEY AND PRESS F7 FOR A LIST.' You would HAVE to have included this as an on-field ENTRY statement. (Otherwise, your cursor would be in the next field after the message appeared and pressing Alt/F7 would then bring up the values, if any, from the following field). Also, if you used on-field-ENTRY programming to provide the message, you couldn't perform other necessary on-field-EXIT functions, such as checking to see that the value selected was consistent with another value in the form. In addition, after making your selection, you would have to again press enter to move to the next field. Now, don't get me wrong. Certainly you could have dealt with this in a variety of ways, e.g. through the use of an on-field-entry navigation spec or an on field-exit statement in the PREVIOUS field ... or an on-field-entry statement (for the 'error checking' part) in the NEXT field (even if you had to add a one-character 'hidden' field) ..... but you COULDN'T do all this programming in the program spec, in the same field. There are several functions in version 5, where you CAN do this. You CAN do this, for example, by using a member of the userselect family. Even though you use on-field-EXIT programming, the list will appear BEFORE you exit the field, allow you to make your selection and then continue to process any additional programming, such as the error checking I mentioned above. Additionally, by using a 'goto' statement, the cursor will move to the appropriate field AS SOON AS you make your selection ... and eliminates an extra keystroke. Likewise, providing a message(s) using messagebox, will not force you to the next field, so you could (all with on-field-EXIT programming) (1) provide a message (2) provide a selection list (3) perform error checking (4) provide another message(s), if you like and (5) send the cursor on its merry way. All in all, there is a tremendous amount of newfound flexibility and control regarding the order of program execution in 5.0. Have fun 'playing!'"," "," "," "," "," "," "," "," "," " "Week; Weekly; number; week number; week #; # of weeks; number of weeks; count; count weeks; 1412"," ","I am trying to program a field to identify which week of the year ('week 1; week 2, etc.) a date falls into. 'Week of the year' is a 7 day period starting with 1-1-96. I had a 'date' field and a 'week' field. The 'date' field was classified as having 'D' date information and the 'week' field was classified as having 'T' text information. I attempted to program the 'week' field as follows: DATE: #1 WEEK: <#2: if #1 >=1-1-96 and #1 <=1-7-96 then #2 = 'Week 1'; if #1 >=1-8-96 and #1 <= 1-15-96 then #2 = 'Week 2' I couldn't get this to work. It would either give me 'Week 1' all the time or when I tried something a little different it would not give me anything. I tried classifying the 'week' field as having 'D' type of information; I tried programming the 'date' field to calculate the 'week' field; I tried adding the phrase [ else #2 = '' ] at the end of each week statement in the programming; nothing worked. I wound up doing what I think I always do in programming, doing it a very long and unnecessarily complicated way. I added another field - 'Day of the year'. For the DATE in the 'date' field, this new field calculates which day of the year (1 though 365) the date represents. Then I programmed the 'week' field the determine which week of the year the number in this new field fell into. DATE: #1 DAY-OF-YEAR: <#2:#2=@int(#1)-728658 WEEK: <#3:if #2 >=1 and #2 <=7 then #3 = 'Week 1'; if #2 >=8 and #2 <=15 then #2 = 'Week 2'; etc. This works but I would like to know what I was doing wrong in the first try. Is there a simpler way to calculate 'week of the year'? Thanks for your help."," ",1412,28,"Feb 24, 1996","Before I tell you the programming I would recommend, I would like to point out that your first 'formula' WILL work: WEEK: <#2: if #1 >=1-1-96 and #1 <=1-7-96 then #2 = 'Week 1'; if#1 >=1-8-96 and #1 <= 1-15-96 then #2 = 'Week 2'; (etc. through week 52) All you need to do is enclose each date in quotes: WEEK: <#2: if #1 >='1-1-96' and #1 <='1-7-96' then #2 = 'Week 1'; if #1 >='1-8-96' and #1 <= '1-15-96' then #2 = 'Week 2'; (etc. through week 52) BUT, that programming is a 'nightmare' because you would need 52 separate lines, and you would have to figure out the actual dates. Then, when the 'new year' comes, both dates in every line would again need to be changed. The solution I recommend is based on another record in this database (courtesy of Symantec) (identified as XRef #28) which discusses use of this programming for report purposes. The approach works equally well for a database field ... and it's VERY easy. I think you'll be pleased! Basically, here it is: DATE: #10 WEEK: < #20 = @int((#10 - @D(1996/01/01)) / 7 + 1); CNEXT That's it -- one short statement -- and when the year changes, there is only one date to change. (I added CNEXT since there's no reason for the cursor to stop at the field. Now, this is based on the WEEK field being formatted as numeric and inserting the number only. Since the label describes 'week' this should be sufficient. If for any reason the number alone isn't sufficient, a very simple program modification will get what you want with WEEK formatted as a text field: <#20 = 'Week' + ' ' + @str(@int((#10 - @D(1996/01/01)) / 7 + 1)); CNEXT Also, please note that I allow gaps in assigning field numbers in programming. It's a very good habit to get into. I trust you'll be happy you asked. Good luck!"," "," "," "," "," "," "," "," "," " "password; passwording; security; access rights; assign access rights; secure; secure file; secure files; file; files; protect; protected; protection; program; programming; design; spec; specs; lock; database; lock database; designer; designer lock; designer's lock; 1413"," ","I have a database that does not require password protection, but I'm afraid that a 'curiosity seeker' might play around with the database design and/or the programming. I wish there were some way that I could prevent someone from changing the design work I did, without having to password protect the file. Too many different people need to get into it, too often."," ",1413, ,"Feb 24, 1996","Your wish is granted and it has been ever since the release of version 4, many years ago. From the Main Menu, simply select (F)ile, (D)esign file, (A) - Customize Application, (L)ock database (filename). You will then be asked to assign a password and can determine what changes you will or will not allow. Be SURE that you select YES with regard to whether the database lock should be enabled. This works completely independently of whether or not you assign password protection to the database (except that you can assign some of the same privileges under password protection). Once locked, if no other access has been provided through password protection, then the only way you can make changes is to first unlock the database. Since you must know the 'special' password for this purpose, it is critical that it not be forgotten."," "," ","The Application Programming Tools Manual, page 87 (version 4), page 115 (version 5) provides helpful information regarding the use of this feature."," "," "," "," "," "," " "report; reports; reporting; derived; derived columns; derived columns; start; end; starting; ending; date; dates; calculate; number; #; day; days; number of days; # of days; # days; number days; date; dates; 1414"," ","I would like to create a derived column in a report that would determine the number of days between two dates, such as #4 - #3 where #4 is an ending date field and #3 is a start date field. The problem is, when #4 is empty, then I get a negative number. Is there any way I can supress the negative number in a derived column? To make things more challenging, is there also any way to make the formula exclude weekends and just give business days as a result? Thanks."," ",1414,29,"Feb 26, 1996","What you want to do is relatively easy; it will just take a lookup table (to compute workdays) and some derived columns. To complete the lookup table, just select (F)ile, (D)esign file, (P)rogram a file (filename), (E)dit lookup table and complete the key and first columns as follows: KEY 1 ~~~ ~ Monday 1 Tuesday 2 Wednesday 3 Thursday 4 Friday 5 With that out of the way, we are ready to work on the report design. What I'm providing will cover situations where either the starting and/or the ending date is empty -- just in case the latter situation might also occur. I'm assuming (a minimum of) three relevant fields with the column/sort spec completed as follows: PROJECT: #5,AS START:#10 STOP:#20 The derived columns would be completed as follows: DERIVED COLUMNS ~~~~~~~~~~~~~~~~~ Heading: #!OF!DAYS Formula No. 1 @TXT(#10<>'',@TXT(#20<>'',#20 - #10)) Column/Sort Spec: 30,F(JR) Heading: Multiples!of!Seven Formula No. 2 @INT(#30/7) Column/Sort Spec: 40,I Heading: Later!Start!Adjustment Formula No. 3 @txt(@Lu(@DOW$(#10),1)>@Lu(@DOW$(#20),1),#30-(2*(#40+1))) Column/Sort Spec: 50,I Heading: Later or =!End!Adjustment Formula No. 4 @txt(@Lu(@DOW$(#10),1)<=@Lu(@DOW$(#20),1),#30-(2*#40)) Column/Sort Spec: 60,I Heading: # of!Work!Days Formula No. 5 @TXT(#50>'0',#50) + @TXT(#60>'0',#60) Column/Sort Spec: 70,F(JR) Please note that columns 40 through 60 are invisible and don't require headings but I included them because I like to identify what they do and I sometimes like to print them as I'm developing the report. One last comment I'd like to make is that the derived columns were separated to make them fit in version 4. If you are using version 5, they (columns 40 through 70) could be consolidated into one. In any event, these specs will give you a report that looks something like: # # of OF Work PROJECT START STOP DAYS Days ------- -------- -------- ---- ---- A 01-01-96 01-08-96 7 5 B 01-01-96 02-02-96 32 24 C 02-01-96 02-02-96 1 1 D 02-01-96 02-05-96 4 2 E 02-01-96 02-06-96 5 3 F 02-01-96 02-08-96 7 5 G 02-02-96 02-12-96 10 6 H 02-07-96 02-13-96 6 4 I 02-07-96 02-14-96 7 5 J 02-15-96 K 02-25-96 L I'd like to mention that the solution for calculating workdays is based on Symantec's Q&A Application Note #2129, 'Calculate Dates Without Weekends' which you'll also find in this database in the record identified as XRef# 29. I hope this information is helpful and that you're happy with the results."," "," "," "," "," "," "," "," "," " "section; ; symbol; section symbol; ASCII; character; ASCII character; 1415"," ","I need the '' in Q&A 4.0."," ",1415, ,"Feb 27, 1996","Then you shall have it!! You can use the ASCII character code (ALT/F10/21) To reproduce the character, hold the Alt key - press and release the F10 (continuing to hold the alt key) and then each number i.e. 2, 1 (Be sure to use the numbers on the numeric keypad (on the right of the keyboard) and NOT the numbers at the top of the keyboard. If you prefer, just press Ctrl/F5 to copy it to a file and then use Document/Import it to retrieve it whenever you like. If you use it a lot, you might want to create a simple macro and assign it to any key (or key combination) that you don't otherwise use."," "," "," "," "," "," "," "," "," " "report; reports; reporting; program; programming; xlu; xlookup; lookup; look up; look-up external lookup; @xlu; @xlookup; retrieve; retrieve lu; retrieve lookup; retrieval; retrieval lookup; conditional retrieve; conditional retrieval; xternal; external database; zip; zip code; zip codes; county; counties; 1416"," ","We service 5 counties and would like to be able to retrieve records by county (e.g.'Ventura County') WITHOUT adding another field to our crowded form. I know we could create a Saved Retrieve Spec for all zip codes in each county, but trust there's a better way. Our Zip-code database contains the name of the county for each five digit zip code. Is there a way to create a Retrieve Spec using the external Zip code file matching the first five characters of our zip code field to retrieve only records with 'Ventura' as the county name in the external database?"," ",1416, ,"Feb 27, 1996","What you want to do is very easy with Q&A's provisions for using programming in retrieve specs. Just save a retrieve spec, for each of the five counties, something like: ZIP CODE: #1: {@xlu('zipa',@lt(#1,5),'zip','county')='Ventura'} That'll do it! If you would like some additional 'insight' to this technique, you might want to search for other records with the keyword 'conditional retrieve.'"," "," "," "," "," "," "," "," "," " "date; dates; recur; recurring; recurring day; recurring date; recurring dates; day; days; Tuesday; Tuesdays; subsequent; subsequent date; subsequent dates; frequency; established frequency; 7 days; 14 days; twice; month; monthly; twice a month; 2; 2 times; 2 times a month; 2nd; 4th; second; fourth; 2nd and 4th; 2nd & 4th; second & fourth; second and fourth; 2nd & 4th Tuesday; 2nd & 4th Tuesdays; second and fourth Tuesday; second and fourth Tuesdays; second & fourth Tuesday; second & fourth Tuesdays; 2; 4; 2 & 4; 2&4; two & four; fixed; fixed day; fixed day of month; day of month; day of week; week of month; interval; intervals; date inteval; date intervals; 1418"," ","I have a recurring jobs database for my business where I plug in the date of last service, and it generates a date for the next service, based on an established frequency, like 7 days, or 14 days, etc. The problem comes when a customer only wants service twice a month but is on a 14 day frequency. Some months will have 3 services on a 14 day frequency, if it falls just right. What I was wondering is if there would be a way to assign these customers certain days of the month, like: the 2nd & 4th Tuesdays. I'm wondering how I could program that in. Thanks for your help."," ",1418, ,"Mar 10, 1996","I am trying to arrive at a 'generic' formula that will make computations - such as the one you want - relatively easy. So far, I have not been able to do that. If you can get by with programming for 'literally' the second and fourth Tuesdays of a month, I can provide you with something that will work. From there, I think you will see that you can certainly create other 'formulas' for varying date 'patterns.' To start, I created a lookup table. (Select (F)ile, (D)esign file, (P)rogram a file (filename), (E)dit lookup table). ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ KEY ³ 1 ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IF THE 1ST DAY ³THEN FOR THE ³ ³OF THE MONTH IS³2ND TUESDAY ADD³ ³~~~~~~~~~~~~~~~³~~~~~~~~~~~~~~~³ ³Sunday ³9 ³ ³Monday ³8 ³ ³Tuesday ³7 ³ ³Wednesday ³13 ³ ³Thursday ³12 ³ ³Friday ³11 ³ ³Saturday ³10 ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Then, I programmed the three relevant fields as follows: LAST SERVICE DATE:#10 INTERVAL:#20 NEXT SERVICE DATE:#30 = #10 + @TN(#20); IF #20 = 'T' THEN { IF @DOM(#10) <15 THEN #30 = #10 + 14; IF @DOM(#10) >21 AND NOT @MT(#10)=12 THEN {#30 = @STR(@MT(#10)+1) + '/1/' + @STR(@YR(#10)); #30 = #30 + @TN(@LU(@DOW$(#30),2))}; IF @DOM(#10) >21 AND @MT(#10)=12 THEN {#30 = '1/1/' + @STR(@YR(#10)+1); #30 = #30 + @TN(@LU(@DOW$(#30),2))} } I imagine that up until now you were only adding a number of days to your INTERVAL field so that you may well have the field formatted as (N)umeric. My recommendation is that you simply change it to (T)ext since the programming (@TN) will treat the interval, when appropriate, as a numeric value. (Select (F)ile, (D)esign file, (C)ustomize a file (file name), (F)ormat values, and enter the letter T(ext) in the INTERVAL field). Using this new option is easy. After entering your LAST SERVICE DATE, you would simply enter the letter T(uesdays) in your INTERVAL field and Q&A will compute the date of the next appropriate Tuesday. I'm still hoping that some day soon, I will come up with a more 'global' solution. In the meantime, I hope this information is helpful. Good luck!"," ","The 'basis' of my solution is based on which day of the week, the first of the month falls on. If, for example, the first of the month is a Sunday, then we know that the second Tuesday will always be 9 days later, i.e. the 10th day of the month. The programming can readily access this information by reference to the lookup table. The 4th Tuesday of the month is simple to compute; it is simply 14 days later than the 2nd Tuesday."," "," "," "," "," "," "," " "convert; conversion; write; text; MS Word; word; word processing; 6; 6.0; Word 6.0; Word 6; MS Word 6.0; convert word processing; word to Q&A; word to QA; 1419"," ","Do you have a suggestion as simple and elegent for transfering a Word (for example, Word for Windows, 6.0) document to QA 5?"," ",1419,30,"Mar 19, 1996","You have several options. Should you wish to consider a special conversion program, you'll find information in another record in this database (identified as XRef #30). You can, however, very easily save your WORD document in several formats that can easily be used (or converted for use) in Q&A. (1) TEXT only (standard ASCII) (2) Word for MS-DOS 3.x - 5.x If you convert it to ASCII you can 'GET' it as you would any other Q&A document. (Depending on how you have your Q&A global options set, it might ask you to indicate the type of document). If you save it as MS-Word, you would simply select (W)rite, (U)tilities, (I)mport, (I) Microsoft Word, (3) Microsoft Word 5.0 (or other option as the case might be). (You will be prompted to enter the name of the Word document and for a new Q&A filename for the converted document). ORD 5.0"," "," "," "," "," "," "," "," "," " "convert; conversion; write; text; MS Word; word; word processing; 6; 6.0; Word 6.0; Word 6; MS Word 6.0; convert word processing; Q&A to word; QA to word; 1420"," ","How can I convert Q&A docs into Word 6.0? From what I've gathered, Microsoft does not have a convertor available."," ",1420,30,"Mar 19, 1996","You can simply save your Q&A document as a 'word' file. From the Main Menu, select (W)rite, (U)tilities, (E)xport a document, (I) - Microsoft Word, (3) - Microsoft Word 5.0 (name of file to export), (new filename). I save the exported file directly to my Word subdirectory. Then I simply open the document in MS Word 6.0 -- which can easily convert from the MS Word 5.0 format. In most cases, enhancements (bold, underline), etc. are retained. Of course, you can also save any document in standard ASCII format which will be recognized by almost any other program (although you'll lose enhancements). Should you wish to consider a special conversion program, you'll find information in another record in this database (identified as XRef #30)."," "," "," "," "," "," "," "," "," " "report; reports; reporting; sort; double; double sort; second; secondary; secondary sort; sorting; sort spec; day; days; date; dates; event; events; birthday; birthdays; anniversary; anniversaries; monthly; next; next month; multiple; multiple sorts; two; two sorts; 1421"," ","I need help. I have tried to do this, but can't figure it out. First, the report. I am creating a report from a 'friends' database. It has a field called BIRTHDAY and one called ANNIVERSARY, both date fields. I want to create a report that prints, for any specific month, anybody who has an anniversary OR birthday in that month. I can handle the extract OK. The report looks like this: NAME BIRTHDAY ANNIVERSARY ==== ======== =========== Stuart Oct 7, 1955 Aug 8, 1982 Lance Nov 15, 1862 Oct 10, 1923 etc etc Two problems: 1) Of the two dates printed, usually only one matches the month requested. For example, if I request October, the report looks like above. How can I have it not print the date that doesn't fall into the requested month? IOW, I want to suppress my anniversary because it is in August, not October. 2) I want to sort by date, but based on EITHER column. I can sort based on ONE column, but how can I have it in order based on both columns? I have grappled with this for several days. Looking forward to seeing some fresh ideas, cause I sure don't have any ."," ",1421, ,"Mar 19, 1996","In order to provide a report that will both have universal appeal and not require constant modification, I set it up so that whenever you print it out, it will provide a report for events occurring in the FOLLOWING month. (If you are not using version 5 then the derived column specs for formula #3 will need to be divided into several specs). Here are the specs: Retrieve Spec ~~~~~~~~~~~~~ BRITHDATE: #1:{@mt(#1)=@mt(@date)+1};{@mt(#1)=@mt(@date)-11} ANNIVERSARY: #2:{@mt(#2)=@mt(@date)+1};{@mt(#2)=@mt(@date)-11} The retrieval method (CTRL/F7) is set to find any records that DO meet ANY of the restrictions. Column/Sort Spec ~~~~~~~~~~~~~~~~ NAME: 10 BIRTHDATE: 20,I ANNIVERSARY: 30,I Derived Columns ~~~~~~~~~~~~~~~ Heading: Birthdate Formula No. 1 @txt(@mt(#20)=@mt(@date)+1 or @mt(#20)=@mt(@date)-11,#20) Column/Sort Spec: 25,F(D) Heading: Anniversary Formula No. 2 @txt(@mt(#30)=@mt(@date)+1 or @mt(#30)=@mt(@date)-11,#30) Column/Sort Spec: 35,F(D) Heading: SORT Formula No. 3 @TN(@TXT(@dom(#25)>''and@dom(#35)>'',@TXT(@DOM(#25)<@DOM(#35),@DOM(#25))+@TXT(@DOM(#35)<@DOM(#25),@DOM(#35)))+@TXT(@DOM(#25)='' OR @DOM(#35)='',@DOM(#25)+@DOM(#35))) Column/Sort Spec: 40,AS,I I hope this is what you're looking for. Good luck!"," "," "," "," "," "," "," "," "," " "post; posting; spec; post spec; posting spec; post problem; posting problem; retrieve; retrieval; retrieve spec; match; no match; no records; fail; fails; failure; template; templates; field template; 1422"," ","I've been trying to post a first name from one data base to another. I am using the telephone number field as the 'link' in both databases and made the field speedy. Even though I have identical numbers in both database, I get a message that 'no records were found.' I made a test record of 555-1212 in BOTH database - so I know that the fields are exact - and tried the post again. I got the same message which CAN'T be right. This is a real mystery! Is there any way you can help me?"," ",1422, ,"Mar 20, 1996","This is one case where I'm almost willing to bet that 'What you see - is NOT NECESSARILY what you get.' Check each database to see whether there is a template(s). Select (F)ile, (D)esign file, (C)ustomize a file (filename), (T) - Field Template. In order for your post to work, BOTH database must share identical templates or neither one should have a template. If one database has, for example ###-#### and the other has nothing, chances are you are entering the phone number as 555-1212 (including the dash) in the database without a template. Although both database APPEAR identical, they ARE NOT. The one WITHOUT a template contains 555-1212 whereas the database WITH a template only contains 5551212. Therefore, as far as Q&A is concerned, the contents do NOT match. (The dash - in the record with a template - is there for 'cosmetic' reasons only and is NOT stored with the data). I hope this resolves the 'mystery' for you."," "," "," "," "," "," "," "," "," " "announcement; release; press release; cis; compuserve; forum; official; official announcement; 1423"," ","May I see the original notification - from the ComupServe forum - that Q&A 5.0 was being released.","5",1423, ,"Mar 20, 1996","Here's a copy of the press release: FOR IMMEDIATE RELEASE CONTACT: David Cagney Andreas Göebel Symantec Corporation PFP Software GmbH +353 1 8205060 +49 2404 93138 SYMANTEC ANNOUNCES Q&A VERSION 5.0 FOR DOS CUPERTINO, Calif.— [DATE] — Symantec Corporation (NASDAQ: SYMC) today introduced Q&A 5.0 for DOS, a major new version of the company's popular flat-file database designer. Version 5.0 boasts a number of new key features requested by users world-wide. Among the most powerful new features are data posting to external databases, color fields, cut and paste (encompassing database and word processor), external program shelling, graphics support and a wealth of new programming commands. Plans to develop further versions of Q&A had been shelved by Symantec in 1994, much to the disappointment of an extremely loyal user base. However, continued R&D into the product in association with a sound technical user base revealed a strong case for a new version with genuine user-specified features. 'Customer demand for a new version has been overwhelming,' according to David Cagney, senior engineer on the product. 'It is hard to turn your back on such a dedicated section of the industry.' Version 5.0 was developed by PFP Software GmbH in conjunction with Symantec (Ireland) Ltd's Localisation Department in Dublin, developers of the famous Norton Commander 5.0. 'Q&A has been designed by the users, for the users,' said Andreas Göebel, development manager at PFP Software GmbH. An extensive survey of customer sites provided the initial design of the new product, as well as the impetus for the development of version 5.0. Q&A continues to show strong sales potential, especially in Europe. Version 5.0 now includes an XPOST facility to write data to, and set up relations between external Q&A databases. It also supports a number of new programming functions that improve the user interface of Q&A applications. WHAT'S NEW IN VERSION 5.0 THE START MENU The new Start Menu makes it easy to launch Q&A and start from where you left off — in your database or word processor — since the last session. This is useful if you regularly use the same database or want to continue working on the last document you were writing. The Start Menu also provides an option to go directly to the Main Menu. THE CLIPBOARD Q&A's new Clipboard makes it easy to transfer text (up to 3K — about a page and a half) between the database, the word processor and the calculator. You can also copy and paste information between fields in the database. You can copy from anywhere within the database, including the Table View; you cannot, however, copy while viewing a picture. THE CALCULATOR The Calculator is useful when you need a convenient way to perform manual calculations. You can paste numbers from your database or document into the calculator, and then paste the results of the calculation back. COLOR Q&A's new color support gives you greater flexibility in designing the look of your database form. You can color each field on your form differently; as well as having a different color for the active field, you can also color background text and field labels. There are many opportunities for using color effectively. For example, you could use programming statements to change the color of a field, perhaps to draw attention to some detail, such as a negative balance in an account. You could hide a field by making the foreground and background the same, using programming statements to prevent the user from entering the field unless a certain condition is met. The careful use of color will also help users in filling out your form. For example, the consistent use of color can define functional blocks on standard company forms, such as green for the address section, and red for financial information. If you use a consistent scheme across all databases in the company, employees and other users of the database will be able to adapt to new forms quickly. LAUNCHING EXTERNAL PROGRAMS You can now launch other programs from within Q&A, including additional copies of Q&A itself! These programs can be other applications or DOS commands such as TYPE or DIR. Furthermore, Q&A provides three special parameters to make it easier to transfer information between Q&A and other applications. You can also use redirection (sending results to a file) or piping (sending results to another program) if it's supported by the program you are launching. In previous versions of Q&A, you could not call external programs from outside the Main Menu, nor did the feature support normal DOS commands or DOS features. Now, in addition to the Main Menu, external programs are available from within the database and the word processor. It also supports DOS commands and special parameters so that you can transfer information between Q&A and the command. NEW PROGRAMMING STATEMENTS Q&A 5 now gives you greater control and flexibility in programming your database with an additional 20 programming statements. Use the new statements to:· Enhance your user interface — Use @PLAY to add sound to fields and present messages to users. @COLOR can add color to backgrounds and text. Present more choices to the user — Q&A now supports list boxes, option boxes, yes / no boxes. Transfer Information between databases — Q&A now lets you modify fields in other databases with many new XLOOKUP commands, including XUSERSELECT, XUSERSELECTR and XPOSTR. Context functions @MODIFIED Indicates if changes have been made to the current record. Text/string functions @INSERT(fn) Loads a Q&A or ASCII text file fn into a database field. User functions @PLAY(Signal, [frequency, length]) Used to generate acoustic signals on the PC's internal speaker. @COLOR(df,tc,bc) Temporarily changes the text and background colors of a field. @MSGBOX(string1, 2, 3) Displays a three-string message. @ASKUSER(string1, 2, 3) Displays a three-string message and asks for response. @SAVE Saves the current record and moves on to the next record. @EXIT Rejects all changes in the current record and exits the data entry function. @FEDIT Starts the field editor for the current field. @SHELL('Name') Starts a file that runs under MS-DOS or an internal DOS command. @MACRO('Macro name' or 'Macro key') Runs a macro. REM 'Comment' Comment on your Q&A program for documentation purposes. LOOKUP and XLOOKUP Commands USERSELECT(,tf) Displays a selection list of character strings; assigns the selected entry to a target field. @USERSELECT('') Displays a selection list of character strings and returns the selected entry. XUSERSELECT('',,) Displays a selection list of the contents of a field in an external database; assigns the selected entry to a target field. XUSERSELECTR('','','','','',) Displays a selection list of the contents of a field in an external database, allowing a specified value range. If an entry is selected, the contents of the external data field is assigned to a target field. @XUSERSELECT('', ) Displays a selection list of the contents of a field in an external database; returns the selected entry or a blank string. @XUSERSELECTR('', '','', '', '') Displays a selection list of the contents of a field in an external database, allowing a specified value range. Returns the contents of the external data field or a blank string as the result. XPOST('',,,,, []) Allows a value to be entered in a field in a record in an external database. The value can be linked with the current value of the target field using the operations ADD, SUB, MUL or DIV. XPOSTR('',,,,, [,]) Allows a value to be entered in a field in a record in an external database. If no records contain the key word, the statement edits the record containing the nearest key word. The value can be linked with the current value of the target field using the operations ADD, SUB, MUL or DIV. Other enhancements Q&A 5.0 has a start-up mode especially for blind users. If required, all screens including on-line help, can carry a flashing cursor for driving single-line Braille output. Pricing and Availability Q&A 5.0 will be available in June 1995 from Symantec and its authorised resellers for an estimated retail price (ERP) of DM985. Registered users of Q&A 4.0 can upgrade to version 5.0 for DM400. Requirements Q&A 5.0 for DOS requires an IBM PC, PS/2 or 100% compatible system, MS-DOS 3.3 or higher, 512K of RAM and (for network utilities) Novell Netware 3.11 or 4.0. Symantec Corporation develops, markets and supports a complete line of application and system software products designed to enhance individual and workgroup productivity as well as manage networked computing environments. Platforms supported include IBM personal computers and compatibles, Apple Macintosh computers and major network operating systems. Founded in 1982, the company has offices in the United States, Canada, Australia, Europe and Japan. Information on the company and its products can be obtained by calling [INSERT PHONE NUMBERS HERE]. Brands and products referred to herein are trademarks or registered trademarks of their respective holders. Commander 4"," "," "," "," "," "," "," "," "," " "count; multiple; value; values; multiple values; repeat; repeated; repeating; repeat values; 5; records; multiple records; duplicate; duplicates; zip; sort; sort by zip; zip code; zip code sort; zip sort; postal; US Post Office; U.S. Post Office; Post Office; group; groups; zip groups; zip code groups; 3 digit; 3 digits; 3-digit; 3-digits; 5 digit; 5 digits; 5-digit; 5-digits; bulk; bulk mail; mail; 1424"," ","I am looking for a way a way to sort (and print labels for) zip codes according to Postal standards. Zip codes need to be in sequence, except that within a 3-digit zip area, identical zip codes of 10 or more - matching on 5 digits - (the last four digits are of no consequence) should come first. Here's an example: 11354 - 8; 11355 - 20; 11356 - 8; 11358 - 20; 11379 - 8 should be sorted 11355; 11358; 11354; 11355; 11356"," ",1424,31,"Mar 24, 1996","The procedure I am going to suggest will require repetitive mass updates, so I strongly suggest that you record a macro so that a simple key stroke(s) will update and sort your records. Before you make any change to your database, please be sure to make a backup, 'just in case.' You will need to redesign your database to include 3 additional fields: ZIP RID: ZIP COUNT: ZIP COMPARE/SORT: The ZIP RID (ZIP Record Identification) and ZIP COUNT fields should be formatted as (N)umber fields and ZIP COMPARE/SORT should be left as (T)ext. The ZIP RID field must be set to 'speedy.' This is the case any time you use a field as a 'primary key field' in an xlookup statement. From your Main menu, simply select: (F)ile, (D)esign file, (C)ustomize a file (filename), (S)peed up Searches ... and complete the Speed-up Spec as ZIP RID:S After creating the fields, create and save four SORT specs, as follows: ZIP: 1,AS Save spec as ZIP COUNT 1 ZIP RID: 1,AS Save spec as ZIP COUNT 2 ZIP RID: 1,DS Save spec as ZIP COUNT 3 ZIP COMPARE/SORT: 1,AS ZIP:2,AS Save spec as ZIP COUNT 4 Next, create and save four Mass UPDATE specs (with the same names as above, respectively), as follows: ZIP RID: #1 = @number ZIP CODE: #1 ZIP RID: #2 ZIP COUNT: #3 ZIP COMPARE/SORT: #4: #3 = ''; #4 = @LT(@XLU (@FN,#2-1,'RID','name'),5); IF #4 = @LT(#1,5) THEN #3 = @XLU (@FN,#2-1,'RID','COUNT')+1 ELSE #3= '1'; IF @ERROR THEN @MSG(' '); CLEAR(#4); ZIP CODE: #1 ZIP RID: #2 ZIP COUNT: #3 ZIP COMPARE/SORT: #4: #4 = @LT(@XLU (@FN,#2+1,'RID','name'),5); IF #4 = @LT(#1,5) THEN #3 = @XLU (@FN,#2+1,'RID','COUNT')+1 ELSE #3= #3; IF @ERROR THEN @MSG(' '); CLEAR(#4); ZIP: #1 ZIP COUNT:#2 ZIP COMPARE/SORT: #3: IF #2 > '9' THEN #3 = @LT(#1,3) + 'A' ELSE #3 = @LT(#1,3) + 'B' Now, you would run each of the first 3 mass updates (with the retrieve spec, in all instances, left blank): (ZIP COUNT 1) sort and update; (ZIP COUNT 2) sort and update; (ZIP COUNT 3) sort and update. At the end of the 3 updates, each record will reflect the number of matching 5-digit zip codes in the 'Count' field. For example, if there are nine records for 11373-####, the COUNT field of each record will show '9.' At this point, you need to run mass update #4, but leave BOTH the retrieve spec AND the sort spec blank. Finally, sort the records using sort spec #4 (when you merge the data with your labels) and your zip codes should be perfectly sequenced. If you put this macro on a custom menu, the entire operation can be performed with a single key stroke. Here's an example of my macro which performs the sort on a database called 'Organz-a' (which happens to be a password protected database: * 'zipsort' fmorganz-auseridpassword zipcount1zipcount1nm zipcount2zipcount2 nmzipcount3 zipcount3nmzipcount4 n Another record in this database, identified as XRef# 31, uses this technique - or an alternative report procedure - to identify records that appear more than 5 times in a database. I hope this information is helpful and results in an 'effortless' procedure. Good luck!"," "," "," "," "," "," "," "," "," " "Report; reports; reporting; cross tab; cross-tab; cross tab report; cross-tab report; Cross Tab Print Options; printer; printers; choose; choice; choice of printers; Diagr; Diagram; Graph; Chart; Q&A.GIX; QA.GIX; GIX; gib; Graphics; Graph-In-The-Box; GIB; Graph In The Box; 1425"," ","In Q&A 5.0 there is a new option on the 'Cross Tab Print Options' screen on the same line as the choice of printers, screen or disk. The new option is 'Diagr'. I tried it, something happened, but I could not find a file or report or anything else. Can you tell me what this is and how to use it. Also, is it documented in any of the manuals?"," ",1425, ,"Mar 27, 1996","I'm told that this option is for use with a software program called 'Graph-In-The-Box' (GBX) from a company called ID Software. This software allows you to create charts directly from within Q&A using the 'print to graph option' from the x-tab print menu. Unfortunately the software is not distributed in the US anymore. It was sold to CAB, Hamburg, Germany. Graph-in-the-box is a TSR program for all kinds of business charts. It looks a bit like the old Harvard Graphics. Q&A 5 has got a link from the cross table to GIB, and that works fine if you have memory enough. You can also grab the data for your charts directly from the screen, a very astonishing effect. As the program is very old (5 years), there is some trouble with printer drivers (no HP deskjet color drivers), but you can export the charts into PCX. GIB is a Swedish (!) program which has been translated into German more than five years ago. I don't know if you can buy it somewhere in the USA, but here's the adrress we know: ID Data AB Box 147 S-18212 Danderyd I can't find any documentation on this option in any of the Q&A manuals; however, when you select the print to Diagr. option, it does create a file called Q&A.GIX. Here's a sample of the file that was created: \VERSION 1.00 \CHARTTYPE 0 \LAYOUT 1, \ATTRIBUTES 5,1 4,1 3,1 7,3 4 \HEADER \VARIABLES 'a' 'a6' 'b' 'c' 'd' \OBSERVATIONS Alec Beulah Bruce Carl Carol date Frank harold Jack Joan john Lilly Lindy michael Ofer Ralph Sarah sherry someone Spencer Stan \DATA 0,0,0,1,0 0,0,1,0,0 1,0,0,0,0 0,0,1,0,0 0,0,0,0,1 1,0,0,0,0 1,0,0,0,0 1,0,0,1,0 0,0,0,1,0 0,0,1,0,0 0,1,0,0,0 0,0,1,0,0 0,0,0,1,0 1,0,0,0,0 0,1,0,0,0 0,0,0,1,0 0,0,1,0,0 0,0,1,0,0 0,0,0,1,0 1,0,0,0,0 1,0,0,0,0 \EOF CAB is on CompuServe, Account #100031,1276. I have written them for additional information and will include it here, if and when available."," "," "," "," "," "," "," "," "," " "internet; network; www; world wide web; web; support; support files; files; download; 1426"," ","How can I get Symantec support files if I don't have CompuServe?"," ",1426, ,"Mar 24, 1996","Thanks to the courtesy of Lance Jacobs, the Symantec employee who is the SYSOP of the Q&A forums, these files are available through the internet. Here's a copy of the announcement (3-19-96) from Lance: 'FYI: Just wanted to point out to everyone that Symantec does make our Q&A support files available world-wide on the Internet. I've included virtually all of the key files from our forum here, including Spencer's excellent Q&A Answerman database. So if you know someone who does not have CompuServe, but has Internet access through AOL, Prodigy, or any other provider, they can reach all of these Q&A DOS support files at: ftp://ftp.symantec.com/public/dos/qa The support files for Q&A Windows can similarly be reached at: ftp://ftp.symantec.com/public/windows/qa Lance Jacobs Q&A and pcANYWHERE Support Analyst Symantec Electronic Technical Support'"," "," "," "," "," ","X"," "," "," " "date; dates; 6 months; 6 months later; add; month; months; add months; add 6 months; 1427"," ","A Q&A database contains fields 'A' and fields 'B'. Both fields are dates. When the user enters a date in field A, I need field B's programmming specs to automatically display a date that is *six* months later, rounded *down* to the first of the month. So, if A = '8/16/95', I would like B to read: '2/1/96'. Is that 'do-able'? "," ",1427, ,"Mar 27, 1996","Of course it's do-able (as is almost anything in Q&A ). Try this: A: #10 B: #20: IF @DOM(#10)<16 THEN #20 = #10 + 185; IF @DOM(#10)>15 THEN #20 = #10 + 180; #20 = @STR(@MT(#20))+'/1/'+@STR(@YR(#20)) This 'assumes' that your programming is set to automatic. You might want to make field B 'read only,' so that the cursor will skip over the field without any special 'goto' programming. If your programming is not set to automatic, you can always use an on-field entry statement such as: A: #10 B: <#20: IF @DOM(#10)<16 THEN #20 = #10 + 185; IF @DOM(#10)>15 THEN #20 = #10 + 180; #20 = @STR(@MT(#20))+'/1/'+@STR(@YR(#20)); CNEXT (Use the Cnext - or a GOTO statement - to skip the field. Since Q&A is completing the programming there is no need for the cursor to stop there)."," "," "," "," "," ","X"," "," "," "