Herkese hayırlı günler.
Benim başım bu UpdateSQL ile belada. Forumda daha once Husonet in benzer bir sorusu var, Delphinin Helpine de baktım fakat çare bulamadım. Şöyle açıklıyım;
DBGrid içerisine Query yardımı ile 3 ayrı tablonun bazı elemanlarını yerleştirdim.
Query1 : SQL : SELECT
Cari.Kodu, SutCari.Adi,
Sut.SutTar, Sut.SMik, Sut.SFiy, Sut.SOdenen, Sut.Sguntut, Sut.Skalan,
Yem.Yem, YemGir.YMik, Yem.YFiy, Yem.YemTar, Yem.Ytut
FROM Cari, Sut, Yem
ORDER BY Cari.Kodu
Tablo yapıları:
Cari : Kodu (*) , Adi (index) , Adres , Tel , Fax
Sut : Ssira , Kodu , SutTar , Smik , Sfiy , Sodenen , GirSguntut , GirSkalan
Yem : Ysira , Kodu , Yem ,Ymik , Yfiy , YemTar , Ytut
Ve bu alanlar yardımı ile DBGrid te kullanıcının kayıt girmesini / Silmesini ve Değiştirmesini istiyorum. Bunun için de TUpdateSQL kullanıyorum. Ve şu ayarlamaları yaptım.
Query1: UpdateObject = UpdateSQL1
DBGrid1: Options : dgCancelOnExit = False
Bununla ilgili kullandığım kodlar ise şunlar:
procedure TFrmDBGrid.FormCreate(Sender: TObject);
begin
Query1.Open;
end;
procedure TFrmDBGrid.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Query1.close;
Query1.cachedupdates:=true;
Query1.Open;
end;
procedure TFrmDBGrid.Query1AfterPost(DataSet: TDataSet);
begin
if (Query1.state=dsedit) or (Query1.state=dsinsert) then
Query1.ApplyUpdates;
end;
procedure TFrmDBGrid.FormDestroy(Sender: TObject);
begin
Query1.Close;
end;
Programı çalıştırıyorum, kayıt yapıyorum ve çıkıp geri döndüğümde ise kayıtlar uçmuş oluyor.
Ayrıca kodlar ile oynadığım zaman da ,
( Cannot modify a read only dataset )
ve bazende
( Class EDBEngineError with message ‘ invalid parameter ’ )
hatalarını aldım.
Birde kafama takılan şu var: UpdateSQL in editörünü açtığımda Table Names de 3 ayrı tabloyu da seçiyorum ve Update Fields lerini belirleyip GenerateSQL ile SQL lerini oluşturuyorum, OK deyip çıkıyorum. Bundan sonra UpdateSQL in properties inden Delete / Insert / Modify özelliklerine bakıyorum ve sadece tek bir tablunun SQL ifadelerini görüyorum. Yani diğer 2 tabloyu işleme katmıyor.
Birtürlü içinden çıkamadım

Not: Delphi7 ve Paradox kullanıyorum.
Saygılar,
Oğuz Öztürk.