showmessage ile ilgili basit bi hata ama yapamadım.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

showmessage ile ilgili basit bi hata ama yapamadım.

Mesaj gönderen meron06 »

Sel.al.arkadaşlar.projemde bi memory table a kaydedilen yaklaşık 20 adet kaydı tabloya girdiriyorum.vt em fb.kayıt işlemi sorunsuz yapılıyor.dongünün sonunada showmessage ile kayıt işleminin başarılı olduğuna dair mesaj verdiyorum.mesaj bazen görünüyor.bazen de program kilitlenmiş gibi oluyor alt tab yapınca showmessage görünüyor.bu sorunu nasıl çözebilirim.
ikut

Re: showmessage ile ilgili basit bi hata ama yapamadım.

Mesaj gönderen ikut »

meron06 yazdı:Sel.al.arkadaşlar.projemde bi memory table a kaydedilen yaklaşık 20 adet kaydı tabloya girdiriyorum.vt em fb.kayıt işlemi sorunsuz yapılıyor.dongünün sonunada showmessage ile kayıt işleminin başarılı olduğuna dair mesaj verdiyorum.mesaj bazen görünüyor.bazen de program kilitlenmiş gibi oluyor alt tab yapınca showmessage görünüyor.bu sorunu nasıl çözebilirim.
Kodunu buraya yazarmsın. sorun senin kodundadır.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

bence kayıt işlemi yaptığın kodlarında bir hata olduğunu sezinleniyorum.sen yinede bir kodunu yaz.tümüyle birlikte yazarsan inceleriz kapsamlı bir şekilde.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
ertemsoft
Üye
Mesajlar: 129
Kayıt: 19 Nis 2005 01:22
İletişim:

Mesaj gönderen ertemsoft »

slm

Arkadaşların dediği gibi kodu görsek daha çok yardımcı oluruz birde kullandıgın memtable hangisi Rxlib DevEx ? Eğer Rxlib in memtable ise
DevEx inkini tavsiye ederim. birde mesajdan sonra

application.processmesages i ekleyip deneyebilirsin.

saygılar
Bilgi Paylaştıkça Çoğalır
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

ShowMessage

Mesaj gönderen sabanakman »

ShowMessage kullanıyorsa o zaman başka projeye geçişin var ama bana MessageBox kullanıyormuşsun gibime geliyor. Buna da ilk parametre olarak gerekli değeri vermiyorsun. Aşağıdaki şekli incele.

Yanlış olan

Kod: Tümünü seç

  MessageBox(0,'İşlem tamam.','Uyarı',MB_ICONINFORMATION);
Doğru olan

Kod: Tümünü seç

  MessageBox(Screen.ActiveForm.Handle,'İşlem tamam.','Uyarı',MB_ICONINFORMATION);
ilk parametre mesaj penceresi hangi form üzerinde görüntülenecekse onun (Form2.Hadle veya Screen.ActiveForm.Handle gibi) değeri olmalı.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

1. Formunuzu ShowModal ile mi aciyorsunuz?

2. si Toplu girislerde Memtable kullandiginizi soylediniz..

Sanirim grid uzerinden 20 kayit giriyorsunuz ve en son kaydet butonuna bastiginizda bir döngüyle kaydediyorsunuz..

Peki hangi kayitlarin degistigini hangi kayitlarin yeni eklendigini hangi kayitlarin silindigini görmek icin hangi islemi kullaniyorsunuz? Cünkü ben de bi ara memory table kullanarak yapmayi düsündüm ancak daha sonra Batch isleminin daha uygun oldugunu ogrendim.. Eger sadece toplu giris degil bunun yaninda toplu degistirme de yapiyorsaniz degistirilen ve silinen ve yeni eklenilen kayitlari nasil takip ettiginizi ogrenebilir miyim?
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

ben mem tablo ile şöyle yapıyorum..

örnek bir fiş üzerinde değiştirme, silme, ekleme gibi işlemler ypacaksam; bütün kayıtları ilk önce memtabloya alıyorum.. ve işlemleri yaptıktan sonra kaydet dediğimde; fiş numarasıyla aynı olan kayıtların tümünü silip, daha sonra memtablodaki bütün kayıtları yeni kayıt olarak ekliyorum..
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

rx in memory table ını kullanıyorum. memory deki kayıtları bi döngü ile kaydederken memtable da bi alanım var db diye vt ye kaydedilme işlemi yapıldığınbda bu alanı 1 yapıyorum bu şekilde hangi kaydın vt ye kahdedildiğini hangisinin kaydedilmediğini ayırt ediyorum.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Peki update isini nasil yapiyorsunuz yani,

degistirme tusuna bastiniz karsiniza tum kayitlar geldi ondan sonra bazi kayitlar üzerinde update yapildi, yeni bir kayit eklendi ve eskiden eklenmis bir kayit silindi..

Silineni memtableda olmayan kayitlari bularak ayirt ediyorsunuz
Yeni eklenen de ayni sekilde..

