重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

C++,DAO,MySQLで開発しています。

標記の通りなのですが、更新するレコードセットの値をDBのテーブルと
同じものでUPDATEしようとするとExceptionをスローします。
処理の大まかな流れは以下の通りです。

1. DBオープン (CDaoDatabase Open)
2. テーブルオープン (CDaoRecordset Open)
3. トランザクション開始 (BeginTransaction)
4. レコードセットを移動 (FindFirst 何かしらの条件で)
5. 値を設定 (SetFieldValue)
6. レコード更新 (Update)
7. コミット (CommitTransaction)

5.の時点でDBと同じ値を設定した場合に 6.のステートでExceptionスローします。
(5.でDBと違う値なら最後の処理まで難なく通ります。)

4.の時点で意図しないindexに移動しているわけでもないので、5.での同値か異値かの問題であると思っていますが…

どうすれば回避できるのでしょうか?
ご教授方お願いします。。。。

A 回答 (2件)

>補足になりましたでしょうか??



例外が起きている訳ですから、列のデータ型や長さ、重複禁止やNOT NULLなどの制約がどうなっているのか分からないと、適切なアドバイスはできません。
    • good
    • 0

(1)表定義、インデクス定義を示せませんか?


(2)「5.の時点でDBと同じ値を設定した場合
 同じ値とは、具体的にどういう値を、どういう値にしたのですか?
(3)「5.でDBと違う値なら最後の処理まで難なく通ります」
 違い値とは、具体的にどういう値を、どういう値にしたのですか?

この回答への補足

[table] personal_info
___________________________________
|_userid_|_firstname_|_familyname_|
|_1______|_aaa_______|_AAA________|
|_2______|_bbb_______|_BBB________|<- Recordset
|_3______|_ccc_______|_CCC________|
※useridはマスタです。

上図のようにuserid=2にRecordsetが移動している状態で
下記のような操作をした場合に動作に違いがでます。

○同値の場合にException
SetFieldValue("firstname", "bbb");
Update();

○異値の場合は正常
SetFieldValue("firstname", "ddd");
Update();

補足になりましたでしょうか??

補足日時:2007/07/14 00:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!