LOGO Tiger ERP üzerinde SQL Server trigger kullanarak bir iş kuralı uygulamak istiyorum.
Senaryo şu:
Kullanıcı “Satış Siparişi → Faturala → F2 (Kaydet)” dediğinde, arka planda sırasıyla şu işlemler oluyor:
INVOICE tablosuna INSERT
STFICHE tablosuna INSERT
STLINE tablosuna INSERT (asıl satırlar burada oluşuyor)
Benim amacım:
Fatura kaydedilirken bazı koşullara bakıp, ihlal varsa işlemi rollback edip kullanıcıya uyarı mesajı göstermek.
Bunu tamamen SQL tarafında, yani LOGO Objects / SDK / uygulama kodu kullanmadan, sadece trigger ile yapmak istiyorum.
Durum
UPDATE trigger içinde RAISERROR / THROW kullandığımda:
LOGO ekranda mesajı düzgün gösteriyor
İşlem rollback oluyor
Program crash olmuyor → OK
INSERT trigger içinde aynı şeyi yaptığımda:
LOGO crash oluyor
OLE DB tarafında E_FAIL / Cursor Engine error geliyor
Uygulama kapanıyor
Özellikle:
“Satış siparişi → faturala” akışında STLINE üzerinde INSERT trigger tetiklenince crash oluyor.
Ama aynı kontrolü INVOICE AFTER UPDATE trigger’ında yaparsam bazen çalışıyor, bazen yine crash.
Örneğin
Kod: Tümünü seç
CREATE TRIGGER trg_test
ON STLINE
AFTER INSERT
AS
BEGIN
IF EXISTS (SELECT 1 FROM inserted WHERE ...)
BEGIN
RAISERROR('Kural ihlali', 11, 1);
-- veya THROW
END
END
Bu yapı INSERT sırasında LOGO’yu patlatıyor.
Sorum
SQL Server tarafında:
INSERT trigger içinde işlemi durdurup kullanıcıya mesaj göstermek mümkün mü?
Bunu LOGO Objects kullanmadan, sadece SQL ile yapmanın bir yolu var mı? (Trigger veya farklı bir yöntem)
Asıl hedefim:
Kullanıcı F2 (Kaydet) dediği anda, ihlal varsa program patlamadan, temiz şekilde rollback + uyarı mesajı göstermek.