home *** CD-ROM | disk | FTP | other *** search
/ MACup: Giveaway 1996 / Image.iso / Shareware & Demos / Web-Publishing / SNAP PrimeBase / WebDAL / goweb / PrimeBase Setup / startup.dal < prev    next >
Encoding:
Text File  |  1996-07-15  |  5.0 KB  |  235 lines  |  [TEXT/ttxt]

  1. open database Telephone;
  2.  
  3. $tsfmt = "DD MMM YY hh:mm:ss";
  4.  
  5. declare int count = 0;
  6.  
  7. /*execute file 'startup.dal';*/
  8.  
  9. declare varchar firstname = '';
  10. declare varchar lastname = '';
  11. declare varchar number = '';
  12. declare integer numbertype = 0;
  13. declare integer department = 0;
  14.  
  15. declare integer personid = 0;
  16. declare varchar numberkey = '';
  17.  
  18. declare boolean _debug = $FALSE;
  19.  
  20. declare varchar _NumberCreatedList = 'B.Key = {0,0}';
  21.  
  22. declare procedure NumberString(_person, _type)
  23. returns varchar;
  24. argument integer _person, _type;
  25. {
  26.     return ' OR B.Key = {' + varchar(:_person) + ',' + varchar(:_type) + '}';
  27. }
  28. end procedure NumberString;
  29.  
  30. declare procedure RemoveFromList(_list, _element)
  31. returns varchar;
  32. argument varchar _person, _type;
  33. {
  34.     return $left(_list, _element) + $right(_list, _element);
  35. }
  36. end procedure RemoveFromList;
  37.  
  38. declare procedure ExecuteAdd()
  39. {
  40.     if (number == '')
  41.         return;
  42.     AddPersonNumber(firstname, lastname, department, numbertype, number);
  43.     number = '';
  44. }
  45. end procedure ExecuteAdd;
  46.  
  47. declare procedure AddPerson(_name, _surname, _depid)
  48. returns integer,boolean;
  49. argument varchar _name;
  50. argument varchar _surname;
  51. argument integer _depid = 0;
  52. {
  53.     integer resultPersonID = $NULL;
  54.     integer created = $FALSE;
  55.     integer NewID = $NULL;
  56.  
  57.     SELECT ID from person where Name = :_name AND Surname = :_surname for extract;
  58.     if ($rows() = 0)
  59.     {        
  60.         begin;
  61.         select max(ID)+1 from Person into cTmp;
  62.         fetch of cTmp;
  63.         if ($sqlcode == $sqlnotfound)
  64.             NewID = 100;
  65.         else
  66.             NewID = cTmp->1;
  67.  
  68.         /* Insert into the database: */
  69.         if (_surname == "")
  70.             _surname = "Person" + varchar(NewID);
  71.         insert Person values (NewID, _name, _surname, _depid);
  72.         commit;
  73.         resultPersonID = :NewID;
  74.         created = $TRUE;
  75.     }
  76.     else
  77.     {
  78.         fetch;
  79.         resultPersonID = ->ID;
  80.     }
  81.     return resultPersonID, created;
  82. }
  83. end procedure AddPerson;
  84.  
  85. declare procedure AddNumber(_personId, _numberType, _number)
  86. returns boolean;
  87. argument integer _personId;
  88. argument integer _numberType;
  89. argument varchar _number = '0000';
  90. {
  91.     if (_debug)
  92.         print 'AddNumber', _personId, _numberType, _number;
  93.     boolean result = $FALSE;
  94.     if (_personId IS NULL OR _numberType IS NULL)
  95.         return result;
  96.     SELECT count(*) from Number where Person = :_personId AND Type = :_numberType;
  97.     FETCH;
  98.     if (->1 = 0)
  99.     {
  100.         /* Insert into the database: */
  101.         insert Number values (_personId, _numberType, _number);
  102.         _NumberCreatedList = _NumberCreatedList + NumberString(_personId, _numberType);
  103.         result = $TRUE;
  104.     }
  105.     return result;
  106. }
  107. end procedure AddNumber;
  108.  
  109. declare procedure AddPersonNumber(_name, _surname, _depid, _numberType, _number)
  110. returns boolean;
  111. argument varchar _name;
  112. argument varchar _surname;
  113. argument integer _depid = 0;
  114. argument integer _numberType;
  115. argument varchar _number;
  116. {
  117.     boolean result;
  118.     integer personid;
  119.  
  120.     AddPerson(_name, _surname, _depid) returning personid, result;
  121.     result = AddNumber(personid, _numberType, _number);
  122.     return result;
  123. }
  124. end procedure AddPersonNumber;
  125.  
  126. declare procedure RemoveNumber(_key)
  127. argument varchar _key;
  128. {
  129.     integer personid;
  130.     integer numbertype;
  131.  
  132.     if (_key IS NULL)
  133.         return;
  134.     if (_key == "")
  135.         return;
  136.  
  137.     personid = $left(:_key, ',');
  138.     numbertype = $right(:_key, ',');
  139.  
  140.     BEGIN;
  141.  
  142.     DELETE Number where Person = :personid AND Type = :numbertype;
  143.     _NumberCreatedList = RemoveFromList(_NumberCreatedList, NumberString(personid, numbertype));
  144.  
  145.     /* Remove the person if the person has no more numbers: */
  146.     SELECT count(*) FROM Number WHERE Person = $left(:_key, ',');
  147.     FETCH;
  148.     if (->1 = 0)
  149.         DELETE Person WHERE ID = $left(:_key, ',');
  150.     COMMIT;
  151. }
  152. end procedure RemoveNumber;
  153.  
  154. declare procedure PrintTable(c, maxrows)
  155. argument cursor c;
  156. argument integer maxrows = 0;
  157. {
  158.     int i;
  159.     int j = 0;
  160.     varchar v;
  161.  
  162.     if ((maxrows > 0) AND ($rows(c) >= maxrows))
  163.     {
  164.         print 'More than ', :maxrows, ' entries found, ', :maxrows, ' entries dispayed.';
  165.     }
  166.  
  167.     if ($rows(c) > 0)
  168.     {
  169.         print "<TABLE border cellspacing=0 cellpadding=5>";
  170.         /* Print the headings: */
  171.         print "<TR>";
  172.         for (i=1; i<=$cols(c); i++) {
  173.             print "<TH>";
  174.             print $colname(c, i);
  175.             print "</TH>";
  176.         }
  177.         print "</TR>";
  178.  
  179.         /* Print the data: */
  180.         for each c {
  181.             print "<TR>";
  182.             for (i=1; i<=$cols(c); i++) {
  183.                 print "<TD>";
  184.                 v = varchar c->:i;
  185.                 if ($len(v) == 0 or v is null)
  186.                     print "-";
  187.                 else
  188.                     print v;
  189.                 print "</TD>";
  190.             }
  191.             print "</TR>";
  192.         }
  193.         print "</TABLE>";
  194.     }
  195.     else
  196.     {
  197.         print 'No entries found.';
  198.     }
  199. }
  200. end procedure PrintTable;
  201.  
  202. declare procedure PrintList(c, ListName, size, selValue)
  203. argument cursor c;
  204. argument varchar ListName = 'popup';
  205. argument integer size = 1;
  206. argument varchar selValue = $NULL;
  207. {
  208.     int i;
  209.     varchar v;
  210.  
  211.     print "<SELECT NAME=""", ListName,""" SIZE=",size,">";
  212.     /* Print the headings: */
  213.     if ($cols(c) < 2)
  214.     {
  215.         print "<P>Please use a cursor with 2 columns";
  216.         print "First = Item, Second = Value<P>";
  217.         return;
  218.     }
  219.  
  220.     /* Print the data: */
  221.     for each c 
  222.     {
  223.         if ((selValue IS NOT NULL) AND (selValue == c->1))
  224.             print '<OPTION VALUE= "', varchar (c->1),'" SELECTED>',varchar (c->2);
  225.         else
  226.             print '<OPTION VALUE= "', varchar (c->1),'">',varchar (c->2);
  227.     }
  228.     print "</SELECT>";
  229. }
  230. end procedure PrintList;
  231.  
  232.  
  233.  
  234.  
  235.