Query ve UpdateSQL

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Query ve UpdateSQL

Mesaj gönderen oguzozturk74 »

Selamun Aleykum,

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 :roll: , yardımcı olabilecek arkadaşlar lütfen !!

Not: Delphi7 ve Paradox kullanıyorum.

Saygılar,
Oğuz Öztürk.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Bildiğim kadarı ile, UpdateSQL'ler aynı anda sadece bir tabloyu Update eder. Çoklu tablodan elde edilen result setlere (yani Joined Tables) işlem yapmaz. Bu sebeple kurgulamanızı bunun üzerine yapınız.

Zaten siz bu tarz bir Query'i açmaya çalıştığınızda (Dikkat edin, RequestLive'ini True edin) size ya hata verecektir, yada Table is readonly gibi bir mesaj verecektir.

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

RequestLive=True yaptım , dediğiniz gibi hata veriyor. Zaten ben de RequestLive=False çalışıyorum.

Fakat eğer dediğiniz gibi UpdateSQL'ler aynı anda sadece bir tabloyu Update ediyor ise;
Neden UpdateSQL in editöründe ki TableNames de Query de belirttiğim 3 tablonun da ismi var?

Ayrıca sitedeki makelede UpdateSQL birden fazla
Eğer dediğiniz gibi ise;
'Çoklu tablodan elde edilen result setlere (yani Joined Tables) işlem yapmaz. Bu sebeple kurgulamanızı bunun üzerine yapınız.'
ifadessini daha somut bir şekilde açıklayabilirmisiniz ?

Saygılar,
Oğuz ÖZTÜRK
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Verdiğiniz cevap için sağolun,

RequestLive=True yaptım , dediğiniz gibi hata veriyor. Zaten ben de RequestLive=False çalışıyorum.

Fakat eğer dediğiniz gibi UpdateSQL'ler aynı anda sadece bir tabloyu Update ediyor ise;
Neden UpdateSQL in editöründe ki TableNames de Query de belirttiğim 3 tablonun da ismi var? :?

Ayrıca sitedeki makelede UpdateSQL birden fazla Query için kullanılır diyor (Benim anladığım kadarı ile)

Eğer dediğiniz gibi ise;
'Çoklu tablodan elde edilen result setlere (yani Joined Tables) işlem yapmaz. Bu sebeple kurgulamanızı bunun üzerine yapınız.'
ifadesini daha somut bir şekilde açıklayabilirmisiniz ? :?:

Saygılar,
Oğuz ÖZTÜRK
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Özürdilerim ilk cevabı yanlışlıkla gönderdim. :oops:
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

UpdateSQL'i CachedUpdates'i True olan ResultSetler'de kullanabiliyorsunuz ve UpdateSQL'in Helpinde birkaç küçük not var ordan alıntı yapıyorum.
Note: Sometimes, you need to use multiple update objects. For example, when updating a multi-table join or a stored procedure that represents data from multiple datasets, you must provide one TUpdateSQL object for each table you want to update. When using multiple update objects, you can’t simply associate the update object with the dataset by setting the UpdateObject property. Instead, you must manually call the update object from an OnUpdateRecord event handler (when using the BDE to cache updates) or a BeforeUpdateRecord event handler (when using a client dataset).
UpdateSQL'in helpinde sağ üst bölümde Using TUpdateSQL yazan bir link var oraya tıklayınca açıklamaları geliyor. yukarıdaki alıntı da oradan. Ayrıca Use Multiple Update Objects linkini de tıkılarsanız nasıl kullanabileceğinizi açıklıyor.

Ama yine de biraz açıklayayım. Her bir UpdateSQL sadece 1 table'a işlem yapabilir. Yani sizin result setinizde eğer 1'den fazla table'dan sonuç dönüyor ise ne yazık ki UpdateSQL Nesnesi buradaki ANA table'a hitab eder. Bunları aşabilmek için sizin kaç table'ınız var ise (Update Edilmek istenen kaç table var ise) o kadar adet UpdateSQL objesi koymanız gerekiyor ve Runtime'da bu koyduğunuz UpdateSQL nesnelerine Dataset ataması yapmanız lazım. Designtime'da maalesef bu yok.

