Merhaba,
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:
Benim amacım:
Durum
Özellikle:
Örneğin:
Bu yapı INSERT sırasında LOGO’yu patlatıyor.
Sorum
SQL Server tarafında:
Asıl hedefim:
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:
Bunu tamamen SQL tarafında, yani LOGO Object / SDK / uygulama kodu kullanmadan, sadece trigger ile yapmak istiyorum.Fatura kaydedilirken bazı koşullara bakıp, ihlal varsa işlemi rollback edip kullanıcıya uyarı mesajı göstermek.
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:
SQL:
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
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.
