PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
20382 03/10/07 09:59:58 RE(4):PB6.5: INSERT文及びUpdateエラー対応について By aokazumajin
20344 03/09/26 17:28:52 RE(3):PB6.5: INSERT文及びUpdateエラー対応について By Chicchi
20343 03/09/26 17:01:18 RE(2):PB6.5: INSERT文及びUpdateエラー対応について By aokazumajin
20342 03/09/26 14:12:33 RE(1):PB6.5: INSERT文及びUpdateエラー対応について By Chicchi
20337 03/09/26 10:52:42 PB6.5: INSERT文及びUpdateエラー対応について By aokazumajin

カテゴリ:データウィンドウ
日付:2003年09月26日 17:28 発信者:Chicchi
題名:RE(3):PB6.5: INSERT文及びUpdateエラー対応について

aokazumajinさん、こんにちは。

>説明が不足していたため、補足説明します。
>AファイルはInportString関数を使用して、dw_Aという名前のデータウィンドウでデータを表示しています。
>Bファイルはdw_Bという名前のデータウィンドウでデータを表示しています。
>CファイルはAファイルのデータとBファイルのデータを結合して、Cテーブルを新規作成して更新(UPDATE)してか
ら、
>dw_Cという名前のデータウィンドウでデータを表示しています。
>UPDATEのテーブルを変更しました。

>コード内容)
>IF A-CCC = B-CCC Then
>  CONNECT USING SQLCA;
>   dw_A.SettransObject(sqlca);
>   dw_B.SettransObject(sqlca);
>   dw_C.SettransObject(sqlca);
>   INSERT INTO C-TBL(C-TBL.DDD,C-TBL.EEE,C-TBL.GGG)VALUES (:A-TBL.DDD,:A-TBL.EEE,:B-TBL.GGG);
>   UPDATE  C-TBL SET C-TBL.DDD =:A-TBL.DDD,C-TBL.EEE =:A-TBL.EEE,C-TBL.GGG =:B-TBL.GGG
>   WHERE A-CCC = :B-CCC;
>   IF dw_C.Update() = 1 Then
>      commit;
>   Else
>      Rollback;
>      Return
>   END IF
>End If

まず、データウィンドウを Update 関数で更新した時に「Update 機能がありません」となるのは、その
データウィンドウの更新特性が正しく設定されていないからだと思われます。
また、データウィンドウ dw_C を使って更新するのであれば、SetItem で dw_C に値をセットして Update
関数を実行しなければなりません。値をセットせずに更新しても無意味です。上記スクリプトのように
直接 SQL 文を実行するのであれば、dw_C は不要です。
蛇足ですが、dw_A と dw_B の全行をマッチングするのですよね ? ということは、このスクリプトは
ループの中に組み込まれていると思うのですが、ループ内での CONNECT および SetTransObject 関数
実行は非効率的です。ループの前に一度だけ行なっておけば良いと思いますが。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows 2000
DBMS Sybase SQL Anywhere Client
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

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