反饋已提交

網絡繁忙

JS實現透過sql一次性獲取多個欄位

1. 概述

1.1 預期效果

使用 sql() 函式可以動態取資料庫中某個欄位的值,但是如果想取得多個欄位的值,就必須執行多條 sql() 函式,這樣就加大了對伺服器資源的請求量;如果查詢的 SQL 又比較複雜的話,執行效率將會很慢。

可以透過一個 sql() 函式,配合 JavaScript 來獲取多個不同欄位的值。如下圖所示,一個填報中透過輸入人員 ID,來獲取人員名稱,性別,電話號碼。

存欄位的表:

查詢結果:


1.2 實現思路

因為 SQL 函式 本身的使用限制,只能每次獲取一個欄的資訊,但是如果想獲取多欄的話,我們其實是可以同時對多個欄位用特殊符號連接到一起查詢出來,再在 JavaScript 中對這一串利用特殊符號連接的字串進行分割,這樣就可以分別取得不同欄的值。

2. 範例

2.1 準備範本

建立範本,B2 儲存格新增文字框, 為輸入 ID 的文字框,C2 儲存格新增按鈕, 為查詢的按鈕 。

D2 儲存格公式內容為:sql("FRDemoTW","SELECT empname||','||sex||','||tel  FROM employee where EMPid='"+B2+"'",1,1)

注:不同資料庫連接字元的方法不同,比如 Sqlite,Oracle 是||,其他 如 MSSQL, MySQL 等一般直接用+就行了 ,另外在 SQL 用於分割的連接欄位的特殊字元和 JavaScript 中分割時的要一致 。

最後將 D 欄設隱藏。如下圖所示:

2.2 新增事件

1)為了取得 B2 儲存格中元件修改後的實時值,我們需要在 B2 儲存格元件設定「編輯後事件,如下圖所示:

注意需要新增一個參數row,值為公式 row。

JavaScript 程式碼如下:

//修改後即把當前值指派給實際值
var v = this.getValue();
_g().setCellValue('B' + row, null, v);

2)為 C3 儲存格中「查詢按鈕」新增「點擊」事件,如下圖所示:

注意需要新增一個參數row,值為公式 row。

JavaScript 程式碼如下:

//獲取D2儲存格資訊,因為填報範本設定直接顯示元件後獲取方式不一樣,下面這種寫法保證獲取成功    
var info = _g().getCellValue('D' + row);
//分割查詢出來的結果    
var infoarray = info.split(',');
var result = '';
//這裏是上面欄位的個數,如果不是3,那麼說明沒查詢到資料    
if (infoarray.length == 3) {

result += '姓名:' + infoarray[0] + '\n';
result += '性別:' + infoarray[1] + '\n';
result += '電話號碼:' + infoarray[2] + '\n';
FR.Msg.alert('查詢結果', result);
} else {
alert('未查詢到資訊!');
}

2.3 效果預覽

儲存範本,點選「填報預覽」,效果如下圖所示:

注:不支援行動端。

3. 範本下載

附件列表


主題: 參數應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