Firebrid den Fiş No isteme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
AfterPost
Üye
Mesajlar: 144
Kayıt: 12 Tem 2014 10:22

Firebrid den Fiş No isteme

Mesaj gönderen AfterPost »

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]
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Firebrid den Fiş No isteme

Mesaj gönderen ikra »

Varchar‘i delphideki gibi arti isareti ile birlestiremezsin. Cift pipe kullanmalisin. ||
kıdemsiz üye
AfterPost
Üye
Mesajlar: 144
Kayıt: 12 Tem 2014 10:22

Re: Firebrid den Fiş No isteme

Mesaj gönderen AfterPost »

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

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;
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

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 ;
Cevapla