SQL後の表で編集してApplyUpdateするには?


FUJI  2011-08-25 18:52:48  No: 40863

dbExpressでのSQL表の編集の仕方が分かりません。

下記のように、
SQLで表を作成して、DBGridで既存行を変更した後、ApplyUpdatesすると
  『ORA-00904: "ITEMMEI": 無効な識別子です。』
  『レコードが見つかりません。キーを指定されていません』
とエラーになります。
新規行の場合は、エラーは発生しません。
どのようにすべきなのでしょうか?

例えば、表AのNO:004、NUM:45.6 → 56.7 変更した後、ApplyUpdatesする
と、エラー。

■データベース
表A
*NO     ITEMNO   NUM
001    001      12.3
002    001      23.4
003    002      34.5
004    002      45.6

表B
*ITEMNO  ITEMMEI
001     ABCDE
002     BCDEF
003     CDEFG

*:主キー

■フォーム上
SQLConnection1
SimpleDataSet1  SimpleDataSet2
DataSource1
DBGrid1

※SimpleDataSet1のTStringField
NO, ITEMNO, ITEMMEI, NUM
ITEMMEIのプロパティは
FieldKind:     fkLookup
FieldName:     ITEMMEI
KeyFields:     ITEMNO
LookupDataSet:     SimpleDataSet2
LookupKeyFields:   ITEMNO
LookupResultField: ITEMMEI

■プログラム
procedure TForm1.FormShow(Sender: TObject);
  begin
    SimpleDataSet2.DataSet.CommandType := ctTable;
    SimpleDataSet2.DataSet.CommandText := 'B';

    SimpleDataSet1.Close;
    SimpleDataSet1.DataSet.CommandText :=
      'select A.NO, A.ITEMNO, B.ITEMMEI, A.NUM '
     +'  from  A, B '
     +'  where A.ITEMNO=B.ITEMNO(+) '
     +'  order by A.NO ';
    SimpleDataSet1.Open;
  end;

procedure TForm1.SimpleDataSet1BeforeScroll(DataSet: TDataSet);
  begin
    SimpleDataSet1.ApplyUpdates(-1);
  end;

よろしくお願いします。


nobukoshi802  2011-08-30 21:26:39  No: 40864

Joinしたテーブルを更新出来るのでしょうか?

通常SQLのUPDATEは1テーブルしか更新出来ないです。


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

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






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