28 Aralık 2011 Çarşamba
Visual Studio 2010 C# 4.0 Örnekler
Visual Studio 2010 C# 4.0 örnekleri indirmek için;
http://code.msdn.microsoft.com/Visual-Studio-2010-Samples-31b491f3
SQL Server 2012 CONCAT Function hakkında – PRINT
SQL Server 2012 ile CONCAT functionu geliyor. String çerimlerinde fazladan dok yazmayı engelleyecek faydalı bir function.
PRINT ifadesini kullanarak ve doğrudan string ve datetime veri tür dönüşümlerinde aşağıdaki hatayı alırız.
PRINT 'Current Time ' + GETDATE()
SQL Server 2012 versiyon öncesinde çevirim işlemine tabi tutmak gerekiyordu.
PRINT 'Current Time ' + CAST(GETDATE() AS VARCHAR(20))
SQL Server 2012 versiyonu ile gelen CONCAT functionu ile daha hızlı kod yazmak mümkün olabilecek.
PRINT CONCAT('Current Time ', GETDATE()
)
Mikro v14 Eski tip formlarda SQL sorgu cümleleri yazmak
Mikro v14 ile form tasarım ekranlarına SQL sorgu cümleleri ile istenen alanların eklenebilmesi.
Evraklar üzerinde ALT+F tuşları ile ulaşılan form tasarım ekranlarımızın statik ve dinamik alanlarına SQL sorgusu ile istenilen bilginin yazdırılması sağlanmıştır. Böylece kullanıcılarımız herhangi bir müdahaleye gerek duymadan evrak dizaynlarında yazacakları sorgular ile erişebildikleri tüm alanlara ait bilgileri kullanarak döküm alabileceklerdir. Öncelikle belirtmek isteriz ki bu düzenleme sadece yeni tip form tasarım ekranlarımız için geçerlidir. Bu amaçla tasarım ekranının üst bölümünde yer alan parametreler menüsüne Dinamik sorgu düzenle” ve “Statik sorgu düzenle” seçenekleri eklenmiştir. Bu aşamada yapılması gereken hangi alana sorgu cümlesi ile bilgi yazılacak ise öncelikle ilgili seçeneğin seçilmesi, açılacak ekrana kullanılacak bilgiye ait sorgunun yazılmasıdır. Bu ekranlarda parametre olarak şimdilik @SNO ve @DNO alanları kullanılabilecektir.
@SNO - Statik alandaki kaydın record numarası.
@DNO - Dinamik alandaki kaydın record numarasını ifade etmektedir.
Bu parametreler yazılan sorgunun where kısmında mutlaka kullanılmalı ve sorgunun doğru kayda ait olduğu garantilenmelidir.
Unutmamalısınız ki;
Statik sorgu, form dökülürken bir kez çalışmaktadır ve gelen bilgiler form üzerinde her yerde kullanılabilir. Dinamik sorgu ise her bir hareket satırı için çalışmaktadır.
Böylece kullanıcılarımız yazacakları sorgular sayesinde örneğin beden detaylı olarak takibini yaptıkları stokların, fatura evrakından girmiş oldukları beden detaylarının yazdırılmasını sağlayabileceklerdir. Dinamik sorgu düzenle seçeneği ile sorgusunu yazıp data bağlantısını yapacak ve detay satırlarının hemen altında beden bilgilerinin yazılmasını sağlayabileceklerdir. Aynı şekilde faturadan girilmiş stokların ana sağlayıcısına ait cep numarasının dökülmesini de sağlayabileceklerdir. Bu örnekleri evrak bazında çoğaltabilmemiz mümkündür.
Şimdi bir örnekle ne yapmanız gerektiğini anlatalım.
Mesela faturanızdaki renk-beden detaylı stoklarınızın kırılım miktarlarını listelemek istediğinizi düşünelim. Bunun için,
∙ Yeni tip evrak tasarım formundaki Program menüsündeki “Dinamik sorgu düzenle” seçeneğini çalıştırarak karşınıza çıkan ekranda aşağıdaki sorguyu yazıp, form tasarımını kaydetmelisiniz.
SELECT * FROM dbo.BEDEN_HAREKETLERI WHERE BdnHar_DRECid_RECno=@DNO
∙ Daha sonra ekranınızın sol tarafında yer alan bölümden “Dinamik_sorgu_alanları” seçeneğini işaretleyip dizaynınızı oluşturmalısınız. Böylece Alt+K ile dökümü almak istediğinizde yazdığınız sorgunun dökümünü alabileceksiniz. Yani verdiğimiz örneğe göre faturadaki renk-beden detaylı stokların kırılımlarına göre miktarları dökülecektir.
Diğer tablolarla ilişki kurarak istediğiniz ortak verileri getirebilirsiniz.
SELECT MAX(dbo.fn_KurBul(cha_tarihi,sip_doviz_cinsi,1)) AS [Siparişin Faturalaşma Döviz Kuru]
FROM dbo.CARI_HESAP_HAREKETLERI WITH(NOLOCK)
LEFT OUTER JOIN dbo.STOK_HAREKETLERI WITH(NOLOCK) ON (cha_RECid_DBCno=sth_fat_recid_dbcno AND cha_RECid_RECno=sth_fat_recid_recno)
LEFT OUTER JOIN dbo.SIPARISLER WITH(NOLOCK) ON (sth_sip_recid_dbcno=sip_RECid_DBCno AND sth_sip_recid_recno=sip_RECid_RECno)
WHERE cha_RECno=@SNO
Evraklar üzerinde ALT+F tuşları ile ulaşılan form tasarım ekranlarımızın statik ve dinamik alanlarına SQL sorgusu ile istenilen bilginin yazdırılması sağlanmıştır. Böylece kullanıcılarımız herhangi bir müdahaleye gerek duymadan evrak dizaynlarında yazacakları sorgular ile erişebildikleri tüm alanlara ait bilgileri kullanarak döküm alabileceklerdir. Öncelikle belirtmek isteriz ki bu düzenleme sadece yeni tip form tasarım ekranlarımız için geçerlidir. Bu amaçla tasarım ekranının üst bölümünde yer alan parametreler menüsüne Dinamik sorgu düzenle” ve “Statik sorgu düzenle” seçenekleri eklenmiştir. Bu aşamada yapılması gereken hangi alana sorgu cümlesi ile bilgi yazılacak ise öncelikle ilgili seçeneğin seçilmesi, açılacak ekrana kullanılacak bilgiye ait sorgunun yazılmasıdır. Bu ekranlarda parametre olarak şimdilik @SNO ve @DNO alanları kullanılabilecektir.
@SNO - Statik alandaki kaydın record numarası.
@DNO - Dinamik alandaki kaydın record numarasını ifade etmektedir.
Bu parametreler yazılan sorgunun where kısmında mutlaka kullanılmalı ve sorgunun doğru kayda ait olduğu garantilenmelidir.
Unutmamalısınız ki;
Statik sorgu, form dökülürken bir kez çalışmaktadır ve gelen bilgiler form üzerinde her yerde kullanılabilir. Dinamik sorgu ise her bir hareket satırı için çalışmaktadır.
Böylece kullanıcılarımız yazacakları sorgular sayesinde örneğin beden detaylı olarak takibini yaptıkları stokların, fatura evrakından girmiş oldukları beden detaylarının yazdırılmasını sağlayabileceklerdir. Dinamik sorgu düzenle seçeneği ile sorgusunu yazıp data bağlantısını yapacak ve detay satırlarının hemen altında beden bilgilerinin yazılmasını sağlayabileceklerdir. Aynı şekilde faturadan girilmiş stokların ana sağlayıcısına ait cep numarasının dökülmesini de sağlayabileceklerdir. Bu örnekleri evrak bazında çoğaltabilmemiz mümkündür.
Şimdi bir örnekle ne yapmanız gerektiğini anlatalım.
Mesela faturanızdaki renk-beden detaylı stoklarınızın kırılım miktarlarını listelemek istediğinizi düşünelim. Bunun için,
∙ Yeni tip evrak tasarım formundaki Program menüsündeki “Dinamik sorgu düzenle” seçeneğini çalıştırarak karşınıza çıkan ekranda aşağıdaki sorguyu yazıp, form tasarımını kaydetmelisiniz.
SELECT * FROM dbo.BEDEN_HAREKETLERI WHERE BdnHar_DRECid_RECno=@DNO
∙ Daha sonra ekranınızın sol tarafında yer alan bölümden “Dinamik_sorgu_alanları” seçeneğini işaretleyip dizaynınızı oluşturmalısınız. Böylece Alt+K ile dökümü almak istediğinizde yazdığınız sorgunun dökümünü alabileceksiniz. Yani verdiğimiz örneğe göre faturadaki renk-beden detaylı stokların kırılımlarına göre miktarları dökülecektir.
Diğer tablolarla ilişki kurarak istediğiniz ortak verileri getirebilirsiniz.
SELECT MAX(dbo.fn_KurBul(cha_tarihi,sip_doviz_cinsi,1)) AS [Siparişin Faturalaşma Döviz Kuru]
FROM dbo.CARI_HESAP_HAREKETLERI WITH(NOLOCK)
LEFT OUTER JOIN dbo.STOK_HAREKETLERI WITH(NOLOCK) ON (cha_RECid_DBCno=sth_fat_recid_dbcno AND cha_RECid_RECno=sth_fat_recid_recno)
LEFT OUTER JOIN dbo.SIPARISLER WITH(NOLOCK) ON (sth_sip_recid_dbcno=sip_RECid_DBCno AND sth_sip_recid_recno=sip_RECid_RECno)
WHERE cha_RECno=@SNO
14 Aralık 2011 Çarşamba
SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server.
SELECT *
FROM OPENROWSET('SQLOLEDB', 'Trusted_Connection=Yes;Server=(local);Database=MikroDB_V14_FIRMA', 'exec dbo.rp_PersonelCalismaListesi ''20111201'',''20111231''')
GO
SQLOLEDB aracılığı ile "SELECT FROM stored procedure" stored procedur çalıştırıyorsanız yada farklı bir yöntemle "SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource" mesaj alıyorsanız.
Msg 15281, Level 16, State 1, Line 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
--Tüm parametreleri görmek için;
EXEC sp_configure
FROM OPENROWSET('SQLOLEDB', 'Trusted_Connection=Yes;Server=(local);Database=MikroDB_V14_FIRMA', 'exec dbo.rp_PersonelCalismaListesi ''20111201'',''20111231''')
GO
SQLOLEDB aracılığı ile "SELECT FROM stored procedure" stored procedur çalıştırıyorsanız yada farklı bir yöntemle "SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource" mesaj alıyorsanız.
Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online.
--Gelişmiş seçenekleri tamamını göstermesi için;
EXEC sp_configure 'show advanced options', 0;RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE WITH OVERRIDE
--Tüm parametreleri görmek için;
EXEC sp_configure
7 Aralık 2011 Çarşamba
Mikro veritabanı üzerinde ihtiyaca göre triger kullanmak.
Mikro veritabanı üzerinde ihtiyaca göre triger kullanmak.
Microsoft SQL Server'da Mikro veritabanına eklenecek triger'ler sayesinde
bazı işlemleri kolaylaştırabiliriz.
USE
[MikroDB_V14_VERITABANI]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--
=============================================
-- Author : Orhan ÖCAL
-- Create date : 07.12.2011
-- Description : Sipariş
fişinde teslim türü boş geçilememesi için kontrol.
--
=============================================
CREATE TRIGGER [dbo].[SiparisTeslimTuruKontrol]
ON [dbo].[SIPARISLER]
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @sip_teslimturu VARCHAR(25)
set @sip_teslimturu =''
SELECT @sip_teslimturu = sip_teslimturu
FROM inserted
IF @sip_teslimturu = ''
BEGIN
RAISERROR('TESLİM TÜRÜ GİRİLMELİDİR!', 16, 1)
ROLLBACK
RETURN
END
END
GO
USE
[MikroDB_V14_VERITABANI]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--
=============================================
-- Author : Orhan ÖCAL
-- Create date : 07.12.2011
-- Description : CARI_HESAP_HAREKETLERI tablosunda kayıt sonrası Belge No alanına bilgi yazmak.
--
=============================================
ALTER TRIGGER [dbo].[FaturaOnayKontrol]
ON [dbo].[CARI_HESAP_HAREKETLERI]
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @cha_RECno int
SET @cha_RECno = 0
SELECT @cha_RECno = cha_RECno
FROM inserted
WHERE cha_evrak_tip=0 AND cha_cinsi=6 --Toptan fatura
UPDATE dbo.CARI_HESAP_HAREKETLERI
SET cha_belge_no='ONAYLANMADI'
WHERE cha_evrak_tip=0 AND cha_RECno=@cha_RECno
END
23 Kasım 2011 Çarşamba
Uzak Masa Üstü (Remote Desktop) Bağlantı Sorunu.
Uzak masa üstü (RDP) ile bağlanman istediğinizde bu mesajı alıyorsanız işte yapmanız gerekenler.
"Yerel bilgisayarın istemci lisansı yükseltilemediğinden veya yenilenemediğinden uzak oturumun bağlantısı kesildi."
Regedit :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\HardwareID] "ClientHWID"=hex:02,00,00,00,23,96,9a,dc,46,d6,42,77,d4,3b,22,83,99,45,fc,a6
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000]
İçlerindeki bilgileri silmek sorunu çözecektir.
"Yerel bilgisayarın istemci lisansı yükseltilemediğinden veya yenilenemediğinden uzak oturumun bağlantısı kesildi."
Regedit :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\HardwareID] "ClientHWID"=hex:02,00,00,00,23,96,9a,dc,46,d6,42,77,d4,3b,22,83,99,45,fc,a6
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000]
İçlerindeki bilgileri silmek sorunu çözecektir.
9 Ekim 2011 Pazar
SQL Server 2008 Service Pack 3 Yayınlandı.
SQL Server 2008 Service Pack 3 ile giderilen sorunların listesine ulaşmak için
http://support.microsoft.com/kb/2546951
SQL Server 2008 Service Pack 3
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27594
Microsoft SQL Server 2008 SP3 Express Edition
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27597
Microsoft SQL Server 2008 Service Pack 3 Feature Pack
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27596
http://support.microsoft.com/kb/2546951
SQL Server 2008 Service Pack 3
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27594
Microsoft SQL Server 2008 SP3 Express Edition
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27597
Microsoft SQL Server 2008 Service Pack 3 Feature Pack
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27596
29 Eylül 2011 Perşembe
Mikro v14 Kartlarda alanların zorunlu yada standart olarak atanması.
STOK, CARİ vs gibi kartlarda bazı alanların zorunlu olması yada Muhasebe grup kodu olarak yeni açılan tüm stok kartlarına yazsın istiyorsanız. STOKLAR_000_000.ini dosyası içerisinde belirterek çözümler üretebilirsiniz.
"STOKLAR_000_000.ini"
TABLOADI_FİRMA_ŞUBE şeklinde bir yapısının olması firma ve şube bazlı ayırım yapabilmenizide sağlıyor.
"[initials]"
Yeni kayıt açarken gelmesini gereken bilgiler yazılır.
"[restrictions]"
Boş geçilememesi ve zorunlu tutulması gereken alan bilgileri yazılır.
Tablo adlarını kullanarak bu işlemleri tüm kart ve tablolarda kullanabilirsiniz. v12'de SQL üzerinde triger kullanmak gerekirken v14 te daha kolay yapabilirsiniz.
C:\Mikro\v14xx\Firma\Params\STOKLAR_000_000.ini
STOKLAR_000_000.ini
Dosya içeriği.
[initials]
sto_muhgrup_kodu=TCMALLAR
sto_min_stok=100
[restrictions]
sto_anagrup_kod=
sto_altgrup_kod=
sto_yabanci_isim=
"STOKLAR_000_000.ini"
TABLOADI_FİRMA_ŞUBE şeklinde bir yapısının olması firma ve şube bazlı ayırım yapabilmenizide sağlıyor.
"[initials]"
Yeni kayıt açarken gelmesini gereken bilgiler yazılır.
"[restrictions]"
Boş geçilememesi ve zorunlu tutulması gereken alan bilgileri yazılır.
Tablo adlarını kullanarak bu işlemleri tüm kart ve tablolarda kullanabilirsiniz. v12'de SQL üzerinde triger kullanmak gerekirken v14 te daha kolay yapabilirsiniz.
C:\Mikro\v14xx\Firma\Params\STOKLAR_000_000.ini
STOKLAR_000_000.ini
Dosya içeriği.
[initials]
sto_muhgrup_kodu=TCMALLAR
sto_min_stok=100
[restrictions]
sto_anagrup_kod=
sto_altgrup_kod=
sto_yabanci_isim=
17 Ağustos 2011 Çarşamba
TSQL İki tarih arası fark.
DECLARE @ilktar datetime = '2010-01-01 08:15:00.0',
@sontar datetime = '2011-08-17 19:00:35.0'
SELECT
DATEDIFF(YEAR,@ilktar,@sontar) AS [Yıl]
,DATEDIFF(MONTH,@ilktar,@sontar) AS [Ay]
,DATEDIFF(WEEK,@ilktar,@sontar) AS [Hafta]
,DATEDIFF(DAY,@ilktar,@sontar) AS [Gün]
,DATEDIFF(HOUR,@ilktar,@sontar) AS [Saat]
,DATEDIFF(MINUTE,@ilktar,@sontar) AS [Dakika]
,DATEDIFF(SECOND,@ilktar,@sontar) AS [Saniye]
Kaynak : http://msdn.microsoft.com/en-us/library/ms189794.aspx
@sontar datetime = '2011-08-17 19:00:35.0'
SELECT
DATEDIFF(YEAR,@ilktar,@sontar) AS [Yıl]
,DATEDIFF(MONTH,@ilktar,@sontar) AS [Ay]
,DATEDIFF(WEEK,@ilktar,@sontar) AS [Hafta]
,DATEDIFF(DAY,@ilktar,@sontar) AS [Gün]
,DATEDIFF(HOUR,@ilktar,@sontar) AS [Saat]
,DATEDIFF(MINUTE,@ilktar,@sontar) AS [Dakika]
,DATEDIFF(SECOND,@ilktar,@sontar) AS [Saniye]
Kaynak : http://msdn.microsoft.com/en-us/library/ms189794.aspx
10 Ağustos 2011 Çarşamba
LINQ Örnekleri için LINQ Project Sample Query Explorer
LINQ to Objects - LINQ to SQL - LINQ to DataSet - LINQ to XML gibi LINQ örneklere ihtiyacınız olduğunda http://msdn.microsoft.com/en-us/vcsharp/aa336746 kaynaktan faydalanbilirsiniz.
Eğer örnekler yeterli değil daha detaylı örneklere ihtiyacınız olur ise MSDN kaynaklarında C# ve VB için LINQ Project Sample Query Explorer indirerek daha detaylı örnekleri inceleyebilirsiniz.
http://code.msdn.microsoft.com/LINQ-Sample-Queries-13a42a54
Eğer örnekler yeterli değil daha detaylı örneklere ihtiyacınız olur ise MSDN kaynaklarında C# ve VB için LINQ Project Sample Query Explorer indirerek daha detaylı örnekleri inceleyebilirsiniz.
http://code.msdn.microsoft.com/LINQ-Sample-Queries-13a42a54
Kaydol:
Kayıtlar (Atom)