FilemakerTurk, AYS Bilişim ve Beyaz Net tarafından desteklenmektedir.
Filemaker Danışmanınız
AYS Bilişim
Mehmet KAYA
 0532 231 07 27
 0216 318 55 80
 mkaya@aysbilisim.net
						

Seri Numarası

+1 oy
796 kez görüntülendi
Arkadaşlar sisteme otomatik seri numarası verdiriyorum ve bu seri numarası başka tablolarla ilişkili. Ben bir tabloda bir kaydı sildiğimde seri numarası da ilişkili olduğu tabloyladki seri numarası ile birlikte bir geri gelebilirmi.

FirmaID 151 iken KurumID de 151 ise ben FirmaID de bir kayıt sildiğimde KurumID deki numarada bir geri gelebilirmi.
3, Şubat, 2016 Database kategorisinde ihsan (15,230 puan) tarafından soruldu
3, Şubat, 2016 Mehmet KAYA tarafından yeniden kategorilendirildi
if ( KurumID > FirmaID ; GetNextSerialValue ( xxxx ) )
gibi bir çalışma yapılabilir tahminimce
ancak 151'i değil de 148'i silersen nasıl davranacak bilemedim.
kafa yormak lazım biraz.

Şemsi beyin dediği gibi yaptığınızda size 151i sildiğinizde ID olarak 151i vermez, 152yi verir. 151 kayıp olur.

2 Cevaplar

+1 oy
"Edit Relationship" penceresinde  alt bölümde "Delete related records....." kutucuğu işaretli olmalı...(kurum tarafında)...."diğer tablodaki ilişkili kayıt silindiğinde burada da silinsin" anlamında....
3, Şubat, 2016 Şemsi Saracoğlu (135,530 puan) tarafından cevaplandı
Teşekkürler Şemsi bey öğle siliyor ama seri no 151 iken sildikten sonra yani eklediğimde 152 oluyor tekrar 151 i oluşturmuyor.
Milyonlarca ID verebilirsiniz, 151 eksik olsa ne olur :)

Script yazarak GetNextSerialValue ile sıradaki numarayı değiştirebilirsiniz ama her karmaşıklık potansiyle hatadır. Gerçekten bu özelliğe ihtiyaç var mı diye düşünmek gerekir..
Ben de katılıyorum buna.
Hatta kayıt silmek yerine statü koyup, bunu iptal olarak işaretlemek en doğrusu.
Haklısınız belki ID değişmese olur ama seri numarası verdiğim bir fiş varsa ve numara atlamaması lazımsa o zaman gerekli.
Önce kayıp olan seri noyu bulduktan sonra onu tekrar atayan bir script denenebilir ancak anladığım kadarı ile bir kaydı silerken o kayda ait verilerden bir kısmının silinmesini istemiyorsunuz(fiş vs) o bölümü farklı bir tablo içine alabilirsiniz.
Yapacaginiz Self relation uzerinden yeni kayitlarinizi AutoEnter olarak FirmaID icerigini  Max ( Firma_FIRMASELF::FirmaID ) + 1 yaptirarak her zaman en son gecerli ID numarasi esas alinip bir artirilacaktir.

FIRMASELF tablosu Firma tabolsu ile kendisiyle iliskilendirilmis hali. Iliskilendirmek icin bool1 = bool1 olarak yapabilirsiniz. burda bool1 alaninin icerigi "1" olarak kullandim ben.

Benim faturalarimda kullandigim bir yontem bu.
0 oy
FirmaID nin serial Number özeliğini kaldırın yeni kayıt butonuna set flied (FirmaID ; get(foundcount)+1) eklerseniz   151. Kaydı silsenizde yeni kayıt 151 olarak FirmaID ye set edilecektir.

Show all Records

New Record Request

set flied (FirmaID ; get(foundcount)+1)
3, Şubat, 2016 Mehmet KAYA (166,370 puan) tarafından cevaplandı
aradan kayıt silinirse (147) bu sefer de çift kayıt sorunu çıkabilir ama.
Arada eksik rakamlari bulmak kolay bir is degil. Bence bu yur seylerbiraz uc seyler yapana kadar bayagi ter dokmek gerekir.
Cift kayitlar ile karsilasmamak icin en iyi yontem self relation ve max ( Selfrelation::FirmaID  ) + 1 Bu sekilde her zaman en yuksek ID numarasi alinip 1 eklenecektir.
@karizmatikalem katılıyorum ben de. yalnızca kayıt sayısı artıkça keyfe keder bir yavaşlık olabilir. her gün giriş yapılıyorsa self relation'da (tatil vs. gibi durumları da düşünüp) sadece son 10 günü getir denilebilir.
Ne kadar bir kayittan bahsediyoruz yavaslamanin soz konusu olabilmesi icin?
...