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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.