Hepsinin Update, Delete, Insert cümlelerini atamanız gerekiyor. Sonra, sonrası zaten alıntıda anlatılıyor :)

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Tekrardan sağolun,

Bu yoldan gideceğim.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2360
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

gözüme takıldı
procedure TFrmDBGrid.Query1AfterPost(DataSet: TDataSet);
begin
if (Query1.state=dsedit) or (Query1.state=dsinsert) then
Query1.ApplyUpdates;
end;
bu kodda hata var

AfterPost, post işleminden sonra tetiklenir zaten, yani state browes gelir dolayısı ile bu kod çalışmaz. Onun yerine,

Kod: Tümünü seç

 if Query1.UpdatesPending then Query1.ApplyUpdates;
bunu kullanılması daha iyi olur.

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

S.A.

Arkadaşlar ben bu UpdateSQL i bir türlü halledemedim, 3-4 gündür uğraşıyorum olmadı.En son önerilerinizden sonra şunları yaptım. 1 Query de update edilmesi gereken 3 tane tablom var.
Bunun için 3 ayrı UpdateSQL im var ve kodla bu 3 ayrı UpdateSQL i Query me bağlamaya çalışıyorum.(Sanırım sorunda burda, bağlayamıyorum) İşlemler ise DBGrid üzerinde cereyan ediyor.

Kod: Tümünü seç

procedure TFrmDBGrid.Query1BeforeOpen(DataSet: TDataSet);
begin
 Query1.CachedUpdates:=true;
end;

