Merhabalar, delphi dostları, istemciler fiş no çekerken fiş no çakışmalarını yaşamamak için sunucu bazlı çalışan bir sayaç geliştirdim,
[code]
CREATE TRIGGER BI_T_KASA_HAREKET_SN FOR T_KASA_HAREKET
ACTIVE BEFORE
INSERT
POSITION 0
AS
DECLARE VARIABLE D_FIS_NO VARCHAR(20);
DECLARE VARIABLE D_M_FIS_NO VARCHAR(20);
DECLARE VARIABLE D_TOPLA VARCHAR(20);
BEGIN
IF (NEW.SN IS NULL) THEN
NEW.SN = GEN_ID(T_KASA_HAREKET_SN_GEN, 1);
EXECUTE PROCEDURE PR_FIS_NO(1);
SELECT T_NUMARATOR.N_FIS_NO, T_NUMARATOR.M_FIS_NO
FROM T_NUMARATOR
INTO D_FIS_NO, D_M_FIS_NO;
NEW.FIS_NO = D_FIS_NO ;// burada bir sıkıntı yok çalışıyor
NEW.FIS_NO = D_M_FIS_NO + D_FIS_NO ; // fakat önüne maskeyi yazınca hata veriyor
hata :Dynamic SQL Error.
Expression evaluation not supported.
Strings cannot be added or subtracted in dialect 3.
SQL Code: -902
IB Error Number: 335544569
çevirim fonksiyonlarını bilen arkadaşların cevaplarını bekliyorum;
END;
[/code]
Firebrid den Fiş No isteme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Firebrid den Fiş No isteme
Varchar‘i delphideki gibi arti isareti ile birlestiremezsin. Cift pipe kullanmalisin. ||
kıdemsiz üye
Re: Firebrid den Fiş No isteme
Denedim ve sonuç aldım, teşekkürler.. fiş numarası çakışmasını engellemek için bir örnek oluşturur adına;
1) Procedure integer alanı bir artırıyor
2) Trigger ise kayıt ekleme öncesi procedureyi tetikliyor ve fiş numarasını bir artırıyor ve T_numarator tablosundan
güncel verileri çekiyor
1) Procedure integer alanı bir artırıyor
Kod: Tümünü seç
CREATE PROCEDURE PR_FIS_NO(
I_FIS_NO INTEGER)
AS
BEGIN
UPDATE T_NUMARATOR SET
T_NUMARATOR.N_FIS_NO = T_NUMARATOR.N_FIS_NO + 1
WHERE
:I_FIS_NO = 1;
SUSPEND;
END;
güncel verileri çekiyor
Kod: Tümünü seç
EXECUTE PROCEDURE PR_FIS_NO(1);
SELECT T_NUMARATOR.N_FIS_NO, T_NUMARATOR.M_FIS_NO
FROM T_NUMARATOR
INTO D_FIS_NO, D_M_FIS_NO;
NEW.FIS_NO = D_M_FIS_NO || D_FIS_NO ;