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

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