home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource1 / chint / useful30.hnt < prev    next >
Text File  |  1993-10-29  |  2KB  |  46 lines

  1. This useful hint has a simple function that can be used in the field
  2. validation box of a field that allows "Duplicates" to eliminate
  3. duplicate entries unless the key field has been left blank.
  4.  
  5.  
  6. bool onlyEmptyDups(int fno, int kno, strptr keyfield)
  7. {
  8.   bool fval, savok;
  9.   keystr ks;
  10.   long rno;
  11.  
  12.   fval = empty(keyfield);                  /* No problem if it's empty */
  13.   if (!fval) {
  14.     savok = ok;                       /* Save the global variable "OK" */
  15.     strcpy(ks,keyfield);             /* tk is the key we need to check */
  16.     findkey(idxkey[fno][kno],&rno,ks);           /* Try to locate "tk" */
  17.     fval = !ok;                    /* if OK == True, it's already used */
  18.     ok = savok;                      /* restore original value of "OK" */
  19.   }
  20.   return(fval);                 /* return our findings to the function */
  21. }
  22.  
  23.  
  24. You would use this function in the "Validation Expression" of the
  25. field definition of the field that is the key, combined with an "Error
  26. Message" like :--  "This File Number is already in use, try another."
  27. This function is for "C"haracter fields that are keys.  If the key has
  28. a key expression then you would need to use that when calling the
  29. function, EG:--
  30.  
  31.      File Number     :   1
  32.      Field Name      :   ACCT_CODE
  33.      Key Number      :   1
  34.      Allow Duplicates:   Yes
  35.      Key Expression  :   upper(_tts,{})
  36.      Validation Exp. :   onlyEmptyDups(1,1,upper(_tts,{}))
  37.  
  38.  
  39. If the field is a "N"umeric field then you would need to use a
  40. slightly different function.  It could also be in the same function
  41. file, and would look exactly the same as "onlyEmptyDups" except that
  42. :--
  43.  
  44. 1.   You would replace occurances of onlyEmptyDups with onlyZeroDups
  45. 2.   The line after the beginning "{" becomes :-
  46.           fval = (valu(keyfield) == 0);