Tableの追加・更新をするにはどうしたら・・・

解決


超初心者  2006-01-06 10:26:12  No: 19506  IP: 192.*.*.*

Queryにより取得したデータをTableに登録する際に同一キーが存在する場合値を合計し更新する方法がわかりません


Tname.Append;
Tname.Fields[0].AsString := Fname.Fields[0].AsString; //Key1
Tname.Fields[1].AsString := Fname.Fields[1].AsString; //Key2
Tname.Fields[2].AsFloat  := Data; //値
Tname.Post

編集 削除
超初心者  2006-01-06 10:39:50  No: 19507  IP: 192.*.*.*

間違って送信してしまいました
上記だとキー違反がでてしまうので

  Tname.SetKey;
  Tname.Fields[0].AsString  := Fname.Fields[0].AsString;
  Tname.Fields[1].AsInteger := Fname.Fields[1].AsString;
  if Tname.GotoKey then
    Tname.Edit
  else
    Tname.Append;

でチェックしてるのですが

「一般SQLエラー ORA-01410:ROWIDが無効です」
と出てしまいます。
まったく原因がわからないのでご教授お願い致します

環境は
Win2000 Delphi7 Oracleです

編集 削除
いつものことだが  2006-01-06 10:51:51  No: 19508  IP: 192.*.*.*

接続方法は?
BDE?

BDEなら、BDEAdminの設定は?

> まったく原因がわからないのでご教授お願い致します
わたしもOracleに接続しているということしかわかりません。

編集 削除
ん?  2006-01-06 11:08:45  No: 19509  IP: 192.*.*.*

Delphi7 ってことは、BDEじゃなくDBExpress(よく知らん(^^ゞ)とか?

編集 削除
超初心者  2006-01-06 12:31:48  No: 19510  IP: 192.*.*.*

早速のレスありがとうございます
どう説明したらいいのか・・・・・

簡単に処理の流れを書いて見ます。
はじめにTable内のデータを削除する。
ファイル(CSV)を順次読み込みTableに登録更新を行う。
ファイル内容
Key1,Key2,Data
   1,   1,  10
   1,   2,  10
   1,   3,  10
   1,   1,  20
   1,   2,  20
   1,   2,  30
   1,   3,  20
このようなファイルを読み込み
Key1,Key2で集計を行い
   1,   1,  30
   1,   2,  60
   1,   3,  30
でTableに登録したいのですが・・・

編集 削除
素人考え  2006-01-06 19:19:58  No: 19511  IP: 192.*.*.*

ファイル(CSV)そのまま一時Tableにうつして、そのTableに
select sum(Date) from Table名 group by(key1+key2)
のクエリーを発行すればよい(?)のかな?

編集 削除
HOta  2006-01-07 14:56:24  No: 19512  IP: 192.*.*.*

データーベースは何をお使いでしょうか?
また、テーブルの構造はどうなっていますか?
キーも何もないのでしょうか?
クエリーは
select Key1,Key2,sum(data) from テーブル名 group by Key1,key2
ですね。

編集 削除
横ヤリ  2006-01-08 11:08:41  No: 19513  IP: 192.*.*.*

1)SELECT で Key1,key2 で絞り込み
2)データがあれば、Update SQLで更新
    なければInsert SQLで追加

もしくは、
1)InsertSQLをいきなり発行
2)成功したら終了、失敗したらUpdateSQLで更新する。

以上

Oracleに接続しているってことで、ある程度接続方法は限られてくるが、
接続方法はともかく、SQLでさっくり済ませるのがいいかと思われ。

編集 削除
超初心者  2006-01-10 08:57:47  No: 19514  IP: 192.*.*.*

みなさまレスありがとうございます
みなさまのご意見を参考に
じぶんなりに頑張ってみます!

編集 削除
超初心者  2006-01-13 11:35:47  No: 19515  IP: 192.*.*.*

SQLでさっくり済ませました
みなさんありがとうございましたm(_ _)m

編集 削除