Query ve UpdateSQL
Selamlar,
Eğer mümkün ise, Benim yaptığım gibi Update'lerinin SQL'lerini gönder. Bir inceleyelim.
Benim sana gönderdiğim şey çalıştı değil mi?
Kolay Gelsin.
Eğer mümkün ise, Benim yaptığım gibi Update'lerinin SQL'lerini gönder. Bir inceleyelim.
Benim sana gönderdiğim şey çalıştı değil mi?
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Gene şu kılıcını kınından çıkarsan iyi olacak.
Nasıl olsa çalışıyor diye senin
örneği denemedim. Abi şuan çok acil dışarı çıkıyom, gelince deneyeceğim.
Hatırlatma: Genel projede, SutCariKay tablosuna Müşterinin kayıtlarını yapıyorum ve DBGrid de Query1 ile SutCariKay den sadece Kodu ve Adi nı alıyorum. Diğer iki tablonun (SutGir, YemGir) ise bütün alanlarını alıyorum. Ayrı bir formda da SutCariKay Master tablo olmak üzere iki tane Detay tablo (SutGir, YemGir) ile rapor alacağım.
* UpdateSQL1 için:
* UpdateSQL2 için:
* UpdateSQL3 için:
* Query1 için:
CachedUpdates: True
Tablo yapıları:
Saygılar,
Oğuz ÖZTÜRK

Nasıl olsa çalışıyor diye senin

