Formda Görünmesi Gerekmeyen DBEditler

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Formda Görünmesi Gerekmeyen DBEditler

Mesaj gönderen Salih »

Merhaba,

Oldukça karışık bir formum var. Asıl bilgiler bir Dataset aracılığıyla geliyor ama, yeni bir kayıta başlandığında, bazı alanların değerlerini kullanıcının yaptığı seçimlere bağlı olarak başka tablolardan taşıyıp, üzerinde çalıştığım dataset e eklemem lazım.( o gün için geçerli olan bazı oranlar mesela)
Bu eklenecek alanların her biri için bir DBEdit kullanıyorum (başka yolu var mı yoksa ?) Şimdi bu 10 tane alanı mutlaka formun üstüne koymam mı lazım, Visible false yaptım, kullanıcı görmeyecek ama ben çalışırken de orda görmek istemiyorum,
Ne yapabilirim ?
Sevgi, Saygı.....
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

Salih hocam sorunu biraz daha ayrıntılı anlatırsanız belki yardımcı olma gibi durumumuz hasıl olur.Bir deyapmak istediğin şeyi biraz daha detaylı anlatmanızı bekliyorum Kolay gelsin
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

hocam alanları arka planda kullanacaksanız dbedite yada baska bir gorsel bilesene ihtiyacınız yok...
mesela bir alana gore formun arka plan rengini degistirmek istiyorsunuz diyelim
ilgili datasource un OnDataChange olayına yazıverin kodunuzu olay tamam
eger bazı alan degerlerini kayıt sonrası kullanacaksanız beforepost olayına yazın gereken hesaplamaları...
yani alternatif yol cok
ayrıca yapmak istediginiz ne ona gore belki db server tarafında bile yapılabilir triggerlar vasıtası ile
kolay gelsin...
ÜŞENME,ERTELEME,VAZGEÇME
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Ayrıntı

Mesaj gönderen Salih »

Şimdi bu bir sipariş formu. Dataset in bir kayıtında 30 tane alan var.
Yeni bir kayıt girerken bunlardan 15 tanesini kullanıcı elle girecek, 10 tanesi ise kullanıcının girdiği değerlere bağlı olarak başka tablolardan okunup giriş işlemi onaylanırsa datasete kaydedilecek. (O bayi için geçerli bazı oranları bayiler tablosundan getirip sipariş kayıdına yazıyorum, çünkü oranlar zamanla değişebiliyor, o değişiklikler benim sipariş tablomu etkilememeli.)

1- Bu 10 alanı kullanıcı görmesin,(bunu visible ile hallettim) Mümkünse ben de görmeyeyim ekran çok karışık görünüyor, bunu yapamadım.

2- Bu da daha önemli bir soru : 5 alan var ki, bu alanların bilgisini görüntüliycem, kullanıcı isterse değiştirecek. Görüntüleme kısmı tamam, bilgiler geldi güzelce. Ama o alana tıklandığında değeri sıfırlanıyor, sanırım datasetteki bilgiyi alıp tekarr getiriyor. Bunu nasıl engellerim ?

(örnek : iskonto oranı , her bayi için BAYI tablosunda bir sabit iskonto oranı var, Proje ismi verirsek sabit yerine projedeki iskonto oranı kullanılacak, vazgeçersek tekrar bayi oranına dönecek, canımız isterse de yeni bir oran yazabilicez.)
Sevgi, Saygı.....
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Datasource başka formda

Mesaj gönderen Salih »

gkimirti yazdı:ilgili datasource un OnDataChange olayına yazıverin kodunuzu olay tamam eger bazı alan degerlerini kayıt sonrası kullanacaksanız beforepost olayına yazın gereken hesaplamaları...
yani alternatif yol cok ayrıca yapmak istediginiz ne ona gore belki db server tarafında bile yapılabilir triggerlar vasıtası ile
kolay gelsin...
Hocam, ondatachange eventini inceliyorum şu anda. Ancak, database, transaction, dataset, datasource vs vs tanımlarımın hepsi ayrı bir Data modul de yapılmış durumda. Siparişleri ise başka formda kaydediyorum.
Sevgi, Saygı.....
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
1. soru için. Görmek istemdediğin dbeditleri seçip klavyeden delete tuşuna bas. :D
Bu dbeditlerin bağlı oldukları alanların değerlerini değiştirmek için

Kod: Tümünü seç

tabloadialanadi.asstring(.asinteger...)
şeklinde alanlara erişebilirsin.
Kaydet düğmesine tıkladığın zaman

Kod: Tümünü seç

tabloadi.post
satırından önce

Kod: Tümünü seç

tabloadialanadi.asinteger:=bayitablosuoran.asinteger;
şekllinde atama yaparak alanlara ulaşabilirsin.
2. soru için dbeditlerin text ini değiştirdiğin zaman veri tabanında bilgiler değişmez. onun yerine yukarda gösterdiğim şekilde atama yaparsan bu sorun hallolur. not: Eğer combobox tarzı birşey istiyorsan dblookupcomboboxu tavsiyeedeceğim.
Kolay Gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla