管理及程式設計指南


附錄 F. Net.Data 範例巨集

這個範例巨集應用程式顯示員工姓名的列示, 而應用程式使用者只要從列示中選取員工的姓名, 就可取得個別員工的其它資訊。巨集會使用 SQL 語言環境來查詢 EMPLOYEE 表格, 以取得員工姓名及特定員工的相關資訊。

巨集會使用一個併入檔,此檔案含有巨集的 DEFINE 區塊。

圖 32 顯示範例巨集。圖 33 顯示併入檔。

圖 32. 範例巨集

%{************************ 範例巨集 *****************************
*   檔名 = sqlsamp1.d2w                                             *
*   說明:                                                          *
*     這個 Net.Data 巨集查詢...                                     *
*         - 員工表格,以建立要在瀏覽器上                            *
*          顯示的員工選項列示                                       *
*         - 員工表格以取得各別員工的                                *
*         其它資訊                                                  *
*                                                                   *
********************************************************************%}
%{***************************************************************************
*   廣域 DEFINE 的併入檔 -                                                  *
****************************************************************************%}
%INCLUDE "sqlsamp1.hti"
%{****************************************************************************
*  函數:  queryDB              語言環境: SQL                              *
*  說明: 查詢 myTable 變數所表示的表格,及                                 *
*  從結果建立選項列示。myTable 變數的值是                                   *
*  指定於併入檔 sqlsamp1.hti 中。                                           *
****************************************************************************%}
%FUNCTION(DTW_SQL) queryDB() {
 SELECT FIRSTNME FROM $(myTable)
  %MESSAGE {
    -204:  {<p><b>錯誤 -204:找不到表格 $(myTable)。</b>
           <p>請確定所用的併入檔無誤。</b>
           %} : exit
    +default: "警告 $(RETURN_CODE)" : continue
    -default: "意外的錯誤 $(RETURN_CODE)" : exit
%}
%REPORT {
<select name=emp_name>
%ROW{
<option>$(V1)
%}
</select>
%}
%}
%{****************************************************************************
*  函數: fname         語言環境: SQL                                       *
*  說明: 查詢 myTable 變數所表示的表格,                                    *
*         以取得 emp_name 變數所識別出的員工                                 *
*         之其它資料。                                                       *
******************************************************************************%}
%FUNCTION(DTW_SQL) fname(){
SELECT FIRSTNME, PHONENO, JOB FROM $(myTable) WHERE FIRSTNME='$(emp_name)'
  %MESSAGE {
  -204: "錯誤 -204: 找不到表格 "
  -104: "錯誤 -104: 語法錯誤"
   100: "警告 100: 無記錄" : continue
  +default: "警告 $(RETURN_CODE)" : continue
  -default: "意外的 SQL 錯誤" : exit
%}
%}
 
%{*********************************************************************
*  HTML 區塊: INPUT            標題: 動態查詢選項                   *
*                                                                     *
*  說明︰ 查詢員工表格,以建立要在瀏覽器上                            *
*         顯示的員工選項列示                                          *
**********************************************************************%}
%HTML(INPUT) {
<html>
<head>
<title>建立員工選取列示</title>
</head>
<body>
<h3>$(exampleTitle)</h3>
<p>此範例會查詢表格,並使用結果來建立使用 <em>%REPORT</em> 區塊的選項列示。
<hr>
<form method="post" action="report">
@queryDB()<input type="submit" value="Select Employee" />
</form>
<hr />
</body>
</html>
%}
%{***************************************************************************
*  HTML 區塊:    REPORT                                                    *
*  說明: 查詢員工表格,以取得各別員工的                                    *
*         其它資訊                                                          *
****************************************************************************%}
%HTML(REPORT){
<html>
<head>
<title>取得員工資訊</title>
</head>
<body>
<h3>您所選的員工名稱 = $(emp_name)</h3>
<p>以下為該員工的相關資訊:
<pre>
@fname()
</pre>
<hr><a href="input">回到上一頁</a>
</body>
</html>
%}
%{     Net.Data 巨集 1 結束 %}

圖 33. 併入檔

===========================================================================
%{****************************    併入檔    *********************************
*   檔名 = sqlsamp1.hti                                                     *
*   說明:                                                                  *
*     此併入檔提供給 Net.Data 巨集 sqlsamp1.d2w                             *
*     巨集 DEFINE。                                                         *
****************************************************************************%}
%define {
    emp_name   =""
    reposition = sign
 exampleTitle = "範例巨集"
    myTable = "員工"
    DATABASE = "範例"
%}
%{     併入檔結束  %}


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]