home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource1 / chint / useful05.hnt < prev    next >
Text File  |  1992-03-26  |  2KB  |  61 lines

  1.   ## WARNING ##
  2.  
  3.   Unfortunately this does not appear to be practical in DataBoss for "C"
  4.   because the total memory needed by both programs is excessive, ie you
  5.   get a "Not Enough Memory" error when you attempt to spawn the program.
  6.  
  7. /*
  8.   A function that runs a report directly from the database, that can pass
  9.   a command line parameter, (presumably a database field like an account
  10.   number), that could be used in the report range checking or as a
  11.   start/end key value.
  12.  
  13.   NOTE : The DataBase program itself will need to have the line
  14.  
  15.   #include <process.h>
  16.  
  17.   added to the top of the program.
  18.  
  19. */
  20.  
  21. void run_Report(string progName)
  22. {
  23.   int spawnres;         /* check in spawn() suceeded */
  24.   string CL;            /* store a command line      */
  25.   long savR;            /* save current position     */
  26.   cursortyp saveCurs;   /* save cursor               */
  27.  
  28.   strcpy(CL," -1Alex_Was_Here");
  29.   if(lcd) strcat(CL," -LCD");        /* Pass LCD mode to the report    */
  30.   if (!ehk) strcat(CL," -K");        /* Suppress keyboard if necessary */
  31.   savR = recno[1];
  32.   closefiles();        /* Free up all the files for the report to open */
  33.   curfun(_GetCurs,&saveCurs);                  /* store current cursor */
  34.   curfun(_SetCTyp,&linecurs);   /* restore the normal underline cursor */
  35.   spawnres = spawnlp(P_WAIT,progName,progName,CL);   /* Run the report */
  36.   if (spawnres == -1) spawnres = errno;
  37.   curfun(_SetCTyp,&saveCurs);         /* restore cursor to saved state */
  38.   openfiles();                                /* Re-Open all the files */
  39.   dispallwin();
  40.   align_rec(savR);                            /* Re-Align the database */
  41. }
  42.  
  43.  
  44. ***** The follow is a simple procedure that will get the command line *****
  45. ***** parameter string passed by "run_Report".                        *****
  46.  
  47. string theStart;  /* A global variable for range checks */
  48.  
  49. void setStart(void)
  50. {
  51.   int i;
  52.   string TS;
  53.  
  54.   strcpy(theStart,"zzzzz");  /* Initialize start to some value */
  55.   for (i = 1; i <= paramcount(); i++) {
  56.     strcpy(TS,paramstr(i));
  57.     if ((TS[0] == '-') && (TS[1] == '1'))
  58.       strcopy(theStart,TS,2,strlen(TS)-2);
  59.   }
  60. }
  61.