Peki degistirilenleri? Her kolonu tek tek kontrol edip eger eski degerler ile o anki degerler ayniysa update edilmemis, eger ayni degilse update edilmis diye mi ayirt ediyorsunuz? Veya bunu sizin yerinize yapan hazir bir fonksiyonu mu var kullandiginiz componentin..

Kolay gelsin
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

tek tek yapmıyoruz...

örnek 101 nolu faturayı mem tabloya aldık...

memtablo üzerinde değişiklikler yaptıktan sonra.. kaydet dediğimizde ilk önce datadaki 101 nolu faturaya ait bütün kayıtları sil diyoruz..

ve daha sonra mem tablodaki kayıtları 101 nolu fatura olarak kaydet diyoruz..

bu kadar..
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Evet bastan Silmek, sonra da Kayitlari tek tek ekleme bir cözüm ama dogru bir cözüm degil..

Varsayalim kaydettiginiz ID yi disaridan kullanan bir FK yapisi olusturdunuz. Ya tüm kayitlara bagli kayitlar da silinecek, ya da kayit silinemez cünkü bagli kayitlar var diyecek..

Tabi ki sizin karariniz, herneyse sonuc olarak ben BatchOptimistic modunu kullanin derim, BDE (Cached updates sanirim)..

1. Sebep: Veri bütünlüğü : Diger tablolarla alakali kayitlar silinip diger tablolar vs etkilenmez.
2. Sebep: Performans : Alakasiz masum kayitlar islemden etkilenmez

Tabi fikrimin ne kadar dogru olup olmadigini arastirmak size kalmis.

NOT: Umarim dediklerimi bilmislik taslamak olarak anlamamissinizdir, sonucta ben de su anlattiklarimi 3 ay once ogrenmeye ve kullanmaya basladim, konuya benden daha cok hakim olan degerli üstadlarimin bana onerdigi sey Ado: BatchOptimistic (BDE: Cached Updates)

Kolay gelsin.
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

sonuçta veri bütünlüğünü bozacağını zannetmiyorum.. Eğer yapıyı düzgün kurduysanız bir sonuç yaşanmaz...

Ve ayrıca bu çok fazla kaydın olduğu bir yapıda uygulanan bir yöntem değil.. 10 veya 20 kalemlik bir fiş ve benzeri durumlarda uygulanıyor..

silme işlemini verileri çekerken yapmadığımız için,, enson kayıt kısmında sil ve ekle dediğimiz için bu süre nerdeyse sıfıra yakın...

Ayrıca ben şöyle biliyorum.. eğer yanlış ise bilen arkadaşlar lütfen düzeltsin..

firebird bir kaydı update ettiğiniz zaman; gidip o kaydı değiştirmiyor, eskisini kullanılmaz olarak işaretleyip, yeni bilgileri yeni kayıt olarak ekliyor ve zaten bu yüzdende veri tabanının büyüklüğü bir süre sonra veri miktarı ile orantısız olarak artıyor...


yanlışsa lütfen düzeltin..
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Bir onceki mesajimda yazicaktim konuyu disina saptirdigim icin kusura bakmayin diye ama devam ettik madem devam edelim :)

Veri butunlguunun bozulmasinin sebebi (bence)

Konuya genel olarak bakarsak (yani sirf sizin yaptiginiz programin islemi/bölümi olarak degil):

Ornegin toplu personel kaydi yapacaksiniz. Bu personele bagli bir cok ayri tablo var yani FK olarak personelin PK 'sini tutan.

Personeli sildiginizde bagli tum tablolar eger cascade deletes yaptiysaniz silinecek, yapmadiysaniz hata vericek silemezsiniz diye. Herneyse cascade yaptiniz ve hepsi silindi, tekrar tekrar eklenip tüm iliskiler nasil kurulacak? Bir sekilde ekleniz bile bu soyledigim sirf veri butunlugu degil silme/ekleme islemi ayni zamanda performans kaybina da sebep olacak.

Performansta ise evet kaydete basildiginda hepsi silinip tekrar eklenicek cunku zaten kisi degistirme isleminde daha once yaptiklarini goruyor. Sirf ilk soyledigim neden bile bu yapiyi kullanmanin kendimce yanlis oldugunu dogrulasa bile, 2. olarak sadece degistirilen kayitlari degistirmek varken, butun kayitlari silip tekrar eklemeyi dogru bulamadim bir türlü. Bu dediklerimi size bir cevap olarak yazmadim sadece daha once ben de bunu dusundum sizin gibi yapmayi ama ondan sonra vazgectim. Vazgecme sebeplerim de bunlardi yani o yuzden tabi ki sizin tercihiniz ama ileride ciddi kayit anlami tasiyan toplu kayitlar yaparken dedigimi kullanmanizi oneririm. Tabi bastan dedigim gbi su dediklerimin de dogru olup olmadigini arastirarak :) Tekrardan kolay gelsin
Cevapla