Hatırlatma: Genel projede, SutCariKay tablosuna Müşterinin kayıtlarını yapıyorum ve DBGrid de Query1 ile SutCariKay den sadece Kodu ve Adi nı alıyorum. Diğer iki tablonun (SutGir, YemGir) ise bütün alanlarını alıyorum. Ayrı bir formda da SutCariKay Master tablo olmak üzere iki tane Detay tablo (SutGir, YemGir) ile rapor alacağım.
Kod: Tümünü seç
procedure TFrmDBGrid.BtKapatClick(Sender: TObject);
begin
Query1.ApplyUpdates;
Query1.CommitUpdates;
close;
end;
procedure TFrmDBGrid.FormCreate(Sender: TObject);
begin
UpdateSQL1.DataSet:=Query1;
UpdateSQL2.DataSet:=Query1;
UpdateSQL3.DataSet:=Query1;
end;
procedure TFrmDBGrid.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Query1.close;
end;
procedure TFrmDBGrid.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;
procedure TFrmDBGrid.FormShow(Sender: TObject);
begin
Query1.Open;
end;
Kod: Tümünü seç
delete from SutCariKay
where
Kodu = :OLD_Kodu and
Adi = :OLD_Adi
insert into SutCariKay
(Kodu, Adi)
values
(:Kodu, :Adi)
update SutCariKay
set
Kodu = :Kodu,
Adi = :Adi
where
Kodu = :OLD_Kodu and
Adi = :OLD_Adi
Kod: Tümünü seç
delete from SutGir
where
Kodus = :OLD_Kodu
insert into SutGir
(Kodus, SutTar, SMik, SFiy, SOdenen, Sguntut, Skalan)
values
(:Kodu, :SutTar, :SMik, :SFiy, :SOdenen, :Sguntut, :Skalan)
update SutGir
set
Kodus = :Kodu,
SutTar = :SutTar,
SMik = :SMik,
SFiy = :SFiy,
SOdenen = :SOdenen,
Sguntut = :Sguntut,
Skalan = :Skalan
where
Kodus = :OLD_Kodu
Kod: Tümünü seç
delete from YemGir
where
Koduy = :OLD_Kodu
insert into YemGir
(Koduy, Yem, YMik, YFiy, YemTar, Ytut)
values
(:Kodu, :Yem, :YMik, :YFiy, :YemTar, :Ytut)
update YemGir
set
Koduy = :Kodu,
Yem = :Yem,
YMik = :YMik,
YFiy = :YFiy,
YemTar = :YemTar,
Ytut = :Ytut
where
Koduy = :OLD_Kodu
Kod: Tümünü seç
SQL:
SELECT
SutCariKay.Kodu, SutCariKay.Adi,
SutGir.Kodus, SutGir.SutTar, SutGir.SMik, SutGir.SFiy, SutGir.SOdenen,
SutGir.Sguntut, SutGir.Skalan,
YemGir.Koduy, YemGir.Yem, YemGir.YMik, YemGir.YFiy, YemGir.YemTar, YemGir.Ytut
FROM
SutCariKay, SutGir, YemGir
Tablo yapıları:
Kod: Tümünü seç
SutCariKay : Kodu (*) , Adi (index) , Adres , Tel , Fax
SutGir : Ssira(+*) , Kodus (index), SutTar , Smik , Sfiy , Sodenen , GirSguntut , GirSkalan
YemGir : Ysira(+*) , Koduy(index) , Yem ,Ymik , Yfiy , YemTar , Ytut
Oğuz ÖZTÜRK
Selamlar,
Eğer kodlar yukarıda yazdığın gibi ise, Query1'in SELECT'inde WHERE Clause görülmüyor. Yani neyi neyle join ediyor bilemediği için UpdateFail olabilir. Bir oraya göz at. Yani Cari ile Yem ve Süt table'larını hangi field ile join ediyorsun? (Benim gördüğüm kadarı ile Kodu alanı) buna göre where clause'unu düzenle.
Bak bakalım yine olmaz ise, projeni ve DB'lerini bana zipleyip gönder. Umarım milyon tane komponent kurmmamışsındır
Kolay Gelsin.
Eğer kodlar yukarıda yazdığın gibi ise, Query1'in SELECT'inde WHERE Clause görülmüyor. Yani neyi neyle join ediyor bilemediği için UpdateFail olabilir. Bir oraya göz at. Yani Cari ile Yem ve Süt table'larını hangi field ile join ediyorsun? (Benim gördüğüm kadarı ile Kodu alanı) buna göre where clause'unu düzenle.
Bak bakalım yine olmaz ise, projeni ve DB'lerini bana zipleyip gönder. Umarım milyon tane komponent kurmmamışsındır

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Tamam hocam dediğin gibi where clause unu kullanacağım.
Yine olmaz ise sana zipler gönderirim.
Abi inan yabancı hiçbir bileşen kullanmadım, zararı olur diye. Mesela Gridin içerisine yerleştirdiğim DateTimePicker ler ve DBLookUpComboBox lar falan hep kod ile yapılmış. (Sizin kadar olmasa da, birazcık
)
Saygılar.
Yine olmaz ise sana zipler gönderirim.
Abi inan yabancı hiçbir bileşen kullanmadım, zararı olur diye. Mesela Gridin içerisine yerleştirdiğim DateTimePicker ler ve DBLookUpComboBox lar falan hep kod ile yapılmış. (Sizin kadar olmasa da, birazcık

Saygılar.
Estağfurullah,
Ok. Sonucu bekliyorum.
Kolay Gelsin.
Ok. Sonucu bekliyorum.
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Selamlar,
Key Violation Hatası Almanız doğal. Çünkü SütçüCari table'ında birden fazla aynı kodlu kayıt oluşturmaya kalkıyorsunuz.
Sizin Gridde girdiğiniz kayıtta ikinci bir kez SutcuCari table'ına kayıt atmaya çalışıyor.
Aslında Yapmak istediğiniz şey şu mu,
Mevcut sütçülerden gelen sütlerin girişinin yapılmasını istiyorsanız mantığı değiştirmek gerekiyor.
Yani SütçüCari table'ına UpdateSQL kullanmayacaksınız. Orası sadece LookUp yapılacak bir yer olacak. Bu sebeple de Gridinizin ve Query'nizinin mantığını LookUp yapacak şekilde değiştirmelisiniz.
Siz oradaki olacak mantığı izah ederseniz ben de size çözüm yolunu gösterebilirim (sanırım
)
Not : Bu arada sourceunuzu inceleyip yazdım yukarıdakileri.
Kolay Gelsin.
Key Violation Hatası Almanız doğal. Çünkü SütçüCari table'ında birden fazla aynı kodlu kayıt oluşturmaya kalkıyorsunuz.
Sizin Gridde girdiğiniz kayıtta ikinci bir kez SutcuCari table'ına kayıt atmaya çalışıyor.
Aslında Yapmak istediğiniz şey şu mu,
Mevcut sütçülerden gelen sütlerin girişinin yapılmasını istiyorsanız mantığı değiştirmek gerekiyor.
Yani SütçüCari table'ına UpdateSQL kullanmayacaksınız. Orası sadece LookUp yapılacak bir yer olacak. Bu sebeple de Gridinizin ve Query'nizinin mantığını LookUp yapacak şekilde değiştirmelisiniz.
Siz oradaki olacak mantığı izah ederseniz ben de size çözüm yolunu gösterebilirim (sanırım

Not : Bu arada sourceunuzu inceleyip yazdım yukarıdakileri.
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Sağolun hocam,
Aynen dediğin gibi
, önce mevcut sütçüler Cari ye kaydedilecek daha sonra o kişiye ait ( mesela adam hergün süt getiriyor ve yem alıyor ) süt ve yem girişleri olacak. Nasıl bir mantık izleyeyim
Yoksa dediğiniz Lookup mantığı yeterli mi
Abi şuan dank etti , dediğin doğru : Gridde girdiğim kayıtta ikinci bir kez SutcuCari table'ına kayıt atmaya çalışıyorum.
Aslında ben bütün Cari kayıtları , Süt Girişlerini ve Yem Girişlerini ayrı formlarda DBEdit ler yardımı ile yapmıştım . Hiçbir sorun da yoktu. Ama adamlar MS Excel i görmüşler ve niye bütün girişleri bizde tek biryerde yapmayalım diye tutturdular.(şerefsiz Billy exceli yapmasa idi bütün bunlar olmazdı
) Bir de şunu istiyorlar: Gridi açtıklarında o ana kadar kaydedilmiş bütün satıcıların bir defa görükmesini istiyorlar.(Valla kuşa kurda yem olduk ya
)
Son birşey: Tablo yapılarım nasıl?
mu?
İnşallah anlaşılır olmuştur.
Saygılar
Aynen dediğin gibi



Abi şuan dank etti , dediğin doğru : Gridde girdiğim kayıtta ikinci bir kez SutcuCari table'ına kayıt atmaya çalışıyorum.
Aslında ben bütün Cari kayıtları , Süt Girişlerini ve Yem Girişlerini ayrı formlarda DBEdit ler yardımı ile yapmıştım . Hiçbir sorun da yoktu. Ama adamlar MS Excel i görmüşler ve niye bütün girişleri bizde tek biryerde yapmayalım diye tutturdular.(şerefsiz Billy exceli yapmasa idi bütün bunlar olmazdı


Son birşey: Tablo yapılarım nasıl?

İnşallah anlaşılır olmuştur.
Saygılar
Selamlar,
Girişlerinde LookUp Kullanırsa daha iyi olur (Yani Sütçü Carileri LookUptan Getirmen daha iyi olur9 diğer table'ları da birbirine Join edersin ve sadece iki adet UpdateSQL kullanarak bitirebilirsin.
Ayrıca ben sana ekstra bir mail göndermedim. Aslında şu sıralarda benim adıma oraya buraya mail gönderen bir virüs dolanıyor ama hadi bakalım hayırlısı. Bana da günde belki 15-20 adet mail geliyor. Hiç tanımadığım kişilerden hepsinde de attachment var. Ben direct siliyorum. Bir şekilde biryerler hack edilmiş ve benim adıma (benim gibi milyonlarca insan adına) oraya buraya mail atılıp duruyor.
Yakında kokusu çıkar bu işin.
Not : Pazar günü yanıt yazma ihtimalim şu anda maalesef yok !...
Kolay Gelsin.
Girişlerinde LookUp Kullanırsa daha iyi olur (Yani Sütçü Carileri LookUptan Getirmen daha iyi olur9 diğer table'ları da birbirine Join edersin ve sadece iki adet UpdateSQL kullanarak bitirebilirsin.
Ayrıca ben sana ekstra bir mail göndermedim. Aslında şu sıralarda benim adıma oraya buraya mail gönderen bir virüs dolanıyor ama hadi bakalım hayırlısı. Bana da günde belki 15-20 adet mail geliyor. Hiç tanımadığım kişilerden hepsinde de attachment var. Ben direct siliyorum. Bir şekilde biryerler hack edilmiş ve benim adıma (benim gibi milyonlarca insan adına) oraya buraya mail atılıp duruyor.
Yakında kokusu çıkar bu işin.
Not : Pazar günü yanıt yazma ihtimalim şu anda maalesef yok !...
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Tamam hocam dediğin gibi Lookup ile halletmeye çalışacağım.
Mail hakkında ben de şüphelenmiştim zaten. Bana da senin gibi bir çok mail geliyor ve hiçbirini açmadan direk siliyorum. Senin ismini görünce , sendendir diye açtım, Allah tan Yahoo, içinde virüs var diye açtırtmadı(Yahoo nunda günahını almışız
).
Alıntı:
Not : Pazar günü yanıt yazma ihtimalim şu anda maalesef yok !...
Hocam sakın yanlış anlama ben onu sadece çok sabırsızlandığım için söylemiştim, kötü bir niyetim yoktu.
Tabiki Pazar günü yazma gibi bir zorunluluğunuz yok, hatta hiçbir gün yazma zorunluluğunuz yok. Allah hepinizden razı olsun bunca işinizin arasında böyle bir hizmet veriyorsunuz. Ben, yaptığınız işlerden dolayı hepinize çok saygı duyuyorum.
Tekrardan minnettarlığımı belirtmek isterim.
Saygılar
Oğuz ÖZTÜRK
Mail hakkında ben de şüphelenmiştim zaten. Bana da senin gibi bir çok mail geliyor ve hiçbirini açmadan direk siliyorum. Senin ismini görünce , sendendir diye açtım, Allah tan Yahoo, içinde virüs var diye açtırtmadı(Yahoo nunda günahını almışız

Alıntı:
Not : Pazar günü yanıt yazma ihtimalim şu anda maalesef yok !...
Hocam sakın yanlış anlama ben onu sadece çok sabırsızlandığım için söylemiştim, kötü bir niyetim yoktu.

Tekrardan minnettarlığımı belirtmek isterim.
Saygılar
Oğuz ÖZTÜRK
Selamlar,
Teveccühünüz için teşekkürler ancak ben de pazar günü yazamadığım için hayıflandığımı anlatmaya çalışmıştım
Yanlış anlaşıldıysa kusura bakma
Buradaki tüm arkadaşlar aynı heves ve ilgiyle yardımcı olmaya çalışıyorlar. Bunları tüm arkadaşlarımız adına söylüyorum. Allah hepimizden razı olsun.
Kolay Gelsin.
Teveccühünüz için teşekkürler ancak ben de pazar günü yazamadığım için hayıflandığımı anlatmaya çalışmıştım


Buradaki tüm arkadaşlar aynı heves ve ilgiyle yardımcı olmaya çalışıyorlar. Bunları tüm arkadaşlarımız adına söylüyorum. Allah hepimizden razı olsun.
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
-
- Üye
- Mesajlar: 50
- Kayıt: 17 Haz 2003 09:00
- Konum: İstanbul
Merhaba Arkadaşlar;
Bu başlığı gördüğümde tamam aradığımı buldum
dedim ama maalesef yine olmadı benim updatesql işim.
Table 'la kayıt yaparken;
ile kayıt yapabildiğim gibi aynı şeyi query ile yapmak için;
query1.UpdateObject:= UpdateSQL1;
query1.CachedUpdates:= True;
yaptıktan sonra;
ilede kayıt insert etmesi gerekmiyor mu? Çünkü hata falan vermiyor ama kayıtlarda gerçekten insert olmuyor. ApplyUpdates ve CommitUpdates leride query e yazdığımda hata veriyor.
Bu işin olmazsa olmazı nedir? veya benim ekstradan dikkat etmem gereken ne? Delphi 7 ve oracle 9i kullanıyorum
Çok teşekkürler Arkadaşlar...
Bu başlığı gördüğümde tamam aradığımı buldum

Table 'la kayıt yaparken;
Kod: Tümünü seç
table1.insert;
..dbedit....
table1.apply;
query1.UpdateObject:= UpdateSQL1;
query1.CachedUpdates:= True;
yaptıktan sonra;
Kod: Tümünü seç
database1.StartTransaction
query1.SQL.Clear;
query1.SQL.Add('select * from table_name');
query1.open;
....
query1.insert;
...dbedit....
query1.post;
database1.commit;
Bu işin olmazsa olmazı nedir? veya benim ekstradan dikkat etmem gereken ne? Delphi 7 ve oracle 9i kullanıyorum
Çok teşekkürler Arkadaşlar...
Hatice SEVİM / BEDAŞ
Merhaba..
- Kayıt için
...
şeklinde kullanmayı tercih etseniz..
- Kayıt için
Kod: Tümünü seç
INSERT INTO veritabani (alan1, alan2) Values (:d0, :d1)
Kod: Tümünü seç
Parameters.ParamByName('d0').Value := 'Değer1';
Parameters.ParamByName('d1').Value := 'Değer2';
ExecSQL;
-
- Üye
- Mesajlar: 50
- Kayıt: 17 Haz 2003 09:00
- Konum: İstanbul