home *** CD-ROM | disk | FTP | other *** search
/ BUG 15 / BUGCD1998_06.ISO / aplic / jbuilder / jsamples.z / Lookup_Frame.java < prev    next >
Text File  |  1997-07-24  |  4KB  |  83 lines

  1. package  borland.samples.tutorial.dataset.lookup;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import borland.jbcl.control.*;
  6. import borland.jbcl.layout.*;
  7. import borland.jbcl.dataset.*;
  8.  
  9. public class Lookup_Frame extends DecoratedFrame {
  10.   BorderLayout borderLayout1 = new BorderLayout();
  11.   BevelPanel bevelPanel1 = new BevelPanel();
  12.   Database database1 = new Database();
  13.   QueryDataSet queryDataSet1 = new QueryDataSet();
  14.   QueryDataSet queryDataSet2 = new QueryDataSet();
  15.   GridControl gridControl1 = new GridControl();
  16.   Column column1 = new Column();
  17.   GridBagLayout gridBagLayout1 = new GridBagLayout();
  18.  
  19.    //Construct the frame
  20.   public Lookup_Frame() {
  21.     try {
  22.       jbInit();
  23.     }
  24.     catch (Exception e) {
  25.       borland.jbcl.util.Diagnostic.printStackTrace(e);
  26.     }
  27.   }
  28.   //Component initialization
  29.   public void jbInit() throws Exception{
  30.     this.setLayout(borderLayout1);
  31.     this.setTitle("Using Calculated Field for Lookup");
  32.     bevelPanel1.setLayout(gridBagLayout1);
  33.     database1.setConnection(new borland.jbcl.dataset.ConnectionDescriptor("jdbc:odbc:dataset tutorial", "sysdba", "masterkey", false, "sun.jdbc.odbc.JdbcOdbcDriver;borland.interclient.Driver"));
  34.     queryDataSet1.setQuery(new borland.jbcl.dataset.QueryDescriptor(database1, "select * from EMPLOYEE_PROJECT", null, true, false));
  35.     queryDataSet1.addCalcFieldsListener(new Lookup_Frame_queryDataSet1_calcFieldsAdapter(this));
  36.     queryDataSet2.setQuery(new borland.jbcl.dataset.QueryDescriptor(database1, "select EMP_NO, FIRST_NAME, LAST_NAME from EMPLOYEE", null, true, false));
  37.  
  38.     // No UI controls are bound to queryDataSet2, so it's not opened implicitly
  39.     // when the frame opens.  We have to open it here - otherwise, its column
  40.     // are unknown when the code in the calcFields method is executed.  
  41.     queryDataSet2.open();
  42.  
  43.     gridControl1.setDataSet(queryDataSet1);
  44.     column1.setCalcType(borland.jbcl.dataset.CalcType.CALC);
  45.     column1.setCaption("EMPLOYEE_NAME");
  46.     column1.setColumnName("EMPLOYEE_NAME");
  47.     column1.setDataType(borland.jbcl.util.Variant.STRING);
  48.     this.add(bevelPanel1, BorderLayout.CENTER);
  49.     bevelPanel1.add(gridControl1, new GridBagConstraints2(0, 0, 1, 1, 1.0, 1.0
  50.             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10, 8, 10, 8), 74, -327));
  51.     queryDataSet1.setColumns(new Column[] {column1});
  52.   }
  53.  
  54.   void queryDataSet1_calcFields(ReadRow readRow, DataRow dataRow, boolean boolean1) throws DataSetException{
  55.     // Define a DataRow to hold the employee number to look for in
  56.     // queryDataSet2, and another to hold the row of employee data that we find.
  57.     DataRow lookupRow = new DataRow(queryDataSet2, "EMP_NO");
  58.     DataRow resultRow = new DataRow(queryDataSet2);
  59.  
  60.     // The EMP_NO from the current row of queryDataSet1 is our lookup criterion.
  61.     // We look for the first match, since EMP_NO is unique.  If the lookup
  62.     // succeeds, concatenate the name fields from the employee data, and put
  63.     // the result in dataRow; otherwise, let the column remain blank.
  64.     lookupRow.setShort("EMP_NO", readRow.getShort("EMP_NO"));
  65.     if (queryDataSet2.lookup(lookupRow, resultRow, Locate.FIRST))
  66.       dataRow.setString("EMPLOYEE_NAME", resultRow.getString("FIRST_NAME") +
  67.         " " + resultRow.getString("LAST_NAME"));
  68.   }
  69. }
  70.  
  71. class Lookup_Frame_queryDataSet1_calcFieldsAdapter implements borland.jbcl.dataset.CalcFieldsListener {
  72.   Lookup_Frame adaptee;
  73.  
  74.   Lookup_Frame_queryDataSet1_calcFieldsAdapter(Lookup_Frame adaptee) {
  75.     this.adaptee = adaptee;
  76.   }
  77.  
  78.   public void calcFields(ReadRow readRow, DataRow dataRow, boolean boolean1) throws DataSetException{
  79.     adaptee.queryDataSet1_calcFields(readRow, dataRow, boolean1);
  80.   }
  81. }
  82.  
  83.