AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Benim bildiğim kadarı ile Olmazsa olmaz değildir.
Otomatik Index daha hızlı raporlamayı sağlar.
işlemlerde PK olduğu için daha basit where kullanılabilir.
Otomatik Index daha hızlı raporlamayı sağlar.
işlemlerde PK olduğu için daha basit where kullanılabilir.
Bir kelimenin anlamını öğretsen bile yeter..



Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Çok teşekkür ederim hocam peki başka görüşü olan arkadaş var mı yazarsanız sevinirim çünkü ben bugune kadarki hiçbir yazılımımda autoinc alan kullanmadım ve bu konu oldukca önemli
UWESIS CORPORATION
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
evet katılıyorum oldukça önemli olduğuna
aslangeri hocam dediklerinizi uyguladım fakat hala aynı sorun devam etmekte çıldırmak üzereyim sanırım bu gidişle tekrar paradoxa dönecem ama dönmekte istemiyorum okumadığım konu kalmadı ne yaptıysam olmadı bi türlü anlam veremedim :S
CiTiZEN arkadaşım senin soruna gelince autoinc alan otomatik artırımlar yaparsın sayısal olarak yani şöyle söliim mesela yaptın programda müşteri numarası verirsin ilişkilendirmede kullanmak için sorgularda kolayca kayda ulaşmak için pk olduğundan aynı numaraya sahip başka bi kayıt olmaz 1,2,3... diye ilerler her kayıtta 1 yada isteğine göre kaçar kaçar artırmak istiosan autoinc alanla yapabilirsin olmazsa olmaz deildir yani

CiTiZEN arkadaşım senin soruna gelince autoinc alan otomatik artırımlar yaparsın sayısal olarak yani şöyle söliim mesela yaptın programda müşteri numarası verirsin ilişkilendirmede kullanmak için sorgularda kolayca kayda ulaşmak için pk olduğundan aynı numaraya sahip başka bi kayıt olmaz 1,2,3... diye ilerler her kayıtta 1 yada isteğine göre kaçar kaçar artırmak istiosan autoinc alanla yapabilirsin olmazsa olmaz deildir yani
- Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Bir veritabanına satır satır kayıt girerken, bu kayıtlara hızlı ulaşmak için bir tane ana indeks kullanman gerekir Ana indeksinten sadece bir tane olmalıdır. Mesela sirano diye bir integer indeksin varsa, iki tane 5 sirano lu kayıt girişine veritabanı izin vermez. Bu sayede sen kayıtlarının iki defa girilmiş olmasını engellersin. Autoinc, kendiliginden artan bir degerdir, amacı ise kullanıcının her kayıt eklediginde bir numara verilmesidir. Kullanıcı bu numarayi vermez, veritabanı kendiliginden verir. Böylelikle kullanıcı hangi numarada kaldıgını düşünmez. Bir sonraki girişte bu numara veritabani tarafından tekrar artirilacaktir. Aksi halde ya kullanıcının son rakamı hatırlayıp, elle vermesi veya programcının veritabanına bakıp, son numarayı getirmesi gerekir. Programcının veya kullanıcının son numarayı getirmesi de tek başına yeterli olmaz, çünkü aynı anda 2-3 kişi kayıt girerse, bu kişiler aynı numarayı kullanabilirler. İşte autoinc da bu şekilde ayni numarayı kayıtlara vermez. Sayısız kullanıcı güvenle kayıt girişi yapabilir, bu hem kullanıcı hem de programcı için rahatlıktır.
Firebirdde autoinc generatorler üzerinden verilir, triggerlarla da kayıt insert edilince u generatorlerden gelen rakam, kayda eklenir.
Avantajları şunlardır:
Firebirdde autoinc generatorler üzerinden verilir, triggerlarla da kayıt insert edilince u generatorlerden gelen rakam, kayda eklenir.
Avantajları şunlardır:
- Autoinc (kendiliginden artan degerler) kaydın bir benzerinin (unique) olmamasını sağlar.
Kullanıcının ve programcının üzerinden yük alırlar.
- Genelde autoinc tanımlanan alana kullanıcı müdahale edemez. Örnegin 15 sıranolu kayıt silinince bu 15 rakamı başka bir kayıt için kullanılmaz, bazı kullanıcılar bunu sorun yapabiliyor.
Sadece integer alanlarda kullanılabilirler.
En son emin_as tarafından 26 Ara 2008 07:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
saolun hocam olsada iyi olur gibi sanki en kısa sürede sorunuzunuzun çözülmesi dileğimle kolay gelsin.
UWESIS CORPORATION
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
s.a.
kolay gelsin.
aynı sorun derkenshochan yazdı: aslangeri hocam dediklerinizi uyguladım fakat hala aynı sorun devam etmekte...
mesajından bahsediyorsanız ben size hangi yolla çözeceğinizi gösterdim. setfocus yapmak istediğiniz bileşene focus olamıyor bileşen seçilemez bir durumda (ya visible ı false dır. ya önünde başka bir pencere vardır. ya disable olmuştur vb.) hangi setfocus dan dolayı yaptığını bilemem. prosedürün başına "F5" ile breakpoint koy. sonra adım adım ("F8") ile kodları satır satır çalıştır. hangi satırda hata veriyorsa demekki o satırla ilgili yapılan işlemlerde bir hata var. ordaki kodları kontrol edeceksin. eğer hata veren satır başka bir prosedür ve ya fonksiyon ise "F7" ile o prosedürün içine girebilirsin.Cannot focus a disabled or invisible window
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Evet biliyorum hocam yardımlarınız için tşk ederim ama ne yaptıysam olmadı forumda okumadığım konu kalmadı sizin dediğinizide yaptım yok olmuyo. Tamam profesyonel değilizde bi autoinc içinde bukadar uğraşılmazki aralık 23 te açmışım konuyu bugün 27si 4 gündür bi hatayı çözemedim paradox kullanıyordum daha önce ve paradoxun eksik yanları olmasına rağmen hiç böyle bi sorunum olmuyordu tamm firebird ii güzel ama bi artan alan için bukadar zorun olacaksa kimse yanlış anlamasın hata firebirdde delphide interbasede demiyorum elbette bende ama ben paradoxa geri dönerim 4 gündür yani bu hatayı aldığımdan beri programda bi ilerleme kaydedemedim öyle duruyo paradoxla yapıyo olsaydım ne trigger ne sp hiç biriyle uğraşmıyacaktım tablo oluştururken autoinc olacak alana arkadaş sen artan alansın dediğimde bitiyodu hiç bi şekilde trigger sp v.b bişey yapmıyordum benden pas
comeback paradox

