Mikro'da SQL ile Rapor Almak: Doğal Dille Sorgu Üretme Rehberi
Mikro ERP'de istediğiniz raporu almanın en hızlı yolu, doğru SQL sorgusunu yazmaktır. Ancak Mikro'nun veritabanı yüzlerce tablodan, şifreli kolonlardan ve sürüme göre değişen alanlardan oluşur; bu yüzden doğru sorguyu elle yazmak ciddi zaman ve uzmanlık ister. Bu rehberde Mikro'da SQL ile rapor almanın mantığını, sık karşılaşılan tuzakları ve doğal dille (Türkçe) çalışan SQL üretmenin nasıl işlediğini anlatıyoruz.
Mikro'da SQL yazmak neden zordur?
Mikro veritabanı, muhasebe ve ticari işin tüm karmaşıklığını taşır. Bir cari bakiyesini ya da stok hareketini "doğru" hesaplamak göründüğünden zordur:
- Yüzlerce tablo ve ilişki. Cari, stok, fatura, irsaliye, sipariş, kasa, banka... Her biri birbirine bağlı. Hangi tablonun hangi alanla birleşeceğini bilmek gerekir.
- Borç/alacak yönü. Cari hareketlerde tutarın işareti hareket tipine göre değişir. Yanlış yön, bakiyeyi tamamen ters çevirir.
- İptal, iade ve evrak tipi tuzakları. İptal edilmiş ya da iade niteliğindeki kayıtları ayıklamadan alınan rapor, gerçeği yansıtmaz.
- Şifreli ve kodlanmış kolonlar. Bazı alanlar (
msg_S_ile başlayanlar gibi) doğrudan okunabilir değildir; anlamlandırmak için Mikro'nun kendi fonksiyonlarına ihtiyaç duyulur. - Sürüm farkları. v16 ile v17 arasında kolon ve tablo adları değişebilir. v16 için yazılmış bir sorgu v17'de hata verebilir.
Sonuç: "Basit bir liste" sandığınız rapor, çoğu zaman birden çok JOIN, koşul ve hesaplama gerektirir.
Doğal dille SQL üretmenin mantığı
Erp Asistanı bu işi tersine çevirir: SQL'i siz değil, yapay zekâ yazar. Siz yalnızca ne istediğinizi Türkçe yazarsınız.
Arka planda çalışan yöntem, "text-to-SQL + RAG" (retrieval-augmented generation) olarak adlandırılır:
- Şema bilgisi hazırdır. Mikro'nun gerçek tabloları, kolonları, fonksiyonları ve binlerce doğrulanmış örnek sorgu önceden işlenmiş bir bilgi tabanında tutulur.
- Sorunuz analiz edilir. "Borcu 10.000 TL üstündeki carileri listele" cümlesi, ilgili tablolara ve hesaplama kurallarına eşlenir.
- Şemaya uygun SQL üretilir. Model uydurma kolon kullanmaz; sorgu, sizin sürümünüzün (v16/v17) gerçek şemasına göre kurulur ve doğrulanır.
- Belirsizse sorulur. Tarih aralığı ya da hangi alanın istendiği net değilse, varsayım yapmak yerine size seçenek sunulur.
Bu sayede Mikro tablolarını ezberlemeden, dakikalar yerine saniyeler içinde çalışan bir sorguya ulaşırsınız.
Örnek: 3 soru, 3 sorgu
Aşağıdaki örnekler, doğal dildeki bir sorunun nasıl çalışan SQL'e dönüştüğünü gösterir. (Kolon adları sürüme göre değişebilir; Erp Asistanı doğru olanı sizin şemanıza göre üretir.)
Soru: "Bakiyesi 10.000 TL üstünde olan carileri borçtan büyüğe sırala."
SELECT
ch.cari_kod AS [Cari Kodu],
ch.cari_unvan1 AS [Unvan],
SUM(h.cha_meblag *
CASE WHEN h.cha_tip = 0 THEN 1 ELSE -1 END) AS [Bakiye]
FROM CARI_HESAPLAR ch
JOIN CARI_HESAP_HAREKETLERI h ON h.cha_kod = ch.cari_kod
GROUP BY ch.cari_kod, ch.cari_unvan1
HAVING SUM(h.cha_meblag *
CASE WHEN h.cha_tip = 0 THEN 1 ELSE -1 END) > 10000
ORDER BY [Bakiye] DESC;
Soru: "Bu ay satışı en yüksek 20 stok kalemi."
SELECT TOP 20
s.sto_kod AS [Stok Kodu],
s.sto_isim AS [Stok Adı],
SUM(sh.sth_miktar) AS [Toplam Miktar],
SUM(sh.sth_tutar) AS [Toplam Tutar]
FROM STOK_HAREKETLERI sh
JOIN STOKLAR s ON s.sto_kod = sh.sth_stok_kod
WHERE sh.sth_tip = 1 -- çıkış (satış)
AND sh.sth_tarih >= DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1)
GROUP BY s.sto_kod, s.sto_isim
ORDER BY [Toplam Tutar] DESC;
Soru: "Geçen ay kesilen satış faturalarının toplamı."
SELECT
COUNT(*) AS [Fatura Adedi],
SUM(fat_tutar) AS [Toplam Tutar]
FROM FATURALAR
WHERE fat_evraktip = 1 -- satış faturası
AND fat_tarih >= DATEADD(MONTH, -1, DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1))
AND fat_tarih < DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1);
Gördüğünüz gibi her sorgu; doğru tablo, doğru koşul ve doğru hesaplama içeriyor. Bunları her seferinde elle kurmak yerine, soruyu yazıp sonucu almak çok daha hızlıdır.
Ham SQL mi, canlı raporlama mı?
İki kullanım biçimi vardır:
- SQL üretme: Sorguyu metin olarak alır, kendi veritabanınızda (SSMS, kendi panelinizde vb.) çalıştırırsınız. Sorgu üzerinde tam kontrol sizdedir.
- Canlı raporlama: Soruyu yazar, sonucu doğrudan tablo olarak görürsünüz; filtreler, sütun açıp kapatır, Excel'e aktarır veya yazdırırsınız. SQL'le uğraşmak istemeyenler için idealdir.
İkisi de aynı şema-farkında motoru kullanır; fark yalnızca sonucu nasıl aldığınızdır.
Daha iyi sonuç için ipuçları
- Net olun: "Cariler" yerine "bu yıl hiç hareket görmemiş cariler" gibi ölçüt verin.
- Tarih aralığını belirtin: "Geçen ay", "2026 ilk çeyrek" gibi ifadeler doğrudan tarih koşuluna çevrilir.
- İstediğiniz kolonları söyleyin: "Kod, unvan ve bakiye yeter" derseniz çıktı sadeleşir.
- Sürümünüzü doğru seçin: v16 ve v17 şemaları farklıdır; doğru sürüm, doğru sorgu demektir.
Sık sorulanlar
Ürettiği SQL güvenli mi? Üretim öncelikli olarak salt-okuma (SELECT) odaklıdır. Veri değiştiren bir sorgu söz konusuysa açık uyarı verilir; çalıştırma kararı her zaman sizdedir.
Kolon uydurur mu? Hayır. Sorgu, sürümünüzün gerçek şemasına karşı doğrulanır; olmayan kolon kullanılmaz.
Mikro tablolarını bilmem gerekir mi? Hayır. Tek yapmanız gereken ne istediğinizi Türkçe yazmak.
Mikro'da rapor almak için artık SQL uzmanı olmanız gerekmiyor. Sorunuzu yazın, çalışan sorgunuzu saniyeler içinde alın.
Mikro'da SQL ve raporu konuşarak alın
Türkçe sorunuzu yazın, şemanıza uygun çalışan SQL'i ya da hazır uygulamanızı saniyeler içinde alın. Kredi kartı gerekmez.