home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / ib / setups / intrabld / data.z / CUSTORD.JFM < prev    next >
Text File  |  1996-12-11  |  13KB  |  521 lines

  1. /****************************************************************************\
  2. *                                                                            *
  3. * CustOrd.jfm  --  Customer Order Sample Form                                *
  4. *                                                                            *
  5. * CustOrd.jfm is a stand-alone sample form that demonstrates several things. *
  6. * It uses two Query objects and relates the tables using the rowset          *
  7. * properties. It uses client side events to control the calling of the       *
  8. * server. The client side events submit the form which causes it to be re-   *
  9. * rendered on the server.                                                    *
  10. *                                                                            *
  11. * Note: When using the form in some older browsers, you must leave the       *
  12. *       Select control for the onChange event to fire. To view another       *
  13. *       customer or order simply select one in the Select control and click  *
  14. *       on the background area.  Beta 5 of Netscape Navigator 3.0 does not   *
  15. *       have this problem.                                                   *
  16. *                                                                            *
  17. * Updated 11/13/96 by IntraBuilder Samples Group                             *
  18. * $Revision:   1.12  $                                                        *
  19. *                                                                            *
  20. * Copyright (c) 1996, Borland International, Inc. All rights reserved.       *
  21. *                                                                            *
  22. \****************************************************************************/
  23. #include "intra.h"
  24. // {End Header} Do not remove this comment//
  25. // Generated on 11/13/96
  26. //
  27. var f = new custordForm();
  28. f.open();
  29. class custordForm extends Form {
  30.    with (this) {
  31.       onServerSubmit = class::form_onServerSubmit;
  32.       onServerLoad = class::form_onServerLoad;
  33.       height = 14.6667;
  34.       left = 0;
  35.       top = 0;
  36.       width = 76;
  37.       title = "Customer Orders";
  38.    }
  39.  
  40.  
  41.    with (this.query1 = new Query()){
  42.       left = 60;
  43.       top = 0;
  44.       sql = 'select * from "customer.dbf"';
  45.  
  46.       active = true;
  47.    }
  48.  
  49.  
  50.    with (this.query1.rowset) {
  51.  
  52.       autoEdit = false;
  53.    }
  54.  
  55.  
  56.    with (this.query2 = new Query()){
  57.       left = 64;
  58.       top = 0;
  59.       sql = 'select * from "orders.dbf"';
  60.  
  61.       active = true;
  62.    }
  63.  
  64.  
  65.    with (this.query2.rowset) {
  66.  
  67.       autoEdit = false;
  68.       indexName = "CUSTOMER_N";
  69.       masterRowset = parent.parent.query1.rowset;
  70.       masterFields = "customer_n";
  71.    }
  72.  
  73.  
  74.    with (this.rule1 = new Rule(this)){
  75.       top = 9.5;
  76.       size = 2;
  77.       right = 70;
  78.    }
  79.  
  80.  
  81.    with (this.rule2 = new Rule(this)){
  82.       top = 1.5;
  83.       size = 2;
  84.       right = 70;
  85.    }
  86.  
  87.  
  88.    with (this.rule3 = new Rule(this)){
  89.       top = 17.5;
  90.       size = 2;
  91.       right = 70;
  92.    }
  93.  
  94.  
  95.    with (this.Street = new Text(this)){
  96.       top = 5;
  97.       width = 28;
  98.       dataLink = parent.query1.rowset.fields["STREET"];
  99.    }
  100.  
  101.  
  102.    with (this.City = new Text(this)){
  103.       top = 6;
  104.       width = 12;
  105.       dataLink = parent.query1.rowset.fields["CITY"];
  106.    }
  107.  
  108.  
  109.    with (this.State_prov = new Text(this)){
  110.       left = 14;
  111.       top = 6;
  112.       width = 4;
  113.       dataLink = parent.query1.rowset.fields["STATE_PROV"];
  114.    }
  115.  
  116.  
  117.    with (this.Zip_postal = new Text(this)){
  118.       left = 22;
  119.       top = 6;
  120.       width = 6;
  121.       dataLink = parent.query1.rowset.fields["ZIP_POSTAL"];
  122.    }
  123.  
  124.  
  125.    with (this.Country = new Text(this)){
  126.       top = 7;
  127.       width = 18;
  128.       dataLink = parent.query1.rowset.fields["COUNTRY"];
  129.    }
  130.  
  131.  
  132.    with (this.Phone = new Text(this)){
  133.       top = 8;
  134.       width = 18;
  135.       dataLink = parent.query1.rowset.fields["PHONE"];
  136.    }
  137.  
  138.  
  139.    with (this.First_cont = new Text(this)){
  140.       left = 50;
  141.       top = 6;
  142.       width = 12;
  143.       dataLink = parent.query1.rowset.fields["FIRST_CONT"];
  144.    }
  145.  
  146.  
  147.    with (this.Ytd_sales = new Text(this)){
  148.       left = 50;
  149.       top = 7;
  150.       width = 12;
  151.       dataLink = parent.query1.rowset.fields["YTD_SALES"];
  152.    }
  153.  
  154.  
  155.    with (this.HTML1 = new HTML(this)){
  156.       height = 1;
  157.       left = 32;
  158.       top = 6;
  159.       width = 12;
  160.       color = "black";
  161.       alignVertical = 1;
  162.       text = "First Contact";
  163.    }
  164.  
  165.  
  166.    with (this.HTML2 = new HTML(this)){
  167.       height = 1;
  168.       left = 32;
  169.       top = 7;
  170.       width = 12;
  171.       color = "black";
  172.       alignVertical = 1;
  173.       text = "Year to Date";
  174.    }
  175.  
  176.  
  177.    with (this.HTML3 = new HTML(this)){
  178.       height = 1;
  179.       top = 13;
  180.       width = 14;
  181.       color = "black";
  182.       alignVertical = 1;
  183.       text = "Sale Date";
  184.    }
  185.  
  186.  
  187.    with (this.Sale_date = new Text(this)){
  188.       left = 14;
  189.       top = 13;
  190.       width = 8;
  191.       dataLink = parent.query2.rowset.fields["SALE_DATE"];
  192.    }
  193.  
  194.  
  195.    with (this.HTML4 = new HTML(this)){
  196.       height = 1;
  197.       top = 14;
  198.       width = 14;
  199.       color = "black";
  200.       alignVertical = 1;
  201.       text = "Ship Date";
  202.    }
  203.  
  204.  
  205.    with (this.Ship_date = new Text(this)){
  206.       left = 14;
  207.       top = 14;
  208.       width = 8;
  209.       dataLink = parent.query2.rowset.fields["SHIP_DATE"];
  210.    }
  211.  
  212.  
  213.    with (this.HTML5 = new HTML(this)){
  214.       height = 1;
  215.       top = 15;
  216.       width = 14;
  217.       color = "black";
  218.       alignVertical = 1;
  219.       text = "Ship Via";
  220.    }
  221.  
  222.  
  223.    with (this.Ship_via = new Text(this)){
  224.       left = 14;
  225.       top = 15;
  226.       width = 8;
  227.       dataLink = parent.query2.rowset.fields["SHIP_VIA"];
  228.    }
  229.  
  230.  
  231.    with (this.HTML6 = new HTML(this)){
  232.       height = 1;
  233.       left = 30;
  234.       top = 14;
  235.       width = 18;
  236.       color = "black";
  237.       alignVertical = 1;
  238.       text = "Amount Paid";
  239.    }
  240.  
  241.  
  242.    with (this.Amt_paid = new Text(this)){
  243.       left = 48;
  244.       top = 14;
  245.       width = 10;
  246.       dataLink = parent.query2.rowset.fields["AMT_PAID"];
  247.    }
  248.  
  249.  
  250.    with (this.HTML7 = new HTML(this)){
  251.       height = 1;
  252.       top = 16;
  253.       width = 14;
  254.       color = "black";
  255.       alignVertical = 1;
  256.       text = "Terms";
  257.    }
  258.  
  259.  
  260.    with (this.Terms = new Text(this)){
  261.       left = 14;
  262.       top = 16;
  263.       width = 8;
  264.       dataLink = parent.query2.rowset.fields["TERMS"];
  265.    }
  266.  
  267.  
  268.    with (this.HTML8 = new HTML(this)){
  269.       height = 1;
  270.       left = 30;
  271.       top = 13;
  272.       width = 18;
  273.       color = "black";
  274.       alignVertical = 1;
  275.       text = "Payment Method";
  276.    }
  277.  
  278.  
  279.    with (this.Pay_method = new Text(this)){
  280.       left = 48;
  281.       top = 13;
  282.       width = 10;
  283.       dataLink = parent.query2.rowset.fields["PAY_METHOD"];
  284.    }
  285.  
  286.  
  287.    with (this.HTML9 = new HTML(this)){
  288.       height = 1;
  289.       left = 30;
  290.       top = 15;
  291.       width = 18;
  292.       color = "black";
  293.       alignVertical = 1;
  294.       text = "Total";
  295.    }
  296.  
  297.  
  298.    with (this.Total = new Text(this)){
  299.       left = 48;
  300.       top = 15;
  301.       width = 10;
  302.       dataLink = parent.query2.rowset.fields["TOTAL"];
  303.    }
  304.  
  305.  
  306.    with (this.customerSelect = new Select(this)){
  307.       onChange = class::customerSelect_onChange;
  308.       top = 4;
  309.       width = 30;
  310.    }
  311.  
  312.  
  313.    with (this.orderSelect = new Select(this)){
  314.       onChange = class::orderSelect_onChange;
  315.       left = 14;
  316.       top = 12;
  317.       width = 16;
  318.    }
  319.  
  320.  
  321.    with (this.HTML10 = new HTML(this)){
  322.       height = 1;
  323.       top = 12;
  324.       width = 14;
  325.       color = "black";
  326.       alignVertical = 1;
  327.       text = "Order Number";
  328.    }
  329.  
  330.  
  331.    with (this.HTML11 = new HTML(this)){
  332.       height = 1.5;
  333.       width = 70;
  334.       color = "black";
  335.       text = "<H1>Customer Orders</H1>";
  336.    }
  337.  
  338.  
  339.    with (this.HTML12 = new HTML(this)){
  340.       height = 1;
  341.       top = 10;
  342.       width = 70;
  343.       color = "black";
  344.       text = "<H2>Orders for this customer</H2>";
  345.    }
  346.  
  347.  
  348.    with (this.HTML13 = new HTML(this)){
  349.       height = 1;
  350.       top = 2;
  351.       width = 70;
  352.       color = "black";
  353.       text = "<H2>Customer Profile</H2>";
  354.    }
  355.  
  356.  
  357.    with (this.HTML14 = new HTML(this)){
  358.       height = 1;
  359.       top = 18;
  360.       width = 70;
  361.       color = "black";
  362.       text = {||"<ADDRESS>Generated by IntraBuilder on " + new Date() + "</ADDRESS>"};
  363.    }
  364.  
  365.  
  366.    with (this.whatChanged = new Hidden(this)){
  367.       left = 68;
  368.       value = 0;
  369.    }
  370.  
  371.  
  372.    with (this.customerButton = new Button(this)){
  373.       onServerClick = class::customerButton_onServerClick;
  374.       left = 32;
  375.       top = 8;
  376.       width = 16;
  377.       text = "Edit Customer";
  378.    }
  379.  
  380.  
  381.    with (this.orderButton = new Button(this)){
  382.       onServerClick = class::orderButton_onServerClick;
  383.       left = 30;
  384.       top = 16;
  385.       width = 16;
  386.       text = "Edit Orders";
  387.    }
  388.  
  389.  
  390.    with (this.saveCustomer = new Hidden(this)){
  391.       left = 50;
  392.       top = 8;
  393.       value = 0;
  394.    }
  395.  
  396.  
  397.    with (this.saveOrder = new Hidden(this)){
  398.       left = 48;
  399.       top = 16;
  400.       value = 0;
  401.    }
  402.  
  403.    this.rowset = this.query1.rowset;
  404.  
  405.    function form_onServerLoad()
  406.    {
  407.       var name;
  408.       // fill customer array
  409.       this.custArray = new Array();
  410.       while (!this.query1.rowset.endOfSet) {
  411.          name = new StringEx(this.query1.rowset.fields["name"].value);
  412.          name = name.rightTrim();
  413.          this.custArray.add(name);
  414.          this.query1.rowset.next();
  415.       }
  416.       this.query1.rowset.first();
  417.       // assign options and value
  418.       this.custArray.sort();
  419.       this.customerSelect.options="array this.custArray";
  420.       this.customerSelect.value = this.custArray[0];
  421.       // set new customer flag and call onServerSubmit
  422.       this.whatChanged.value = 1;
  423.       class::form_onServerSubmit();
  424.    }
  425.  
  426.    function submit() 
  427.    {
  428.       this.form_onServerSubmit();
  429.    }
  430.  
  431.    function customerButton_onServerClick()
  432.    {
  433.       if (this.text == 'Save Customer') {
  434.          this.form.query1.rowset.save();
  435.          this.text = 'Edit Customer';
  436.       }
  437.       else {
  438.          this.form.query1.rowset.beginEdit();
  439.          this.text = 'Save Customer';
  440.       }
  441.    }
  442.  
  443.    function orderButton_onServerClick()
  444.    {
  445.       if (this.text == 'Save Order') {
  446.          this.form.query2.rowset.save();
  447.          this.text = 'Edit Order';
  448.       }
  449.       else {
  450.          this.form.query2.rowset.beginEdit();
  451.          this.text = 'Save Order';
  452.       }
  453.    }
  454.  
  455.    function form_onServerSubmit(notForm, formRef)
  456.    {
  457.       var frm = notForm ? formRef : this;
  458.       var change = parseInt(frm.whatChanged.value);
  459.       switch (change) {
  460.       case 1:  // customer has changed
  461.          if (frm.query2.rowset.state == STATE_EDIT) {
  462.             frm.query2.rowset.abandon();
  463.             frm.orderButton.text = 'Edit Order';
  464.          }
  465.          if (frm.query1.rowset.state == STATE_EDIT) {
  466.             frm.query1.rowset.abandon();
  467.             frm.customerButton.text = 'Edit Customer';
  468.          }
  469.          var x=frm.query1.rowset.applyLocate("Name='" + escapeChar(frm.customerSelect.value,"'") + "'");
  470.          //
  471.          // fill order array
  472.          //
  473.          frm.orderArray = new Array();
  474.          frm.query2.rowset.first();
  475.          while (!frm.query2.rowset.endOfSet) {
  476.             frm.orderArray.add(frm.query2.rowset.fields["Order_no"].value);
  477.             frm.query2.rowset.next();
  478.          }
  479.          frm.query2.rowset.first();
  480.          // assign options and value
  481.          frm.orderSelect.options="array frm.orderArray";
  482.          if (frm.orderArray.length > 0) 
  483.             frm.orderSelect.value = frm.orderArray[0];
  484.          break;
  485.       case 2:
  486.          if (frm.query2.rowset.state == STATE_EDIT) {
  487.             frm.query2.rowset.abandon();
  488.             frm.orderButton.text = 'Edit Order';
  489.          }
  490.          frm.query2.rowset.applyLocate("Order_no='" + frm.orderSelect.value + "'");
  491.          break;
  492.       }
  493.       frm.whatChanged.value = 0;
  494.    }
  495.  
  496.    function customerSelect_onChange()
  497.    {
  498.       this.form.whatChanged.value = 1;  // 1 for customer select
  499.       this.form.submit();
  500.    }
  501.  
  502.    function orderSelect_onChange()
  503.    {
  504.       this.form.whatChanged.value = 2;  // 2 for order select
  505.       this.form.submit();
  506.    }
  507.  
  508. }
  509. function escapeChar(str,chr) 
  510. {
  511.    var offset = last = 0;
  512.    var returnVal = ""; 
  513.    while(str.indexOf(chr,last) >= 0) {
  514.       offset = str.indexOf(chr,last);
  515.       returnVal += str.substring(last, offset) + "\\" + chr;
  516.       last = offset+1;
  517.    } 
  518.    returnVal += str.substring(last,str.length);
  519.    return returnVal;
  520. }
  521.