comeback paradox


- Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Hata mesajın Cannot focus a disabled or invisible window ise bunun firebird veya autoinc ile uzaktan yakından ilgisi yok. Hata vcl yani görsel bileşenlerle ilgili, henuz görünür yapılmamış bir bileşene setfocus ile focus aktarmaya çalışıyorsun. Bunu sen kodlamış olabilirsin veya kullandıgın rbir component yapıyor olabilir. Yazdıgın kodların içinde setfocus geçiyorsa, basitçe bir if control u ekleyerek, sorunu aşabilirsin.
Eger sorunlu bir component kullanıyorsan, ondan vazgeçip, başka bir component kullanabilirsin.
Paradox tek kullanıcılı kullanımlarda rahat ve hızlı görünür, ama çok sayıda kayıt girince ve çok kullanıcılı yapmaya çalışınca çok baş agrıtır. Tavsiyem hatanın oldugu bölümü bulup ve düzeltmeye çalış, programcılıgın %20 si kod yazma, %80 ise hata ayıklamadır.
Kod: Tümünü seç
if visible then
dbEdit1.SetFocus;
Paradox tek kullanıcılı kullanımlarda rahat ve hızlı görünür, ama çok sayıda kayıt girince ve çok kullanıcılı yapmaya çalışınca çok baş agrıtır. Tavsiyem hatanın oldugu bölümü bulup ve düzeltmeye çalış, programcılıgın %20 si kod yazma, %80 ise hata ayıklamadır.
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
@shochan; sondurum nedir.
istenilenler
1.Amac: Hangi amaca hizmet ediyorsun. Yapmak istediğin şey tam olarak nedir.
2.Yapılanlar: Neler karıştırdın bakalım. Amac ının elde etmek için neler yaptın. veritabanında generator ve triger oluşturuldumu? hangi bileşeni kullanıyorsun(ibtable,ibquery,ibdataset). Kodlar.
3.Sonuç: Elimizde ne var. Hata veren bir program mı? yoksa istediğimiz işi yapmayan bir program mı?
eğer hata veriyorsa verdiği hata mesajı nedir. istediğimiz yapmıyorsa peki ne yapıyor bu meret.
Güzelcene bi açıklayıverirsen bizde yardımcı olmaya çalışalım.
birde anlattıklarımızı yeni oluşturacağın bir veri tabanı ve yeni bir proje üzerinde den dene.
kolay gelsin.
istenilenler
1.Amac: Hangi amaca hizmet ediyorsun. Yapmak istediğin şey tam olarak nedir.
2.Yapılanlar: Neler karıştırdın bakalım. Amac ının elde etmek için neler yaptın. veritabanında generator ve triger oluşturuldumu? hangi bileşeni kullanıyorsun(ibtable,ibquery,ibdataset). Kodlar.
3.Sonuç: Elimizde ne var. Hata veren bir program mı? yoksa istediğimiz işi yapmayan bir program mı?
eğer hata veriyorsa verdiği hata mesajı nedir. istediğimiz yapmıyorsa peki ne yapıyor bu meret.
Güzelcene bi açıklayıverirsen bizde yardımcı olmaya çalışalım.
birde anlattıklarımızı yeni oluşturacağın bir veri tabanı ve yeni bir proje üzerinde den dene.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Hocam Allah sizden razı olsun gerçekten ilgi ve alakanıza minnettarım sorularınızı tek tek cevaplayım.
1- Amacım bir otomasyon programı yapmak bilgisaar sektöründe çalışıyorum hem iş yerinde kullanıcam hemde ufak çağlı işletmeler isterse vermeyi düşünüyorum.
2- Veritabanımda generator ve trigger var sitede çok güzel açıklamalar buldum o konularda anlatılanların hepsini uyguladım ve CARI tablomdaki MUSTERI_NO alanım normal bi şekilde işlevini yapıp her yeni kayıtta 1 artıo burasıyla ilgili bi sorunum yok. Kullandığım bileşen IBTable.
3- Sonuç olarak ikiside var yani hem hata veriyo bu nedenlede dediğim işi yapmıyor. verdiği hata ise şu:
daha sonra programı hiç kapatmadan yada kapatıp açıyım hiç fark etmiyor caha önce seçtiğim cariyi tekrar seçtiğimde yukardaki hatayı alıyorum yani aynı cariyi seçip 2. kez servis kaydı girmeme izin vermiyo ve dediğiniz gibi aynı şey benimde aklıma geldi yeni bi vt ve projede denedim yine aynı oluo neden oluyo neyi eksik yada yanlış yapıyorum anlamadım.
Kullandığım kodlar:
yeni servis kaydına tıkladığımda form4 açılması için
Form4.Show;
Carli listesinden cariyi seçip tamam butonunda kullandığım kod (burda kullandığım setfocusla alakalı değil hata onu belirteyim)
form2.Show;
form4.Close;
form2.IBTable2.Append;
form2.takvim.SetFocus;
form2.durum.ItemIndex:=0;
Servis kayıt formunda kaydet butonunda kullandığım kod:
ibtable2.Post;
form2.close;
form7.Show;
Hocam biraz armut piş ağzıma düş gibi olacak ama eğer isterseniz programı komple göndereyim bakın bi yoksa önemli değil.
Tekrardan ilgi ve alakanız için tşk ederim
1- Amacım bir otomasyon programı yapmak bilgisaar sektöründe çalışıyorum hem iş yerinde kullanıcam hemde ufak çağlı işletmeler isterse vermeyi düşünüyorum.
2- Veritabanımda generator ve trigger var sitede çok güzel açıklamalar buldum o konularda anlatılanların hepsini uyguladım ve CARI tablomdaki MUSTERI_NO alanım normal bi şekilde işlevini yapıp her yeni kayıtta 1 artıo burasıyla ilgili bi sorunum yok. Kullandığım bileşen IBTable.
3- Sonuç olarak ikiside var yani hem hata veriyo bu nedenlede dediğim işi yapmıyor. verdiği hata ise şu:
Bu hatayı şu şekilde alıyorum bikaçtane cari kaydettim bi sorun yok sonra servis kayıta tıklıyorum form4 açılıor cari listesinin olduğu form önce cariyi seçip tamam butonuna bastığımda servis kaydı formum açılıyo burdada bi sorun yok ama servis kaydı formunda gerekli alanları doldurup kaydet diyorum kaydediyo ama servis kayıtlarının listelendiği dbgridde o kayıt görünmüyor.IBexpertten servis tabloma bakıyorum o kayıt orda var ama programda görünmüyo---------------------------
Debugger Exception Notification
---------------------------
Project SoS.exe raised exception class EInvalidOperation with message 'Cannot focus a disabled or invisible window'. Process stopped. Use Step or Run to continue.
---------------------------
daha sonra programı hiç kapatmadan yada kapatıp açıyım hiç fark etmiyor caha önce seçtiğim cariyi tekrar seçtiğimde yukardaki hatayı alıyorum yani aynı cariyi seçip 2. kez servis kaydı girmeme izin vermiyo ve dediğiniz gibi aynı şey benimde aklıma geldi yeni bi vt ve projede denedim yine aynı oluo neden oluyo neyi eksik yada yanlış yapıyorum anlamadım.
Kullandığım kodlar:
yeni servis kaydına tıkladığımda form4 açılması için
Form4.Show;
Carli listesinden cariyi seçip tamam butonunda kullandığım kod (burda kullandığım setfocusla alakalı değil hata onu belirteyim)
form2.Show;
form4.Close;
form2.IBTable2.Append;
form2.takvim.SetFocus;
form2.durum.ItemIndex:=0;
Servis kayıt formunda kaydet butonunda kullandığım kod:
ibtable2.Post;
form2.close;
form7.Show;
Hocam biraz armut piş ağzıma düş gibi olacak ama eğer isterseniz programı komple göndereyim bakın bi yoksa önemli değil.
Tekrardan ilgi ve alakanız için tşk ederim
- Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
s.a.
kodları yazarken code tagını kullanırsanız daha okunaklı olur.
anladığım kadarı ile birbirini çağıran formlar kullanıyorsunuz. hata verdiğinde çağırdığınız form daha önce açılmış ve arkada kalmış. modal olarak çağırdığınız form varsa modal formu kapatmadan altında kalan formları tekrar açamazsınız.
listede son eklediğiniz kaydın görünmesi için listeyi kapatıp açmanız gerekmekte sanırım. transaction ın ayarlarının da read commited olmasına dikkat edin.
kolay gelsin.
kodları yazarken code tagını kullanırsanız daha okunaklı olur.
anladığım kadarı ile birbirini çağıran formlar kullanıyorsunuz. hata verdiğinde çağırdığınız form daha önce açılmış ve arkada kalmış. modal olarak çağırdığınız form varsa modal formu kapatmadan altında kalan formları tekrar açamazsınız.
listede son eklediğiniz kaydın görünmesi için listeyi kapatıp açmanız gerekmekte sanırım. transaction ın ayarlarının da read commited olmasına dikkat edin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Pardon hocam kod tagına dikkat etmemiştim anlattıklarınıza gelince mesela bir formu çağırırken o formun arkada açık kalması gibi bir durum olmaması lazım çünkü o form ile işim bittiğinde close yapıyorum eğer dediğiniz buysaki ben onu anladım birde programı kapatıp açtığımda bile formun arkada açık kalması gibi bir durum söz konusu ise dediğinizde haklısınız ama programı kapatıp açtığımdada aynı hatayı veriyo
demişiniz ona dikkat ettim hocam read commited işaretli ama işte dediğim gibi biyerde hata yapıyorum ama nerde _? Şunu söylemek istiyorum bence hata büyük ihtimal ondan kaynaklanıyo ama onuda denedim olmamıştı birde size sorayım Fatih hocamın bu autoinc ve triggerları anlattığı bir konuda en altta şunu eklemiş
Saygılarımla.
transaction ın ayarlarının da read commited olmasına dikkat edin.
demişiniz ona dikkat ettim hocam read commited işaretli ama işte dediğim gibi biyerde hata yapıyorum ama nerde _? Şunu söylemek istiyorum bence hata büyük ihtimal ondan kaynaklanıyo ama onuda denedim olmamıştı birde size sorayım Fatih hocamın bu autoinc ve triggerları anlattığı bir konuda en altta şunu eklemiş
detail tabloya kayıt girmeden önce master tabloyu kapatıp açın bu nasıl olacak onu tam anlayamadım denedim olmamıştı. Birde şöyle bi durum söz konusu diyelimki cariyi seçip servis kayıt formunu açtım gerekli alanları doldurdum kaydet butonunda master tabloyu kapatıp açarsam hata veriyo cariyi seçip tamm butonuna bastığımda kapatıp açarsamda tablodaki ilk kayda konumlanıyo. Yani burda Fatih hocam ne demek istedi ya ben yanlış anladım yada doğru anladım ama uygulamam yanlış bu konuda aydınlatırsanız sevinirim. Sanırım sorunda bundan dolayı oluyo.Not : Trigger Kullandıysanız Otomatik artan alan Not Null olarak ayarlanmışsa ( Not Null olduğuna eminim çünkü otomatik artan alanlar Primary key için kullanılır. ) Delphi'den IBTABLE,IBQUERY,IBDATASET datasetiniz her neyse Çift tıklayıp Fields Editörden Otomatik artan alanınızı seçip Object inspector'dan Required özelliğini false yapın. aksi taktirde tek kayıt işleyemezsiniz tabloya. Ayrıca Master Detail Tablolarda Detail Tabloya Kayıt Girmeden önce Master Tabloyu Kapatıp açın
Saygılarımla.
- Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Tablo açıp, kapama farklı transactionlar kullanıyorsan gereklidir. Onun dışında transactionlar ortaksa, detail table a bilgi girmeden önce master table edit ve insert durumunda ise post etmen gereklidir. Detail table in before insert kısmına
yazman yeterlidir.
Bu arada kullanmak istedigin formları sen mi create ediyorsun, yoksa autocreate mi kullanıyorsun. Eger bir formu kapattıysan, tekrar göstermen sorun olabilir. Ya elle sen create et veya close yerine hide kullan. Dogru yaklaşım formları gerektiginde oluşturup, gerekmediginde free ile hafızadan tamamen silmektir.
Bir şeye daha dikkat et, form2 gibi delphi adlandırmaları yerine kendin isim ver. Programın daha okunaklı olur. Form2 yerine diyelim carikayit olsun. Carikayit.Show komutu daha okunaklıdır.
Kod: Tümünü seç
if mastertable.state in [dsEdit,dsInsert] then
mastertable.post;
Bu arada kullanmak istedigin formları sen mi create ediyorsun, yoksa autocreate mi kullanıyorsun. Eger bir formu kapattıysan, tekrar göstermen sorun olabilir. Ya elle sen create et veya close yerine hide kullan. Dogru yaklaşım formları gerektiginde oluşturup, gerekmediginde free ile hafızadan tamamen silmektir.
Kod: Tümünü seç
with TForm2.Create(Self) do
try
ShowModal;
finally
Free;
end;
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
s.a.
@shochan; hangi bileşenleri kullanıyorsun (IBTable, IBDataset, IBQuery) birini seç.
ona göre devam edeceğim.
hata verdiği düğmedeki prosedürde beginin altındaki satıra gel "F5" ile break point koy. PRogramı çalıştır. breakpoint koyduğun yere gelince program duracaktır. orda "F8" ile satır satır çalıştrı. hata verdiği satırı gör. sonra o prosedürü ve hata verdiği satırı hata mesajı ile buraya yaz.
Bu setfocus hatası içindi.
Anladığım kadarı ile diğer bir problemin tablodaki ıd alanının değerini görmek le alakalı.
Bunun için yukardaki soruya vereceğin cevap önemli.
kolay gelsin.
@shochan; hangi bileşenleri kullanıyorsun (IBTable, IBDataset, IBQuery) birini seç.
ona göre devam edeceğim.
hata verdiği düğmedeki prosedürde beginin altındaki satıra gel "F5" ile break point koy. PRogramı çalıştır. breakpoint koyduğun yere gelince program duracaktır. orda "F8" ile satır satır çalıştrı. hata verdiği satırı gör. sonra o prosedürü ve hata verdiği satırı hata mesajı ile buraya yaz.
Bu setfocus hatası içindi.
Anladığım kadarı ile diğer bir problemin tablodaki ıd alanının değerini görmek le alakalı.
Bunun için yukardaki soruya vereceğin cevap önemli.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: AutoInc Alan ve Programı İstediğimiz Dizinde Çalıştırma
Servis tablosunda ki Müşteri No alanı PK olmuş sanırım.
FK olmalı.
FK olmalı.
Bir kelimenin anlamını öğretsen bile yeter..


