Öneri bekliyorum.. En büyük kayıt numarası verdirme...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Öneri bekliyorum.. En büyük kayıt numarası verdirme...
Şimdi sorun şöyle başladı.
7 haneli bir no var. önce dedilerki 3. hanedeki harfe göre sondaki üç rakam kaldığı yerden yeni no verecek. bende basit kaçtım bir tabloda verdim.. o harfe göre bir üstünü verdirdim oldu bitti. 3 gün geçti dedilerki. 2. hanede ayraç. oda 6 değer alabilir. dolayısı ile 6*8 =40 tane değişik umara grubunu takip etmem gerekti. oda tamam dedik ve tabloya field açtım oldu. şimdi son gol geldi. 1. hanede ayraçtır dediler. oda 8 ayrı değer alabildiğine göre takip edilecek numara türünü tutmak için yaklaşık (8*8)*6 fielde ihtiyacım var.
Şimdi dödün olması gereken çözüme. Bunu select MAX ile yapabilmek istiyorum. Aklıma gelen şu. ilk üç haneyi ayrı tutsam sonraki üç haneyi ise integer yapsam.
İlk üç hane "ABC" field ayrac olsun... Select MAX from tabloadi where ayrac='ABC' diye versem olurmu.
Siz olsanız ne yapardınız. Alternatif önerileriniz nelerdir.
Bu aslında basit gibi görünen ama önemli bir konu bence.
7 haneli bir no var. önce dedilerki 3. hanedeki harfe göre sondaki üç rakam kaldığı yerden yeni no verecek. bende basit kaçtım bir tabloda verdim.. o harfe göre bir üstünü verdirdim oldu bitti. 3 gün geçti dedilerki. 2. hanede ayraç. oda 6 değer alabilir. dolayısı ile 6*8 =40 tane değişik umara grubunu takip etmem gerekti. oda tamam dedik ve tabloya field açtım oldu. şimdi son gol geldi. 1. hanede ayraçtır dediler. oda 8 ayrı değer alabildiğine göre takip edilecek numara türünü tutmak için yaklaşık (8*8)*6 fielde ihtiyacım var.
Şimdi dödün olması gereken çözüme. Bunu select MAX ile yapabilmek istiyorum. Aklıma gelen şu. ilk üç haneyi ayrı tutsam sonraki üç haneyi ise integer yapsam.
İlk üç hane "ABC" field ayrac olsun... Select MAX from tabloadi where ayrac='ABC' diye versem olurmu.
Siz olsanız ne yapardınız. Alternatif önerileriniz nelerdir.
Bu aslında basit gibi görünen ama önemli bir konu bence.
Selamlar,
Forum kuralları pek okunmamış anladığım kadarıyla, okunduysa çok da dikkate alınmamış bir havası var yazdıklarınızın.
Lütfen sorunuzu sorarken, herkesin sizin bildiklerinizi bilmediğini düşünün ve örneklerle tek tek açıklayarak sorun. Bu şekilde sorarsanız, insanlar girer sorunuzu okur ve çıkarlar (yanıt vermezler).
Yanıt almak için lütfen önce soru sormasını bilelim. Aksi halde yanıtsız kalacaktır.
Bence sorunuzu bir daha düşünün, örnekler oluşturun ve öyle adım adım sorun.
Kolay Gelsin
Forum kuralları pek okunmamış anladığım kadarıyla, okunduysa çok da dikkate alınmamış bir havası var yazdıklarınızın.
Lütfen sorunuzu sorarken, herkesin sizin bildiklerinizi bilmediğini düşünün ve örneklerle tek tek açıklayarak sorun. Bu şekilde sorarsanız, insanlar girer sorunuzu okur ve çıkarlar (yanıt vermezler).
Yanıt almak için lütfen önce soru sormasını bilelim. Aksi halde yanıtsız kalacaktır.
Bence sorunuzu bir daha düşünün, örnekler oluşturun ve öyle adım adım sorun.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
forum Kuralları
Selamlar...Kuri_YJ yazdı:Selamlar,
Forum kuralları pek okunmamış anladığım kadarıyla, okunduysa çok da dikkate alınmamış bir havası var yazdıklarınızın.
Lütfen sorunuzu sorarken, herkesin sizin bildiklerinizi bilmediğini düşünün ve örneklerle tek tek açıklayarak sorun. Bu şekilde sorarsanız, insanlar girer sorunuzu okur ve çıkarlar (yanıt vermezler).
Yanıt almak için lütfen önce soru sormasını bilelim. Aksi halde yanıtsız kalacaktır.
Bence sorunuzu bir daha düşünün, örnekler oluşturun ve öyle adım adım sorun.
Kolay Gelsin
1. Mesajım da warez paylaşım var mı ?
2. Mesajım yanlış grubamı sorulmuş ?
3. Büyük harflemi yazılmış ?
4. Birden fazla grubamı sorulmuş ?
5. Soru yeterince açıkmı değil.
Şahsi fikrim ;
Sorum yeterince açık hangi aşamalardan geçtikten sonra bu noktaya geldiğimi yazmışım. Düşündüğüm örnek koda threadda var. Ve bu konuda daha önce kod yazmış kişilerin fikrini merak ediyorum.
Tekrar cevabınıza dönecek olursam size göre hangi sebep yada sebeplerden kuraldışılık sezdiniz beni aydınlatırsanız sevinirim...
Tekrar selamlar,
Genel olarak bir yere girerken veya bir markete bile girdiğinizde kibarca bir Selamlama yaparsınız, öyle değil mi?
Çıkarken de yardımları veya yapılabilecekler hususunda Teşekkür edersiniz değil mi? Genel adab kurallarını da Forum kurallarına eklememizi isterseniz onu da ekleriz ancak sanırım herkesin ve sizin de (en azından buraya soru sormayı başarabilecek kadar) eğitim almış olması, bu tür hususları da bildiğine delalet eder.
Neyse kişiselleştirmeden olayı özetleyelim, sorunuzu baştan özetleyerek örnekleyerek sorarsanız, yanıtlayacağız. Konu kaymasın lütfen.
Kolay Gelsin
Ukalalık olarak algılamayın sadece bir Moderatör olarak uyarıda bulundum. İşte yukarıda yazılı olana uyum göstermemişsiniz.* Soru sorarken konuyu mümkün olduğu kadar açık anlatın. Kullandığınız veritabanını, kullandığınız componentleri, hata alıyorsanız hata mesajını ve numarasını, delphi sürümünü yazmak iyi olacaktır. Bu bilgiler sorunu ve de çözümünü bulmakta son derece faydalı olmaktadır.
Genel olarak bir yere girerken veya bir markete bile girdiğinizde kibarca bir Selamlama yaparsınız, öyle değil mi?
Çıkarken de yardımları veya yapılabilecekler hususunda Teşekkür edersiniz değil mi? Genel adab kurallarını da Forum kurallarına eklememizi isterseniz onu da ekleriz ancak sanırım herkesin ve sizin de (en azından buraya soru sormayı başarabilecek kadar) eğitim almış olması, bu tür hususları da bildiğine delalet eder.
Neyse kişiselleştirmeden olayı özetleyelim, sorunuzu baştan özetleyerek örnekleyerek sorarsanız, yanıtlayacağız. Konu kaymasın lütfen.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Böyle şahsi şeyleri özel mesajdan atılsa kanımca iyi olacaktır. Yani arkadaşa söylemek istediğiniz sorduğu soruda yapılması gereken değişikliği ö.m. ile gönderseniz daha iyi olacağına inanıyorum.
Yani sorunuzu 1-2 saat içinde değiştirmezsniz simek zorundayız gibilerinden bir ö.m. atabilirdiniz. Çokta ifşa etmenin doğru olduğunu düşünmüyorum. şimşekleri üzerinize çeker antipati doğurur.
Maksat kalpler kırılmasın.
Saygılar...
Yani sorunuzu 1-2 saat içinde değiştirmezsniz simek zorundayız gibilerinden bir ö.m. atabilirdiniz. Çokta ifşa etmenin doğru olduğunu düşünmüyorum. şimşekleri üzerinize çeker antipati doğurur.
Maksat kalpler kırılmasın.
Saygılar...
Ben sorumu yanlış anlattım galiba
Üstadım ;Kuri_YJ yazdı:Tekrar selamlar,
Ukalalık olarak algılamayın sadece bir Moderatör olarak uyarıda bulundum. İşte yukarıda yazılı olana uyum göstermemişsiniz.* Soru sorarken konuyu mümkün olduğu kadar açık anlatın. Kullandığınız veritabanını, kullandığınız componentleri, hata alıyorsanız hata mesajını ve numarasını, delphi sürümünü yazmak iyi olacaktır. Bu bilgiler sorunu ve de çözümünü bulmakta son derece faydalı olmaktadır.
Genel olarak bir yere girerken veya bir markete bile girdiğinizde kibarca bir Selamlama yaparsınız, öyle değil mi?
Çıkarken de yardımları veya yapılabilecekler hususunda Teşekkür edersiniz değil mi? Genel adab kurallarını da Forum kurallarına eklememizi isterseniz onu da ekleriz ancak sanırım herkesin ve sizin de (en azından buraya soru sormayı başarabilecek kadar) eğitim almış olması, bu tür hususları da bildiğine delalet eder.
Neyse kişiselleştirmeden olayı özetleyelim, sorunuzu baştan özetleyerek örnekleyerek sorarsanız, yanıtlayacağız. Konu kaymasın lütfen.
Kolay Gelsin
Selamlama konusu vs ise sadece ona eyvallah ederiz; çünkü insan beşerdir şaşar... Ama Musonya üstadımızın dediği gibi bunun PM ile yapılması daha uygun olurdu diğer konuya gelince.
Bakınız;
Ben bir hata mesajından bahsetmiyorum. "undeclared identifier mesajı alıyorum ne yapmalıyım"... yada jvcl 3.20 kuruyordum insatller şu haa ile yarıda kesildi ne yapmam gibi bir şey değil konu.
Konu şu...
7 haneli bir no alanı var. Bunun ilk üç alanı ayraç, son 4 hanesi ise bu ayraçtaki bilgilere göre verilen otomatik artışlı numaralar... tek hane olsa table yapmak kolay ki yapmıştım. ama üç hane olunca varyasyon nerdeyse 400 adet field gerektiriyor.
O yüzden hiç ayrı bir tabloda son kalınan numaraları tutmadan select MAX ile bunu yapmak daha mantıklı demiş ve düşündüğümüzü yazmışız.
Soru ise basit O kodla olurmu. Yada siz olsanız ne yaparsınız.
Kişiselleştirmiyorum ama tekrarlıyorum soru gayet açık bence. Çünkü ortada bir bug yokki istediğiniz detayları vermek gereksin.
Saygılar
Selamlar,
Özel mesaj atmamaktaki maksadım, (takdir ederseniz ki, binlerce insanı Ö.M. ile uyarmak bizler için baya bir zaman alır) Örnek teşkil etmesi içindi, yoksa kişisel bir şey yok, arkadaşı tanımıyorum ve tanımadığım bir kişi hakkında kişisel bir yargıya da varamam.
Yanıta gelince,
Siz Yatay Düşünmüşsünüz, peki dikey düşünmeye ne dersiniz?
Yani bir başka tablo oluşturun,
Parametre, KalinanSayi alanları olan bir tablo.
Bu tabloya son no'yu işlersiniz.
Kaç kırlımlı kod lazım ise o kadar field açarsınız,
Örnek ;
2 Kırılım olsun
Yani XXX-YY-NNNN
XXX kodlar sinsilesi
YY'ler, XXX'lere bağlı kodlar sinsilesi,
NNNN ise XXX-YY'ye bağlı Kalınan numara.
Yani, Sayaçlarınızı kolonlara yıkmadan, tersine satırlara aktarırsanız ve numara alcağınız zaman oradan alırsanız işinizi rahatlıkla görebilirsiniz.
Bunların dışında MAX() fonksiyonu da kullanılabilir, WHERE Koşulunda LIKE aramalar yapmanız ve kurgulamanız gerekir, ama her seferinde MAX almaktansa (ve bu da bir problem daha çıkarırı) aşağı yukarı aynı anda MAX() çeken kullanıcılara aynı numarayı verme durumunuz olur. Ama bu Sayaç tablosunda (Kaydı LOCK edip Arttırıp, rakamı okursanız) böyle bir çakışma ihtimali de olmaz.
Kolay Gelsin
Özel mesaj atmamaktaki maksadım, (takdir ederseniz ki, binlerce insanı Ö.M. ile uyarmak bizler için baya bir zaman alır) Örnek teşkil etmesi içindi, yoksa kişisel bir şey yok, arkadaşı tanımıyorum ve tanımadığım bir kişi hakkında kişisel bir yargıya da varamam.
Yanıta gelince,
Siz Yatay Düşünmüşsünüz, peki dikey düşünmeye ne dersiniz?
Yani bir başka tablo oluşturun,
Parametre, KalinanSayi alanları olan bir tablo.
Bu tabloya son no'yu işlersiniz.
Kaç kırlımlı kod lazım ise o kadar field açarsınız,
Örnek ;
2 Kırılım olsun
Yani XXX-YY-NNNN
XXX kodlar sinsilesi
YY'ler, XXX'lere bağlı kodlar sinsilesi,
NNNN ise XXX-YY'ye bağlı Kalınan numara.
Kod: Tümünü seç
PRM1 Char(3)
PRM2 Char(2)
SAYAC INTEGER
Tablodaki değerler
PRM1 PRM2 SAYAC
---- ---- -----
ABC A1 00201
ABC A2 00045
ABC B1 00120
ABF A1 02002
ABF B2 00175
ABF D4 02568
BGD B2 00124
BGD B3 00087
BGD C4 00006
. . .
. . .
. . .
Bunların dışında MAX() fonksiyonu da kullanılabilir, WHERE Koşulunda LIKE aramalar yapmanız ve kurgulamanız gerekir, ama her seferinde MAX almaktansa (ve bu da bir problem daha çıkarırı) aşağı yukarı aynı anda MAX() çeken kullanıcılara aynı numarayı verme durumunuz olur. Ama bu Sayaç tablosunda (Kaydı LOCK edip Arttırıp, rakamı okursanız) böyle bir çakışma ihtimali de olmaz.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
LIKE komutu ile yapabilirsin..
(ezbere yazıyorum hata olabilir. maksat fikir verebilmek)
select * from tablo where "ABC*' LIKE field order by field
diyerek ABC ayracı ile başlayan kayıtları listeler ve son gelen kayıt nosundan bir arttıraraka yeni bir no verebilirisiniz. Yani burda verdiğim select sadece fikir olsun diyeydi. Her ayrac için ayrı bir tablo falan yapmaya gerek olduğunu sanmıyorum..
Saygılar...
(ezbere yazıyorum hata olabilir. maksat fikir verebilmek)
select * from tablo where "ABC*' LIKE field order by field
diyerek ABC ayracı ile başlayan kayıtları listeler ve son gelen kayıt nosundan bir arttıraraka yeni bir no verebilirisiniz. Yani burda verdiğim select sadece fikir olsun diyeydi. Her ayrac için ayrı bir tablo falan yapmaya gerek olduğunu sanmıyorum..
Saygılar...
Öneri güzelden öte.
Evet olay budur.
Ama program tek kullanıcılı olduğundan şu an için lck vs bir dert yok. Bunu ipucu köşesine alayım ama ; şu an için iki fielde bölüm MAX ile yapmak daha uygun... hem ilave tablodanda kurtuluruz.
Ama dikey çözüm baya iyi fikir. Bunu notlara alalım
Ama program tek kullanıcılı olduğundan şu an için lck vs bir dert yok. Bunu ipucu köşesine alayım ama ; şu an için iki fielde bölüm MAX ile yapmak daha uygun... hem ilave tablodanda kurtuluruz.
Ama dikey çözüm baya iyi fikir. Bunu notlara alalım
