home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-15 | 5.0 KB | 235 lines | [TEXT/ttxt] |
- open database Telephone;
-
- $tsfmt = "DD MMM YY hh:mm:ss";
-
- declare int count = 0;
-
- /*execute file 'startup.dal';*/
-
- declare varchar firstname = '';
- declare varchar lastname = '';
- declare varchar number = '';
- declare integer numbertype = 0;
- declare integer department = 0;
-
- declare integer personid = 0;
- declare varchar numberkey = '';
-
- declare boolean _debug = $FALSE;
-
- declare varchar _NumberCreatedList = 'B.Key = {0,0}';
-
- declare procedure NumberString(_person, _type)
- returns varchar;
- argument integer _person, _type;
- {
- return ' OR B.Key = {' + varchar(:_person) + ',' + varchar(:_type) + '}';
- }
- end procedure NumberString;
-
- declare procedure RemoveFromList(_list, _element)
- returns varchar;
- argument varchar _person, _type;
- {
- return $left(_list, _element) + $right(_list, _element);
- }
- end procedure RemoveFromList;
-
- declare procedure ExecuteAdd()
- {
- if (number == '')
- return;
- AddPersonNumber(firstname, lastname, department, numbertype, number);
- number = '';
- }
- end procedure ExecuteAdd;
-
- declare procedure AddPerson(_name, _surname, _depid)
- returns integer,boolean;
- argument varchar _name;
- argument varchar _surname;
- argument integer _depid = 0;
- {
- integer resultPersonID = $NULL;
- integer created = $FALSE;
- integer NewID = $NULL;
-
- SELECT ID from person where Name = :_name AND Surname = :_surname for extract;
- if ($rows() = 0)
- {
- begin;
- select max(ID)+1 from Person into cTmp;
- fetch of cTmp;
- if ($sqlcode == $sqlnotfound)
- NewID = 100;
- else
- NewID = cTmp->1;
-
- /* Insert into the database: */
- if (_surname == "")
- _surname = "Person" + varchar(NewID);
- insert Person values (NewID, _name, _surname, _depid);
- commit;
- resultPersonID = :NewID;
- created = $TRUE;
- }
- else
- {
- fetch;
- resultPersonID = ->ID;
- }
- return resultPersonID, created;
- }
- end procedure AddPerson;
-
- declare procedure AddNumber(_personId, _numberType, _number)
- returns boolean;
- argument integer _personId;
- argument integer _numberType;
- argument varchar _number = '0000';
- {
- if (_debug)
- print 'AddNumber', _personId, _numberType, _number;
- boolean result = $FALSE;
- if (_personId IS NULL OR _numberType IS NULL)
- return result;
- SELECT count(*) from Number where Person = :_personId AND Type = :_numberType;
- FETCH;
- if (->1 = 0)
- {
- /* Insert into the database: */
- insert Number values (_personId, _numberType, _number);
- _NumberCreatedList = _NumberCreatedList + NumberString(_personId, _numberType);
- result = $TRUE;
- }
- return result;
- }
- end procedure AddNumber;
-
- declare procedure AddPersonNumber(_name, _surname, _depid, _numberType, _number)
- returns boolean;
- argument varchar _name;
- argument varchar _surname;
- argument integer _depid = 0;
- argument integer _numberType;
- argument varchar _number;
- {
- boolean result;
- integer personid;
-
- AddPerson(_name, _surname, _depid) returning personid, result;
- result = AddNumber(personid, _numberType, _number);
- return result;
- }
- end procedure AddPersonNumber;
-
- declare procedure RemoveNumber(_key)
- argument varchar _key;
- {
- integer personid;
- integer numbertype;
-
- if (_key IS NULL)
- return;
- if (_key == "")
- return;
-
- personid = $left(:_key, ',');
- numbertype = $right(:_key, ',');
-
- BEGIN;
-
- DELETE Number where Person = :personid AND Type = :numbertype;
- _NumberCreatedList = RemoveFromList(_NumberCreatedList, NumberString(personid, numbertype));
-
- /* Remove the person if the person has no more numbers: */
- SELECT count(*) FROM Number WHERE Person = $left(:_key, ',');
- FETCH;
- if (->1 = 0)
- DELETE Person WHERE ID = $left(:_key, ',');
- COMMIT;
- }
- end procedure RemoveNumber;
-
- declare procedure PrintTable(c, maxrows)
- argument cursor c;
- argument integer maxrows = 0;
- {
- int i;
- int j = 0;
- varchar v;
-
- if ((maxrows > 0) AND ($rows(c) >= maxrows))
- {
- print 'More than ', :maxrows, ' entries found, ', :maxrows, ' entries dispayed.';
- }
-
- if ($rows(c) > 0)
- {
- print "<TABLE border cellspacing=0 cellpadding=5>";
- /* Print the headings: */
- print "<TR>";
- for (i=1; i<=$cols(c); i++) {
- print "<TH>";
- print $colname(c, i);
- print "</TH>";
- }
- print "</TR>";
-
- /* Print the data: */
- for each c {
- print "<TR>";
- for (i=1; i<=$cols(c); i++) {
- print "<TD>";
- v = varchar c->:i;
- if ($len(v) == 0 or v is null)
- print "-";
- else
- print v;
- print "</TD>";
- }
- print "</TR>";
- }
- print "</TABLE>";
- }
- else
- {
- print 'No entries found.';
- }
- }
- end procedure PrintTable;
-
- declare procedure PrintList(c, ListName, size, selValue)
- argument cursor c;
- argument varchar ListName = 'popup';
- argument integer size = 1;
- argument varchar selValue = $NULL;
- {
- int i;
- varchar v;
-
- print "<SELECT NAME=""", ListName,""" SIZE=",size,">";
- /* Print the headings: */
- if ($cols(c) < 2)
- {
- print "<P>Please use a cursor with 2 columns";
- print "First = Item, Second = Value<P>";
- return;
- }
-
- /* Print the data: */
- for each c
- {
- if ((selValue IS NOT NULL) AND (selValue == c->1))
- print '<OPTION VALUE= "', varchar (c->1),'" SELECTED>',varchar (c->2);
- else
- print '<OPTION VALUE= "', varchar (c->1),'">',varchar (c->2);
- }
- print "</SELECT>";
- }
- end procedure PrintList;
-
-
-
-
-