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;
よろしくお願いします。
Joinしたテーブルを更新出来るのでしょうか?
通常SQLのUPDATEは1テーブルしか更新出来ないです。
ツイート | ![]() |