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

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
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