【メモ】PowerBuilder6.5の覚書
PowerBuilderのメモが出てきたので、使い道がなさそうだが、公開します。
ははは・・・バージョン6ですけどね。
PowerBuilder Tips(V6)
※以下、オブジェクト名等は読み替える事
※とってもAccessに類似。Access+αな感じ。
※VBに似ているが、演算構文などは、Cに類似
※小粋な関数が少ないので、初期手間がかかる
※どうしても、生産性が高いとは思えない
※定数系は、語句の最後に!が付いたもの。HourGlass!、keyEnter!など
※中途途上なオブジェクト指向、PHPに似ている
※IDEにて、ショートカットキーが活用できない。設定もできない
なので、マウスオペレーションが中心になる
※ツールバー操作が必須。これは許せない
※なぜかTAB=3が標準
※スコープがウィンドウのウィンドウ関数があります
親ソースを開いて、「宣言」「ウィンドウ関数」
※変数名に日本語が利用可能
※落ちまくる。対策は無い。こまめにセーブ
※デバッガがまるで、使えない
≪≪≪構文系≫≫≫
●自分はThis、他はParent、Super
●エスケープは~(チルダ)
●命令の区切りは、Cと同様で;で区切れる
●演算子の両端は必ず空白を入れる
変数名に"-"が利用できるため、名前になってしまう
●NULL=DBNULLのようで、""や0とは違う扱い
●文字列の連結は、"+"で行う。
●IF文
If IsNull(ls_pass) = True Or ls_pass = "" Then
Return
Else
End If
●変数型など
Char型
String型(Max60000バイト)
Int型(16bit)
UnsignedInt型(16bit)
Long型(32bit)
UnsignedLong型(32bit)
Real型(浮動小数)
Double型(15桁)
Decimal型(18桁)
Date型
Time型
DateTime型
true/false
●NULL関係
If IsNull(li_cd) = True Then
SetNull(ls_Sort)
これは間違い、IF a = NULL THEN
≪≪≪データベースアクセス関係≫≫≫
※DW=データウィンドウ
●SQL編集モードにはAccessと同じく2種類有り
グラフィックモードと、SQLエディタモードを切り替える。
ただし、複雑なSQLの場合、グラフィックに戻れなくなる場合有り
この辺は、Accessと同様。
●編集モード時の上部の項目並び
データレコードの並びとなっているので、プログラムから
Getitem*などで読み込む場合は、この順番となる。
dw_mei.GetitemString(dw_mei.GetRow(),1)
名前でアクセスできた方がベストなのかもしれない。
●DWの選択行を取得する※行番号
IF dw_mei.GetRow() > 0 THEN
lstr_para.s_tok_code = dw_mei.GetitemString(dw_mei.GetRow(),1)
lstr_para.s_tok_name = dw_mei.GetitemString(dw_mei.GetRow(),2)
END IF
●DWの選択行を設定する※行番号
dw_bum_list.SetRow(1)
●DWのカラムを選択する(カーソル移動?)
dw_bum_list.SetColumn("df_list")
※行スクロールはしない
●DWからデータを入手する
li_cd = dw_mei.GetItemNumber(ll_row,"cd")
●SQL実行と取得方法
直接SQL文が記述できる。行最後には;が必要
SELECT TANTO_NAME
INTO :ls_name
FROM TANTO_MST
WHERE TANTO_CODE = :li_cd;
DELETE "NYUKIN_DATA"
WHERE "NYUKIN_DATA"."NYU_DENNO" = :ld_番号 ;
INSERT INTO "NYUKIN_DATA"
( "NYU_DENNO", "NYU_LNO", "TOKUI_CODE", "NYUKIN_DATE", "SYUBETU_CODE",
"GINKO_CODE", "NYUKIN_GAKU", "TESURYO", "TEKIYOU", "SHIME_FLAG", "BUSYO_CODE" )
VALUES ( :ld_番号, :ld_count, :ls_仕入, :lda_入金日, :ls_入金,
:ls_銀行, :ld_入金, :ld_手数料, :ls_摘要, ' ' , :ls_部門);
UPDATE MIBARAI_DATA
SET TENKI_FLAG = '0’
WHERE (MIBARAI_KBN IN ('4′,’5′,’6′,’7’)) AND
(TENKI_FLAG = '1’) AND
(DEN_DATE = :lda_date);
●SQL実行結果
If Sqlca.Sqlcode <> 0 Thenでエラー
●DWとTransactionを関係付ける
dw_midasi.SetTransObject(sqlca)
●DW件数取得
FOR ld_count = 1 TO dw_meisai.rowcount()
●ロールバックとコミット
rollback;
COMMIT;
≪≪≪ユーザーインターフェース関係≫≫≫
●ウィンドウを開くと落ちる
SQL文がおかしい場合がある。DWにて正常なSQLとして編集する
●ポインターを変更する
SetPointer(Arrow!)
他には、HourGlass!など
●引き数を返し、ウィンドウを閉じる
CloseWithReturn(Parent,lstr_para)
●メッセージボックス
MessageBox("エラー","職員コードを入力して下さい。",Exclamation!)
●イベントを直ちに発生させる
TriggerEvent(cb_clear,Clicked!)
●SendMessage
Send(il_handle,256,9,Long(0,0))
●プリンタの印刷設定画面
PrintSetup()
//印刷ジョブを開始し、改ページします。
Job = PrintOpen()
dw_print.Print() ※DWの場合
ディスカッション
コメント一覧
まだ、コメントがありません