procedure TFrm.Query1UpdateRecord(DataSet: TDataSet;
  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
 if (updatekind=ukmodify) or (updatekind=ukinsert) or (updatekind=ukdelete) then
 begin
  with (Dataset as TBDEDataset) do
    (UpdateObject as TUpdateSQL).Apply(Updatekind);
  UpdateAction:=uaApplied;
 end;
end;

procedure TFrm.Query1BeforeInsert(DataSet: TDataSet);
begin
 if Query1.UpdateObject=UpdateSQL1 then
 begin
  UpdateSQL1.insertSQL.Add('insert into CariKay (Kodu, Adi)');
  UpdateSQL1.insertSQL.Add('values (:Kodu, :Adi)');
 end;
 if Query1.UpdateObject=UpdateSQL2 then
 begin
  UpdateSQL2.insertSQL.Add('insert into SutGir (SutTar, SMik, SFiy, SOdenen, Sguntut, Skalan)');
  UpdateSQL2.insertSQL.Add('values (:SutTar, :SMik, :SFiy, :SOdenen, :Sguntut, :Skalan)');
 end;
 if Query1.UpdateObject=UpdateSQL3 then
 begin
  UpdateSQL3.insertSQL.Add('insert into YemGir (Yem, YMik, YFiy, YemTar, Ytut)');
  UpdateSQL3.insertSQL.Add('values (:Yem, :YMik, :YFiy, :YemTar, :Ytut)');
 end;
end;

procedure TFrm.Query1BeforeDelete(DataSet: TDataSet);
begin
 if Query1.UpdateObject=UpdateSQL1 then
 begin
  UpdateSQL1.DeleteSQL.Add('delete from CariKay');
  UpdateSQL1.DeleteSQL.Add('where Kodu=:OLD_Kodu and Adi=:OLD_Adi');
 end;
 if Query1.UpdateObject=UpdateSQL2 then
 begin
  UpdateSQL2.DeleteSQL.Add('delete from SutGir');
  UpdateSQL2.DeleteSQL.Add('where Kodu=:OLD_Kodu');
 end;
 if Query1.UpdateObject=UpdateSQL3 then
 begin
  UpdateSQL3.DeleteSQL.Add('delete from YemGir');
  UpdateSQL3.DeleteSQL.Add('where Kodu=:OLD_Kodu');
 end;
end;

procedure TFrm.Query1BeforeEdit(DataSet: TDataSet);
begin
 if Query1.UpdateObject=UpdateSQL1 then
 begin
  UpdateSQL1.ModifySQL.Add('update CariKay');
  UpdateSQL1.ModifySQL.Add('set Kodu=:Kodu,Adi=:Adi');
  UpdateSQL1.ModifySQL.Add('where Kodu=:OLD_Kodu and Adi=:OLD_Adi');
 end;
 if Query1.UpdateObject=UpdateSQL2 then
 begin
  UpdateSQL2.ModifySQL.Add('update SutGir');
  UpdateSQL2.ModifySQL.Add('set SutTar=:SutTar,SMik=:SMik,SFiy=:SFiy,SOdenen=:SOdenen,Sguntut=:Sguntut,Skalan=:Skalan');
  UpdateSQL2.ModifySQL.Add('where Kodu=:OLD_Kodu');
 end;
 if Query1.UpdateObject=UpdateSQL3 then
 begin
  UpdateSQL3.ModifySQL.Add('update YemGir');
  UpdateSQL3.ModifySQL.Add('set Yem=:Yem,YMik=:YMik,YFiy=:YFiy,YemTar=:YemTar,Ytut=:Ytut');
  UpdateSQL3.ModifySQL.Add('where Kodu=:OLD_Kodu');
 end;
end; 
Bu kodlar herhangi bir hata vermiyor, ama istediğim Update ide yapmıyor. :(
Bu konuda yardımlarınızı bekliyorum.

Saygılar,
Oğuz ÖZTÜRK
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

A.S.

Yaptığın temel mantık hatası şurda, BeforeInsert, BeforeEdit veya BeforeDelete Eventlerinde UpdateSQL'lere SQL Cümlesi atıyorsun. Buna gerek yok.

Mantık şu olmalı,

Ana Query'yi açmadan önce, UpdateSQL'lerinin, önce Dataset'lerini atayacaksın sonra Insert, Update ve Delete SQL'lerini atayacaksın sonra Query'ini açacaksın.

UpdateSQL'ler senin adına Insert,Update ve Delete gerçekleştirecek :)

Ana Query'i Post ettiğinde diğerleri de otomatik olarak post edecektir. Ancak Ana Query'ini close etmeden önce ApplyUpdates ve CommitUpdates yapman gerekiyor.

Tekrar bir kontrol et bakalım...

Anlaşılmayan bir yer var mı?

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Hayırlı geceler abi,
Dediğiniz gibi kontrol ettim, ve aşağıdakileri yaptım. Ama şimdi de DBGrid e hiç bilgi giremiyorum,
‘Cannot modify a read-only dataset’ hatasını veriyor.
Önceden en azından birkez de olsa bilgi girebiliyordum, şimdi o da YOK :o
Neler oluyor bu gıride anlamıyom, her dediğini yaptık . :lol: (Query =Açık , Datasource bağlı)

Olmuş mu :?: :?:

Kod: Tümünü seç

procedure TFrmDBGrid.FormCreate(Sender: TObject);
begin
 Query1.Close;
 Query1.CachedUpdates:=true;

 with UpdateSQL1 do begin
  if DataSet=Query1 then
  begin
   insertSQL.Clear;
   insertSQL.Add('insert into SutCariKay (Kodu, Adi)');
   insertSQL.Add('values (:Kodu, :Adi)');
   insertSQL.Clear;
   DeleteSQL.Add('delete from SutCariKay');
   DeleteSQL.Add('where Kodu=:OLD_Kodu and Adi=:OLD_Adi');
   ModifySQL.Clear;
   ModifySQL.Add('update SutCariKay');
   ModifySQL.Add('set Kodu=:Kodu,Adi=:Adi');
   ModifySQL.Add('where Kodu=:OLD_Kodu and Adi=:OLD_Adi');
  end;
 end;
 with UpdateSQL2 do begin
  if DataSet=Query1 then
  begin
   insertSQL.Clear;
   insertSQL.Add('insert into SutGir (SutTar, SMik, SFiy, SOdenen, Sguntut, Skalan)');
   insertSQL.Add('values (:SutTar, :SMik, :SFiy, :SOdenen, :Sguntut, :Skalan)');
   DeleteSQL.Clear;
   DeleteSQL.Add('delete from SutGir');
   DeleteSQL.Add('where Kodu=:OLD_Kodu');
   ModifySQL.Clear;
   ModifySQL.Add('update SutGir');
   ModifySQL.Add('set SutTar=:SutTar,SMik=:SMik,SFiy=:SFiy,SOdenen=:SOdenen,Sguntut=:Sguntut,Skalan=:Skalan');
   ModifySQL.Add('where Kodu=:OLD_Kodu');
  end;
 end;
 with UpdateSQL3 do begin
  if DataSet=Query1 then
  begin
   insertSQL.Clear;
   insertSQL.Add('insert into YemGir (Yem, YMik, YFiy, YemTar, Ytut)');
   insertSQL.Add('values (:Yem, :YMik, :YFiy, :YemTar, :Ytut)');
   DeleteSQL.Clear;
   DeleteSQL.Add('delete from YemGir');
   DeleteSQL.Add('where Kodu=:OLD_Kodu');
   ModifySQL.Clear;
   ModifySQL.Add('update YemGir');
   ModifySQL.Add('set Yem=:Yem,YMik=:YMik,YFiy=:YFiy,YemTar=:YemTar,Ytut=:Ytut');
   ModifySQL.Add('where Kodu=:OLD_Kodu');
  end;
 end;
 Query1.Open;
end;

procedure TFrmDBGrid.FormDestroy(Sender: TObject);
begin
 Query1.Close;
end;
  
procedure TFrmDBGrid.Query1BeforeClose(DataSet: TDataSet);
begin
 if Query1.State in [dsEdit, dsInsert] then
  Query1.Post;
 if Query1.UpdatesPending then
 begin
   Query1.ApplyUpdates;
   Query1.CommitUpdates;
 end;
end;
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Yaw ben de denedim olmadı !... Delphi >Help'te oluyor hem de otomatik yapılıyor filan diyor ama olmadı.

Ancak Internette arama yaptığımda Delphi 2,3,4 için yapılmış bir TMultiUpdateSQL componenti buldum. Onun linkini vereyim.

Aslında kısmi manuel olarak yapılabilir sanırım. Denemek lazım (Yani OnUpdateRecord Eventinde UpdateSQL'ler kendin manuel Exec Ettirirsen olur gibime geliyor.

Ayrıca bu özellik Delphi6'dan sonra gelmiş. Bir de Delphi7'ye bakacağım belki bir bug vardır..

http://www.delphi32.com/vcl/1405/

link yukarıda

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Çözdüm 8)

Kod şu şekilde olacak.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Open ;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.ApplyUpdates ;
  Query1.CommitUpdates ;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  UpdateSQL1.DataSet := Query1;
  UpdateSQL2.DataSet := Query1;
  UpdateSQL3.DataSet := Query1;
end;

procedure TForm1.Query1UpdateRecord(DataSet: TDataSet;
  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
  UpdateSQL1.SetParams(UpdateKind);
  UpdateSQL1.ExecSQL(UpdateKind);
  UpdateSQL2.SetParams(UpdateKind);
  UpdateSQL2.ExecSQL(UpdateKind);
  UpdateSQL3.SetParams(UpdateKind);
  UpdateSQL3.ExecSQL(UpdateKind);
  UpdateAction := uaApplied ; 
end;
UpdateSql'lerdeki yazılı olanlar ise,

Kod: Tümünü seç


--UPDATESQL 1 İÇİN

update TABLO1
set
  T1KOD = :T1KOD,
  T1SAYI1 = :T1SAYI1
where
  T1KOD = :OLD_T1KOD

insert into TABLO1
  (T1KOD, T1SAYI1)
values
  (:T1KOD, :T1SAYI1)

delete from TABLO1
where
  T1KOD = :OLD_T1KOD


--UPDATESQL 2 İÇİN

update TABLO2
set
  T2KOD = :T1KOD,
  T2SAYI1 = :T2SAYI1
where
  T2KOD = :OLD_T1KOD

insert into TABLO2
  (T2KOD, T2SAYI1)
values
  (:T1KOD, :T2SAYI1)

delete from TABLO2
where
  T2KOD = :OLD_T1KOD


--UPDATESQL3 İÇİN

update TABLO3
set
  T3KOD = :T1KOD,
  T3SAYI1 = :T3SAYI1
where
  T3KOD = :OLD_T1KOD

insert into TABLO3
  (T3KOD, T3SAYI1)
values
  (:T1KOD, :T3SAYI1)

delete from TABLO3
where
  T3KOD = :OLD_T1KOD

Tabloların Structure'ları ise

Kod: Tümünü seç


CREATE TABLE [dbo].[TABLO1] (
	[T1KOD] [char] (10) COLLATE Turkish_CI_AS NOT NULL ,
	[T1SAYI1] [int] NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TABLO2] (
	[T2KOD] [char] (10) COLLATE Turkish_CI_AS NOT NULL ,
	[T2SAYI1] [int] NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TABLO3] (
	[T3KOD] [char] (10) COLLATE Turkish_CI_AS NOT NULL ,
	[T3SAYI1] [int] NULL 
) ON [PRIMARY]

Kodlar Delphi 5,6 ve 7'de çalışıyor test ettim.Table'lar, MS-SQL Server'da yapıldı.

Senin yaşadığın sıkıntı benimki ile aynı oldu, yani bir tane kayıt atıyor ama gerisi gelmiyor ve Table is readonly hatası veriyor. Bunu da aslında, UpdateAction'a çıkışta değer atamadığımız için yapıyormuş. Delphi7 Helpte oraya dikkat edilmesi gerektiği not düşülmüş :) 6'da yok böyle bir not. Herhalde konu ile ilgili çok soru sorulmuş bunu da yazmışlar.

İlgili Application'ı sana zip edip göndereyim, mail adresine bir bakacağım.

Kolay Gelsin.

Kılıcımı kapatiiim (czwoooaaaannnn...)
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Abi Allah kılıcına zeval vermesin, :D :D . Duasıcıyız...
Sağolasın epey bir uğraşmıssın benim için.
Bizim bu Erdemli / Mersin de seçimler çok hararetli geçti, son 2 gündür çalışamadım. Araba kornaları kafa - beyin bırakmadı.
Gönderdiğiniz bilgiler ışığında çalışacağım.
Bu arada E-postam: oguzozturk74@yahoo.com

Saygılar
Oğuz ÖZTÜRK
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

S.A.

Ben birden fazla tabloyu Update etmekten vazmı geçsem acaba.(Yanlış bir tasarım mı yapıyorum )
Bir türlü olmadı. Nerde hata yapıyorum anlamadım. Adımız Updateçiye çıkacak. :lol:
Abi şimdi bütün dediklerinizi yaptım, kendime göre varyasyonlar da denedim ve en son Gride bilgi girip çıktıktan sonra şu hatayı veriyor: Exception Class Edatabase Error with message ‘ Update failed ’ :(
Sizinde anladığınız gibi, ‘update başarısız’ diyor. Hatanın olduğu yer ise OnUpdateRecord olayının içinde yani

Kod: Tümünü seç

UpdateSQL2.SetParams(UpdateKind);
 UpdateSQL2.ExecSQL(UpdateKind); 
Satırlarında görüküyor. Şimdi diyeceksiniz : Git UpdateSQLin DeleteSQL,ModifySQL ve InsertSQL lerini kontrol et. Aynen dediğiniz gibi bütün SQL ifadelerini kendi tablolarıma uyarladım.

Ben delphi7 kullandığım için verdiğiniz linkteki bileşeni yükleyemedim , çünkü Delphi4 için yazılmış . Başka bir yerden Delphi5 için olanını buldum O da olmadı.

Yardım lütfen...

Saygılar
Oğuz ÖZTÜRK
Cevapla