PB 電子会議室
| 発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) | 
|---|---|---|
| 12968 | 00/08/25 14:19:38 | RE(7):PB5.0.03: retrieve関数の検索条件について(解決です) By y_mayo | 
| 12967 | 00/08/25 14:09:41 | RE(6):PB5.0.03: retrieve関数の検索条件について By Tk | 
| 12966 | 00/08/25 14:02:00 | RE(5):PB5.0.03: retrieve関数の検索条件について By Tk | 
| 12964 | 00/08/25 13:38:14 | RE(4):PB5.0.03: retrieve関数の検索条件について By ito | 
| 12963 | 00/08/25 13:23:14 | RE(3):PB5.0.03: retrieve関数の検索条件について By y_mayo | 
| 12961 | 00/08/25 12:20:17 | RE(2):PB5.0.03: retrieve関数の検索条件について By TSU | 
| 12960 | 00/08/25 11:42:04 | RE(1):PB5.0.03: retrieve関数の検索条件について By Tk | 
| 12955 | 00/08/25 10:50:59 | PB5.0.03: retrieve関数の検索条件について By y_mayo | 
カテゴリ:スクリプトの記述
日付:2000年08月25日 12:20 発信者:TSU
題名:RE(2):PB5.0.03: retrieve関数の検索条件について
  y_mayoさん、こんにちは。
retrieveの引数は、共通のものだけにして以下のようにやっています。
つまりretrieveのまえで DWのSQLに条件を追加してからretrieveをします。
\'XXXXXXXXXXXXXX\'の部分に追加したい条件式を AND や OR で、複数条件も指定できます。
ただしDW内のSQLがサブクエリなど複雑になっている場合は、以下の uf_add_joken()では、できません。
///////
string ls_sql,ls_add_sql,ls_old_sql
ls_sql = dw_main.object.datawindow.table.select  // 開始時のSQL文を保持しておく
// \'XXXXXXXXXXXXX\' にSELECT分に追加したい条件式 
ls_add_sql = dw_main.uf_add_joken( ls_sql , \'XXXXXXXXXXXX\')
dw_main.modify(\'datawindow.table.select = \"\' +ls_add_sql + \'\"\')
ls_old_sql = dw_main.object.datawindow.table.select	
dw_main.retrieve()
dw_main.object.datawindow.table.select = ls_sql    // 開始時のSQL文に戻す
return 0
以下のような関数をDWの共通先祖に作成
/////////////////////////////////////////////////////////////////////////
//関数名  uf_add_joken
//機能   SELECT文に条件を追加
//          元のSQL は、WHERE , ORDER BY 各1つまで
//引数   string  as_sql      元のsql
//     string  as_filter   追加条件
//戻り値  string  新しいSELECT文
//////////////////////////////////////////////////////////////////////////
string ls_sql,ls_tmpsql,ls_order
ls_sql = as_sql
if Match(Lower(ls_sql), \"order by\") then
    ls_order = right(ls_sql,len(ls_sql)-Pos(lower(ls_sql),\"order by\")+1 )
    ls_tmpsql = left(ls_sql,Pos(lower(ls_sql),\"order by\")-1 )
else
    ls_order =\"\"
    ls_tmpsql = ls_sql
end if
if Match(Lower(ls_tmpsql), \"where\") then
    ls_tmpsql = ls_tmpsql +\" and (\"+as_filter+\")\" + ls_order
    return ls_tmpsql
else
    ls_tmpsql = ls_tmpsql +\" where (\"+as_filter+\")\" + ls_order
    return ls_tmpsql
end if
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS Sybase SQL Anywhere Client
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.




