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:01 発信者:aokazumajin
題名:RE(2):PB6.5: INSERT文及びUpdateエラー対応について

Chicchiさん、こんにちは。

>ちょっと整理しましょう。

>A → テキストファイル
>B → データベースのテーブル
>C → データベースのテーブル

>ファイル A と テーブル B のキー部が一致した場合、A の項目と B のカラムのいくつかを結合
>してテーブル C を更新する、ということですよね ?

>? テーブル C に INSERT を行なっても追加されておらず、
>? UPDATE してもデータウィンドウのエラーが発生する

>ということですよね。
>でも、サンプルスクリプトを見ると、INSERT 文は COMMIT しておらず (そもそも更新の成否を
>判定していませんね)、UPDATE も SQL を直接指定しておられるようで、データウィンドウとは
>何の関係もなさそうなのに、何故データウィンドウのエラーが表示されるのでしょうか ?
>テーブル名やカラム名の詳細はともかく、スクリプト自体を歪曲して載せていませんか ?
>また、INSERT 文 と UPDATE 文でテーブル C のテーブル名が違っているようですが、これは
>何故でしょうか ?

説明が不足していたため、補足説明します。
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

付加情報:

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.