Merhaba Delph 7 ve Firebird 1.5 ile hazırladığım proje için yıll+ay+xxxx şeklinde otomatik değişen bir sipariş numarası ürettirmem lazım. Otomatik sayı üretebiliyorum ancak bunu yapamadım. Firebird den buu yapmanın bir yolu var mı? Yardımcı olan arkadaşlara teşekkürler.
Örenek sipariş no
2007010001 ilk sipariş
2007010002 sonraki .....
Firebird ile sipariş numarası oluşturma
Firebird ile sipariş numarası oluşturma
Ahmet DENİZ
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
s.a.
Deneme şansım olmadı ama şu koda bir gözatın isterseniz
function Sayi_Uret:String;
var
Sayi,
Maxsip:String;
Begin
Sayi:=FormatDateTime('yyyymm',Date)+'0001'; //2007010001
Sorgu.sql.clear;
Sorgu.sql.text:='Select Max(Alan) as SipNo from Table';
Sorgu.sql.open;
Maxsip:=Sorgu.FieldByName('SipNo').Asstring;
If (Maxsip='') or (Sorgu.Recordcount=0) Then Maxsip:=Sayi;
Result:=Maxsip;
end;
Deneme şansım olmadı ama şu koda bir gözatın isterseniz
function Sayi_Uret:String;
var
Sayi,
Maxsip:String;
Begin
Sayi:=FormatDateTime('yyyymm',Date)+'0001'; //2007010001
Sorgu.sql.clear;
Sorgu.sql.text:='Select Max(Alan) as SipNo from Table';
Sorgu.sql.open;
Maxsip:=Sorgu.FieldByName('SipNo').Asstring;
If (Maxsip='') or (Sorgu.Recordcount=0) Then Maxsip:=Sayi;
Result:=Maxsip;
end;
Re: Firebird ile sipariş numarası oluşturma
S.A.AhmetNuri yazdı:Merhaba Delph 7 ve Firebird 1.5 ile hazırladığım proje için yıll+ay+xxxx şeklinde otomatik değişen bir sipariş numarası ürettirmem lazım. Otomatik sayı üretebiliyorum ancak bunu yapamadım. Firebird den buu yapmanın bir yolu var mı? Yardımcı olan arkadaşlara teşekkürler.
Örenek sipariş no
2007010001 ilk sipariş
2007010002 sonraki .....
böyle bir işlemi yapmak için bir sayac tablosu ve bir sp hazırladım. Bir deneyin isterseniz.
Kod: Tümünü seç
CREATE TABLE TMPSAYAC
(
SAYI INT NOT NULL,
PRIMARY KEY (SAYI)
)
Kod: Tümünü seç
CREATE PROCEDURE SAYACVER (YIL VARCHAR(4),AY VARCHAR(2)) RETURNS (VSAYI INT)
AS
declare variable V1 VARCHAR(10);
declare variable V2 VARCHAR(10);
declare variable A INT;
declare variable B INT;
BEGIN
V1=YIL || AY || '0000';
V2=YIL || AY || '9999';
A=CAST (V1 AS INT);
B=CAST (V2 AS INT);
if (EXISTS(SELECT * FROM TMPSAYAC WHERE SAYI between :A AND :B)) then
BEGIN
SELECT MAX(SAYI) FROM TMPSAYAC WHERE SAYI between :A AND :B INTO :VSAYI;
VSAYI=:VSAYI+1;
if (:VSAYI>:B) then
BEGIN
VSAYI=NULL;
SUSPEND;
EXIT;
END
UPDATE TMPSAYAC SET SAYI=:VSAYI WHERE SAYI between :A AND :B;
END ELSE
BEGIN
VSAYI=:A+1;
INSERT INTO TMPSAYAC (SAYI) VALUES (:VSAYI);
END
SUSPEND;
END
Kod: Tümünü seç
SELECT * FROM SAYACVER('2007','01')
SELECT * FROM SAYACVER('2007','09')