Tarih Arali Yaslandirma Listesi.
Nereden Yazdırıldığı: ERP Nedir? | Türkiye'nin ERP Forum Platformu
Kategori: SQL
Forum Adı: SQL Veri Tabanı İşlemleri
Forum Tanımlaması: Table,View,Trigger,SELECT,UPDATE,INSERT...
URL: http://www.erpne.org/forum_posts.asp?TID=355
Tarih: 23 Kasım 2024 Saat 05:06 Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com
Konu: Tarih Arali Yaslandirma Listesi.
Mesajı Yazan: c1982
Konu: Tarih Arali Yaslandirma Listesi.
Mesaj Tarihi: 23 Ağustos 2007 Saat 17:45
Selam, Netsis arayüzündan su komutu veriyoruz :
Cari > Raporlar > Ek Listeler > Tarih Arali Yaslandirma Dökümü
Açilan Ekranda Cari Kodu Araligi seçtik. Asagidaki Tip bölümünden A (alici) seçtik RAPOR dedik.
Önümüze bir Liste geldi.
Bu listeyi NETSISde bu islemi yapmadan direk SQL Server'a sorgu göndererek nasil yapabilirim?
|
Cevaplar:
Mesajı Yazan: burakerdemir
Mesaj Tarihi: 23 Ağustos 2007 Saat 17:47
profilerdan bakmayi denedin mi?
------------- Burak Erdemir
|
Mesajı Yazan: c1982
Mesaj Tarihi: 23 Ağustos 2007 Saat 18:02
Ilk önce oraya baktim.
SELECT CARI_KOD,BELGE_NO,TARIH,ACIKLAMA,VADE_TARIHI,PROJE_KODU,DOVIZ_TURU,SUBE_KODU, HAREKET_TURU,BORC,ALACAK,INC_KEY_NUMBER,DOVIZ_TUTAR, FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,KAPATILMIS_TUTAR,RAPOR_KODU, RAPOR_KODU2,0 HARKUR FROM CAHAR WITH (NOLOCK) WHERE (CARI_KOD='A0256') ORDER BY TARIH,INC_KEY_NUMBER
gibi bir sey çikiyor. Çalistirdigimda benim almak istedigim listeden daha fazla kayit çikardigi gibi Kalan Tutari dogru gösteriyor.
Bu sorgudaki kayitlarla netsisin olusturdugu liste farkli oluyor netsis bunu neye göre düzenliyor ki?
------------- http://www.oguzhan.info/ - Blog
|
Mesajı Yazan: (sa)
Mesaj Tarihi: 24 Ağustos 2007 Saat 08:18
günaydin
çok incelemedim ama belki profilerde göstermedigi bir arayüz çalisiyor olabilirmi arka tarafta ?
------------- (sa)
|
Mesajı Yazan: c1982
Mesaj Tarihi: 24 Ağustos 2007 Saat 10:11
3 tane View ile aliyor bu raporu sanirim yaslandirma planini sqlde yapmiyor yada yapiyorda olabilir :)
Söyle : Çagirdigi CAHAR viewinda söyle bir WHERE var.
SELECT TBLCAHAR.* FROM TBLCAHAR WITH(NOLOCK), TBLSUBELER WITH(NOLOCK), NETCONTEXT WHERE TBLSUBELER.SUBE_KODU = TBLCAHAR.SUBE_KODU AND ( (V$CARIKULTIPI=0) OR ( (V$CARIKULTIPI<>0) AND ((V$HOLDINGMI=1) OR(TBLSUBELER.ISLETME_KODU IN (-1,V$ISLETME_KODU))) AND ( (V$MERKEZMI=1) OR (TBLCAHAR.SUBE_KODU IN (-1, V$SUBE_KODU)) OR ((V$CARIKULTIPI=2) AND ( CARI_KOD IN (SELECT CARI_KOD FROM TBLCASABITEK WHERE TBLCASABITEK.CARI_KOD=TBLCAHAR.CARI_KOD AND I_YEDEK1=V$SUBE_KODU))) ) ) ) |
Burda direk sorguyu profileden gördügün gibi çalistirirsan bir sey gelmiyor çünki bir sekilde netsisde Session sahibi olman gerekiyo. WHEREleri kaldirdigin zaman rapor geliyor fakat fazla geliyor yada yanlis geliyor degeler. Bir sekilde sorguyu gönderiken Netsis'in session kayitlarinida isin içine almak gerekiyor sanirim..
------------- http://www.oguzhan.info/ - Blog
|
Mesajı Yazan: c1982
Mesaj Tarihi: 24 Ağustos 2007 Saat 12:52
CAHAR viewine sorgu gönderirken NETCONTEXT içinden login oldugun userin processidsini alman gerekiyor direk sorgunun çalismasi için. Bensorguyu external çalistirmak istedigimden bu view isimi görmüyor. Aslinda görürde tek sorguyu 4 viewe dagitip almak uzun isgibi geldi.
Oturdum pasa, pasa yaziyom Yaslandirma Viewini :)
------------- http://www.oguzhan.info/ - Blog
|
Mesajı Yazan: emiray
Mesaj Tarihi: 25 Ağustos 2007 Saat 01:19
merhaba c1982, Netsis set içindeki standart raporlarin bazilarini function larin içine gömmüs raporu tiklatinca rapor function içinde dönüyor ve ekrana veriyor. Yaslandirma raporlari, stok karlilik raporlari, fatura karlilik raporlari,kasa raporlari, serbest maliyet ambar raporlari ve digerleri gibi yani bu isi biz yapiyoruz siz bununla yetinin diyor. Zamanin da stok karlilik raporu içine plasiyer kodunun eklenmesini istedigim bana extendi önerdiler yani müsteriye extend sat diyor. Müsteri extendi alsa nasil kullanacak, kullanayim dese az bucuk sql ögrenmesi ve netsisin tablo mantigini ögrenmesi gerekiyor. Bu islemi kaç müsteri yapar?
------------- netsis bir tutkudur.Yaşamak Lazım
|
Mesajı Yazan: c1982
Mesaj Tarihi: 25 Ağustos 2007 Saat 14:05
Selam Emiray, Netsis bunun için CARIBAKIYEBUL diye bir Stored Procedure kullaniyor.Bende buna bakara söyle bir UDF yazdim.
CREATE FUNCTION SPOGZ(@CARIKOD VARCHAR(10), @INCKEYNO INT, @TARIH DATETIME) RETURNS FLOAT AS BEGIN DECLARE @GUNBAKIYE FLOAT DECLARE @GERIBAKIYE FLOAT DECLARE @TMPBAK FLOAT DECLARE @TMPINC INT
DECLARE BAKIYE_CUR CURSOR FOR SELECT (BORC - ALACAK), INC_KEY_NUMBER FROM CAHAR WHERE CARI_KOD = @CARIKOD ORDER BY TARIH, INC_KEY_NUMBER
SELECT @GERIBAKIYE = (SELECT SUM(BORC - ALACAK) FROM CAHAR WHERE CARI_KOD = @CARIKOD AND TARIH < @TARIH) SELECT @GUNBAKIYE = 0.0 OPEN BAKIYE_CUR FETCH BAKIYE_CUR INTO @TMPBAK, @TMPINC WHILE (@@FETCH_STATUS <> -1) AND (@TMPINC <> @INCKEYNO) BEGIN SELECT @GUNBAKIYE = @GUNBAKIYE + @TMPBAK FETCH BAKIYE_CUR INTO @TMPBAK, @TMPINC END CLOSE BAKIYE_CUR DEALLOCATE BAKIYE_CUR RETURN (@GUNBAKIYE + @TMPBAK) END
|
Bu fonksiyonu SELECT içinde asaggidaki sekilde kullanabilirsiniz.
SELECT BORC,ALACAK, [SIRKETIM2007].[dbo].[UDFOGZ](CARI_KOD,INC_KEY_NUMBER,'01/01/2007') AS BAKIYE FROM CAHAR WHERE (CARI_KOD = 'A0256') ORDER BY CARI_KOD ASC , TARIH ASC , INC_KEY_NUMBER ASC
|
CURSOR kullandigim için biraz yavas çalisiyor. Simdilik bunu yapabildim daha sonra optimize edip hizlisini yaparim.
------------- http://www.oguzhan.info/ - Blog
|
Mesajı Yazan: kingkobra
Mesaj Tarihi: 25 Ağustos 2007 Saat 15:01
Arkadaslar slm,
Konuyla dogrudan ilgili degil fakat çok yakin bir ipucu,
Zaman zaman forumlara ise yarayacak ipuçlari gönderiyorum,
Query ekranindan asagidaki cümleiyi çalistirdiktan sonraki sorgularinizda tablo isimlerini tbl eklemeden yazabilirsiniz, umarim ise yarar, örnek select * from cahar sorgusu bos dönmez..
Sevgiler.
EXEC NSP_NETSESGUNCELLE 2,'YS00001',1,0,'E','H','2',-1,'H',0,0,'H'
------------- king kobra Node_M
|
Mesajı Yazan: c1982
Mesaj Tarihi: 25 Ağustos 2007 Saat 18:26
Güzel bir ip ucu tesekkürler.
------------- http://www.oguzhan.info/ - Blog
|
Mesajı Yazan: emiray
Mesaj Tarihi: 27 Ağustos 2007 Saat 15:09
Merhaba c1982,
paylasimin için tesekürler.
------------- netsis bir tutkudur.Yaşamak Lazım
|
Mesajı Yazan: c1982
Mesaj Tarihi: 28 Ağustos 2007 Saat 16:56
T-SQL de Cursor kullanarak Yaslandirma mümkün olabiliyor fakat Server'a çok yük getirdiginden isin bussines Layer kisminda çözülmesi çok daha kolay ki asagidaki gibi.
C# 2.0 while (Oku.Read()) { CariBorc = Convert.ToDouble(Oku["BORC"].ToString()); TmpAlacak = AlacakToplami - CariBorc;
if (TmpAlacak < 0) { CariAlacak = CariBorc - AlacakToplami; if (AlacakToplami > 0) { Bakiye += CariAlacak; dataGridView1.Rows.Add(Oku["INC_KEY_NUMBER"].ToString(), Oku["CARI_KOD"].ToString(), Oku["TARIH"].ToString(), Oku["VADE_TARIHI"].ToString(), Oku["BELGE_NO"].ToString(), Oku["ACIKLAMA"].ToString(), CariAlacak.ToString(), Oku["BORC"].ToString(), Bakiye.ToString()); } else { Bakiye += CariBorc; dataGridView1.Rows.Add(Oku["INC_KEY_NUMBER"].ToString(), Oku["CARI_KOD"].ToString(), Oku["TARIH"].ToString(), Oku["VADE_TARIHI"].ToString(), Oku["BELGE_NO"].ToString(), Oku["ACIKLAMA"].ToString(), Oku["BORC"].ToString(), Oku["ALACAK"].ToString(), Bakiye.ToString()); } } AlacakToplami = TmpAlacak; }
|
Netsis tam bu sekildemi yapiyor bilmiyorum ama yaptigim testlerde herhangi bir yanlis hesaplama göremedim.
Okudugum SQL asagidaki gibi.
Toplamlar için :
SELECT CM_BORCT,CM_ALACT FROM TBLCASABIT WITH(NOLOCK) WHERE CARI_KOD = @CARIKODU
|
Hareketler için :
SELECT INC_KEY_NUMBER,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,BORC,ALACAK FROM TBLCAHAR WITH(NOLOCK) WHERE (CARI_KOD=@CARIKODU) AND (TARIH<=@TARIH) AND BORC > 0 ORDER BY HKA DESC,TARIH,INC_KEY_NUMBER ASC
|
Böylelikle bir netsis fonksiyonunu daha taklit edip isletmemizin islerini daha hizli ve kolay yapmasini saglayarak mutlu bir sekilde yasantimiza devam ettik :P
------------- http://www.oguzhan.info/ - Blog
|
|