PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
3630 98/10/15 08:52:55 RE(4):PB5.0.02: DW更新時のエラーが発生する原因について By Tatsu
3629 98/10/14 20:51:30 RE(3):PB5.0.02: DW更新時のエラーが発生する原因について By あすかちゃんの父
3623 98/10/14 17:07:02 RE(2):PB5.0.02: DW更新時のエラーが発生する原因について By Tatsu
3605 98/10/13 20:42:09 RE(1):PB5.0.02: DW更新時のエラーが発生する原因について By あすかちゃんの父
3601 98/10/13 16:59:45 PB5.0.02: DW更新時のエラーが発生する原因について By Tatsu

カテゴリ:データベース
日付:1998年10月14日 20:51 発信者:あすかちゃんの父
題名:RE(3):PB5.0.02: DW更新時のエラーが発生する原因について

Tatsuさん、こんばんは。

>一日がかりでやっと原因がわかったような気がします。(違うかも)

>ウィンドウのPFC_PREUPDATE()でDWのカラム(整数部5桁、小数部2桁)に計算結果をセットして
>いるのですが、その際にTRUNCATEやROUNDを使用していなかったため、小数部が2桁以上になって
>いました。

>上記の状態で更新をかけ、DWの値が1.1111111...にもかかわらず、DBの値は小数部2桁
>までで更新され(1.11になるのかな)、DWの更新フラグもリセットされたとすれば、その後即座
>に更新をかけると今回のようなエラーが発生するのではないでしょうか?

データウィンドウの更新特性で、UPDATE/DELETE文のWHERE句を
「キーカラムと更新可能カラム」とすると、更新対象のカラムの
WHERE句を文字どおり、

WHERE **TABLE.@@COLUM = \"AAAA\", **TABLE.##COLUM = \"BBBB\",......

といった具合に生成します。
この時のキーカラム/更新可能カラムの一致する条件のデータは、
データウィンドウが検索してきて保持している値が使われます。
この値がOracleで持っているデータの値と一致しなければ、問題
のエラーが発生します。
Oracle側で更新時に数値データのRoundが効いているのであれば、
可能性が高いですね。
データウィンドウのSQLPreviewイベントで、イベント引数sqlsyntax
のSQL文をチェックしてみてはどうでしょう?

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS Oracle SQL*Net 2.3
Browser (記載なし)

Server SoftWare

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

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