PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
14029 | 00/12/04 22:45:01 | RE(5):PB6.5: 1レコード複数カラムの検索方法:2 By Lucky |
13987 | 00/11/27 21:20:41 | RE(4):PB6.5: 1レコード複数カラムの検索方法:2 By ryochan |
13986 | 00/11/27 21:20:03 | RE(3):PB6.5: 1レコード複数カラムの検索方法:1 By ryochan |
13983 | 00/11/27 10:06:19 | RE(2):PB6.5: 1レコード複数カラムの検索方法 By t.y |
13980 | 00/11/25 17:04:47 | RE(1):PB6.5: 1レコード複数カラムの検索方法 By M.M |
13978 | 00/11/25 14:30:04 | PB6.5: 1レコード複数カラムの検索方法 By Lucky |
カテゴリ:PowerBuilderの開発環境
日付:2000年11月27日 21:20 発信者:ryochan
題名:RE(4):PB6.5: 1レコード複数カラムの検索方法:2
s_fcell ret
long l_cols //カラム数
long l_rows //総行数
long l_srow //検索開始行(開始列のみ)
long l_frow //該当行
string l_colname //カラム名
long n //ループカウンタ
long p //文字列置換用ポインタ
//検索対象文字列に「\'」が存在した場合の処理
p = pos(p_txt,\"\'\")
do while p > 0
p_txt = replace(p_txt,p,1,\"~\'\")
p = pos(p_txt,\"\'\",p + 1)
loop
l_cols = long(this.Object.DataWindow.Column.Count)
l_rows = this.rowcount()
for n = p_scol to l_cols
if n = p_scol then
//検索開始カラム番号の場合、指定行から検索
if p_srow > l_rows then continue //最終行なら次行へ
l_srow = p_srow
else
//それ以外は、先頭行から検索
l_srow = 0
end if
l_colname = this.describe(\"#\" + string(n) +\".name\" )
//文字列型のみのカラムを検索する場合
if pos(lower(this.describe(l_colname+\".ColType\")),\'char\') <= 0 then continue
ret.row_no = this.find(l_colname+\" = \'\"+p_txt+\"\'\",l_srow,l_rows )
/***文字型以外も検索させる場合***********
//データ型のチェックを外す
l_frow = this.find(\"string(\"+l_colname+\") = \'\"+p_txt+\"\'\",l_srow,p_erow )
***************************************/
//存在した場合
if ret.row_no > 0 then
ret.col_no = n
exit
end if
next
//全てチェックし、存在しない場合は
//カラムIDに失敗の戻り値をセット
if ret.row_no <= 0 then
ret.col_no = -1
end if
return ret
関数を呼び出す
s_fcell ret
l_colid = long(dw_2.describe(dw_2.getcolumnname()+\'.ID\')) //列番号取得
ret = dw_1.findcell(\'文字列\',l_colid,dw_2.getrow() + 1)
messagebox(\'\',string(ret.col_no)+\',\'+string(ret.row_no))
全件置換の場合
ret.col_no = 1
ret.row_no = 0
do
ret = dw_1.findcell(\'文字列\',ret.col_no,ret.row_no + 1)
//存在すれば置換
if ret.row_no > 0 then
dw_1.object.data[ret.col_no,ret.row_no] = \'XXX\'
end if
loop until ret.row_no <= 0
おかしな箇所があれば、誰か突っ込んで下さい。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.