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.