Gruplu Artan Alan Oluşturma

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
apex06
Üye
Mesajlar: 58
Kayıt: 19 Nis 2012 12:21

Gruplu Artan Alan Oluşturma

Mesaj gönderen apex06 »

Arkadaşlar merhaba,

bir tabloda gruplu artan alan oluşturmak mümkün mü?
Elimde 4 kullanıcının girmesi gereken veriler var. Her girdikleri kayıt için otomatik numara verdiriyorum ve her kullanıcı girdiği kaydın 1'den başlayarak artması gerekiyor. Bunun için de 4 ayrı DB oluşturmak istemiyorum açıkçası.

Teşekkürler..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen mrmarman »

Kullanıcı giriş yaparken kimin giriş yaptığını bu tablodaki bir alana yazdırıyorusunuz değil mi ? İşte bunu kullanacaksınız. Before Post olayında (kaydet butonuna bastığında da diyebilirim) başka bir Query ile aşağıdaki gibi bir select yazıp elde edeceğiniz maksimum değere 1 eklemeniz kafi.

Kod: Tümünü seç

SELECT MAX(ArtanAlan) AS SonSayi FROM OrtakTablo WHERE KullaniciID = 1
veya

Kod: Tümünü seç

SELECT MAX(ArtanAlan) AS SonSayi FROM OrtakTablo WHERE Kullanici = 'ARMAN'
FieldByName('SonSayi').AsInteger değerin senin 1 nolu kullanıcı için veya diğer örnekteki 'ARMAN' kullanıcısı için verdiğin en son değeri yazar. Buna bir eklersen ve yeni kayda bunu yazarsan istediğin şekilde olur.

- Unutma ki, bu alanda kullanıcı sayın kadar aynı rakamdan değer göreceğinden ArtanAlan fieldin UNIQUE olmamalı. :idea:
Resim
Resim ....Resim
apex06
Üye
Mesajlar: 58
Kayıt: 19 Nis 2012 12:21

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen apex06 »

Teşekkür ederim Muharrem bey,

Verdiğiniz öneriyi kullanmak benimde aklıma geldi fakat bu işlemi trigger oluşturarak veritabanına yaptırmak mümkün mü?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen mrmarman »

Veritabanı değil, web sunucusundaki bir kaç satırlık kod ile mümkün olması lazım. Örneğin

Kod: Tümünü seç

<a href="sunucudakidosya.doc" download="gecicidosya.doc">indir</a>
şeklinde bir yapı size yeni ismiyle döndürür. Ancak sunucudakidosya.doc şeklinde statik bir yapı değil,
(1) Bir döngü ile bir klasördeki belli uzantılı dosyaların önce listelenmesi
(2) Sonra da bu döngüdeki istenen dosyanın sıra nosuna veya vereceğiniz ID'sine göre talep edip o zaman downloada başlamasını sağlamalısınız.

Veritabanında değil yazılım ayağında yapacağınız bir işlemdir.
Resim
Resim ....Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen vkamadan »

Merhaba ,
Kullandığınız veri tabanı MySQL ise aşadağıki gibi bir index ekleyerek artan alanın gruplu olarak yeniden başlayarak artmasını trigger vb bulaşmadan direk VT ye yıkabilirsiniz.

Kod: Tümünü seç

CREATE TABLE `evrakid` (
  `yer` int(10) NOT NULL,
  `evrakno` int(10) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`yer`,`evrakno`)
) ENGINE=MyISAM;
Yukarıdaki Örnekte, "yer" alanının alacağı her yeni değer için "evrakno" alanına tanımlı olan AUTO INCREMENT yeniden saymaya başlıyor.

kolay gelsin..
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen mrmarman »

@vkamadan

Bu bilgi benim için de yeni. Teşekkürler.
Resim
Resim ....Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen vkamadan »

@mrmarman ,
fakat sadece MyISAM tablo yapısı bunu destekliyor, InnoDB ve diğer tablo yapılarında yapı desteklenmiyor.
Bilginize.

İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
apex06
Üye
Mesajlar: 58
Kayıt: 19 Nis 2012 12:21

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen apex06 »

Merhaba,

MS SQL tarafında lazım :) ilk akla geleni kullanmak daha mantıklı şu aşamada. İlginiz için teşekkür ederim.
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen omurolmez »

Hem performans sağlamak hem de tüm vt lerde çalışabilen (elbetteki oradan oraya taşımayacağız ama ansi dışına çıkmamak için) kod elde edebilmek için, sadece trigger çözümünün önerilmesi gerekmiyor muydu arkadaşlar ?
Ömür Ölmez
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Gruplu Artan Alan Oluşturma

Mesaj gönderen mrmarman »

omurolmez yazdı:Hem performans sağlamak hem de tüm vt lerde çalışabilen (elbetteki oradan oraya taşımayacağız ama ansi dışına çıkmamak için) kod elde edebilmek için, sadece trigger çözümünün önerilmesi gerekmiyor muydu arkadaşlar ?
Merhaba @omurolmez aşağıdaki mesajım için söylüyorsun sanırım. Şimdi farkettim, sen de okuduğunda göreceksin ki, başka başlıktaki bir sorunun cevabını yanlışlıkla buraya yazmışım. :lol: Bu konu gruplu artan alanlar iken verdiğim cevap download edilecek dosyanın özel yeniden isimlendirilmiş haliyle download edilmesi üzerine idi... :D

- Trigger tabii ki akıllı veritabanlarında, direkt veritabanından sunulan en ideal bir çözümdür. :idea:
mrmarman yazdı:Veritabanı değil, web sunucusundaki bir kaç satırlık kod ile mümkün olması lazım. Örneğin

Kod: Tümünü seç

<a href="sunucudakidosya.doc" download="gecicidosya.doc">indir</a>
şeklinde bir yapı size yeni ismiyle döndürür. Ancak sunucudakidosya.doc şeklinde statik bir yapı değil,
(1) Bir döngü ile bir klasördeki belli uzantılı dosyaların önce listelenmesi
(2) Sonra da bu döngüdeki istenen dosyanın sıra nosuna veya vereceğiniz ID'sine göre talep edip o zaman downloada başlamasını sağlamalısınız.

Veritabanında değil yazılım ayağında yapacağınız bir işlemdir.
Resim
Resim ....Resim
Cevapla