Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Veritabanına aynı değeri yazıyorsak boşuna güncellemeyelim.
#1
Başlık izaha ihtiyaç duymuyor sanırım.
Özellikle güncelleme işlemlerinde tabloya aynı veriyi yazdıktan sonra POST komutu gereksiz.
Ben bu konuda kendimce bir class helper yaptım ama siz ne düşünüyorsunuz?

  Tablo.AsStr('Alan', Tablo2.AsStr('Alan') );
  ...
  if Tablo.Modified then
     Tablo.Post;

Bu arada yukarıda "FieldByName().As" kalabalığından kurtulduğumu da görüyorsunuz.

  Tablo.FieldByName('Alan').AsString := Tablo2.FieldByName('Alan').AsString;
Cevapla
#2
Kod kalabalığını sadeleştiren sınıf tipi yapılar ve/veya unitler hem kod okunurluğunu artırır hem de unisex/joker diyeyim her kalıba uyan türden kütüphanenizi zenginleştirir. Bu nedenle sizi destekliyorum.

Faydasını gördüğünüzü ve mutlu olduğunuzu da anladım. 

Ancak bu mesajınızı neden yazdığınızı anlamadım.   Wink

Kodlarınızın veritabanından gelen veriyi sizin girişler ile karşılaştırma tekniği verimliliğini bilmeden yardımcı olmak ihtimalen düşük.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#3
Veriyi her alan için farklı mı diye kontrol edip,
yalnızca farklıysa yazmak fikri sizde de mantıklı mı diye merak ettim.

Şimdilik 6 dakikalık iş 3 dakikaya düştü ama yine de tuhaf bir yol gibi geliyor Smile
Cevapla
#4
Tuhaf demeyelim, bir sürü yöntem var olabilir ama size hitap eden yol en iyisidir.

Şöyle ki, kaydet butonuna basınca ne gibi bir işlem yapıldığını bilmediğimizden böyle yorumladım.

Örneğin, güncelle butonuna basınca önce query ile ilgili kaydı bul, mevcut kayıtlı değerleri al, farklı olanları için UPDATE SQL üret ve EXECSQL yap şeklinde bir yapı gibi de algılanabilir. 

Bir tablonuz var sürekli açık duruyor, bu açık olan record değerlerini edit'lerle karşılaştır, fark varsa EDIT mode geç, atamaları yap, post et vs. farklı farklı yöntemler var. 

Gösterimdeki alanları bir listview ile sunumunu yapıp, veritabanına bir süre başvurmayıp, güncellemeleri karşılaştırmaları vs. offline kontrol ediyor da olabilirsiniz. 

Ortak tablo varsa güncellenecek kayıtlara kilit atıp işi bitene kadar diğer kullanıcıların bunu izlemesini, network üzerinden mesaj ile aynı kayda odaklı kişileri bilgilendiriyor da olabilirsiniz gibisinden

Göreceğiniz gibi alternatif çok.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#5
Benim tercihim şu olurdu
Tablo1.Edit;
for i := 0 to Pred(Tablo2.FieldCount) do
begin
if Tablo1.FindField(Tablo2.Fields[i].FieldName) <> nil then
  Tablo1.FieldByName(Tablo2.Fields[i].FieldName).Value := Tablo2.Fields[i].Value;
end;
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Veri tabanına aynı değeri tekrarlama arsl01 21 487 03-05-2019, Saat: 11:34
Son Yorum: edo
  SQL de Aynı Tablo İçinde Kopyalamak OZCANK 7 207 09-04-2019, Saat: 11:00
Son Yorum: Tuğrul HELVACI
  CalendarView tarih değeri dilo 4 755 31-10-2018, Saat: 03:14
Son Yorum: Ahmet İPEKÇİ
  Aynı türden iki class'ı nasıl klonlarız? uparlayan 20 1.689 15-09-2018, Saat: 10:41
Son Yorum: ismailkocacan
  Client tarafında yapılan tüm değişiklikleri tek seferde veritabanına nasıl yazarım adelphiforumz 3 496 12-09-2018, Saat: 22:30
Son Yorum: ssahinoglu



Konuyu Okuyanlar: 1 Ziyaretçi