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

解決


超初心者  2006-01-06 19:26:12  No: 19506

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 19:39:50  No: 19507

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

  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 19:51:51  No: 19508

接続方法は?
BDE?

BDEなら、BDEAdminの設定は?

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


ん?  2006-01-06 20:08:45  No: 19509

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


超初心者  2006-01-06 21:31:48  No: 19510

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

簡単に処理の流れを書いて見ます。
はじめに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-07 04:19:58  No: 19511

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


HOta  2006-01-07 23:56:24  No: 19512

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


横ヤリ  2006-01-08 20:08:41  No: 19513

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

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

以上

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


超初心者  2006-01-10 17:57:47  No: 19514

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


超初心者  2006-01-13 20:35:47  No: 19515

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加