25 Ekim 2010 Pazartesi

Microsoft SQL Server Build List (2000 - 2005 - 2008 / R2)

SQLServerCentral.com web sitesinden kullanmakta olduğunuz Microsoft SQL Server versiyonuna ait build list 'i takip ederek giderilen hatalarının neler olduğunu yada yayınlanan update paketlerin yüklenmesini sağlayabiliriz. 

Versiyonlar:
SQL Server 2000 Build List
http://www.sqlservercentral.com/articles/SQL+Server+2000/71063/

SQL Server 2005 Build List
http://www.sqlservercentral.com/articles/Administration/2960/

SQL Server 2008 Build List
http://www.sqlservercentral.com/articles/SQL+Server+2008/63491/

SQL Server 2008 R2 Build List
http://www.sqlservercentral.com/articles/SQL+Server+2008+R2/70092/

Mikro v14 sürümünde menüye sorgu dosyası bağlayarak raporların oluşturulması.

Merhabalar,

Mikro v14 programlarında T-SQL kodlarını kullanarak sizde kendi raporlarınızı menüye bağlayabilirsiniz. v12 ye göre daha fazla parametre özelliği taşıyan v14 aynı zamanda verdiğimiz kriterler için F10 tuşu ile seçim yapabilmemizi de sağlıyor.

Aşağıda SQL rapor sorgusu çalıştırma parametrelerinin kullanım yapısı yer almaktadır.

<@P1;NAME=Depo no,40;TABLEID=111;FIELDNAME=dep_no;TYPE=I;CHOOSEID=5;MULTI=true
@P1: Değişken adı
NAME: Ekranda görünecek olan açıklama
TABLEID: F10 yapılacak tablonun ID’si
FIELDNAME: F10 yapılıp seçilen kayıttan hangi bilginin alınacağı
TYPE: Alanın tipi I: Integer, T: Tarih, R: Double, S: String
CHOOSEID: F10’da hangi choose kullanılacağı
MULTI: F10’nun çoklu seçimli olup olmayacağı

Yukarıdaki yapıyı baz alarak SQL veri küpü sorgusunun ve rapor sorgusunun nasıl oluşturulacağını örneklerle açıklamaya çalışalım. SQL sorgu dosyaları çalışılan veri tabanının System klasörü altına kopyalanmalıdır.

Örnek-1
İlk örneğimizde veri küpünü ele aldık. Stok envanter yönetimini oluşturduğumuz kriterlere göre küp formatında göstermeyi tercih ettik ve SQL sorgumuzu aşağıdaki şekilde oluşturduk.

[< <@P1;NAME=Depo no,40;TABLEID=111;FIELDNAME=dep_no;TYPE=I;CHOOSEID=5;MULTI=true>
<@P2;NAME=İlk tarih,10;TYPE=T>
<@P3;NAME=Son tarih,10;TYPE=T>
<@P4;NAME=Seçilen depolar tek bir depo gibi gözüksün,5;TYPE=C>
>]
Select * FROM dbo.StokEnvanterYonetimi(@P2,@P3,0,N'@P1',@P4,0)

Hazırlanan sorgular menülere nasıl eklenir ve nasıl çalıştırılır?

    * Öncelikle sorgunun programda hangi bölüme ekleneceği belirlenmelidir. Biz örnek sorgumuzu Stok yönetiminin Raporlar menüsüne ekledik. Bunun için de Raporlar menüsünde mouse’un sağ tuşuna basıp açılacak ekrandan Menü ekle/Bir alt seviyeye menü ekle seçeneğini seçerek ilk adımımızı tamamladık. Aşağıda gerçekleştirdiğimiz işlemin ekran görüntüsü yer almaktadır.


    * İkinci adım olarak da eklediğimiz yeni menüye hazırladığımız sorguyu bağlamamız gerekecek. Bunun için de Yeni menü alanında mouse göstergemizin sağ tuşuna basıp Veri küpü sorgu dosyası bağla seçeneğini seçtik ve hazırladığımız sorgumuzu bilgisayarımıza kopyaladığımız bölümden seçerek işlemimizi sonlandırdık.


    * Bu aşamada eklediğimiz yeni menüden SQL sorgumuzu çalıştırarak parametre ekranımıza ulaşabiliriz. Örneğimize göre parametre ekranımız aşağıdaki şekilde karşımıza gelecektir.



Örnek-2

Raporumuzdan istediğimiz depolardan istediğimiz stokların, gireceğimiz tarih aralığındaki kâr oranlarını listelemesini isteyelim. Bunun için hazırlayacağımız rapor sorgumuz aşağıdaki gibi oluşturulmalıdır.

[<
<@P1;NAME=Depo no,40;TABLEID=111;FIELDNAME=dep_no;TYPE=I;CHOOSEID=5;MULTI=true>
<@P2;NAME=İlk stok kodu,25;TABLEID=13;FIELDNAME=sto_kod;TYPE=S>
<@P3;NAME=Son stok kodu,25;TABLEID=13;FIELDNAME=sto_kod;TYPE=S>
<@P4;NAME=Stok kod yapısI,25;TABLEID=13;FIELDNAME=sto_kod;TYPE=S>
<@P5;NAME=Miktar,12.2;TYPE=R>
<@P6;NAME=İlk tarih,10;TYPE=T>
<@P7;NAME=Son tarih,10;TYPE=T>
>]
SELECT sto_kod as 'Stok kodu',sto_isim as 'Stok Adý',sto_karorani as 'Kar Oraný' FROM dbo.STOKLAR
WHERE ( ( (sto_kod>=@P2) or (@P2='') ) and
( (sto_kod<=@P3) or (@P3='') ) and
( (sto_kod like @P4+'%') or (@P4='') ))

Bu sorguyu programlarımızda istediğiniz bölüme yukarıda açıkladığımız şekilde bağlayarak işlemlerinize devam edebilirsiniz.

Mikro v12 sürümünde menüye sorgu dosyası bağlayarak raporların oluşturulması.

Merhabalar,

Mikro programlarında T-SQL kodlarını kullanarak sizde kendi raporlarınızı menüye bağlayabilirsiniz. Programa (MYE, MIS9000, MRP29000, MIKRONOM, ENERJI vs) "SRV" kullanıcı ile girmeniz gerkiyor. Ana menü üzerinde fare ile sağ tuşa basıp hazırladığımız "rapordosyasi.sql" uzantılı dosyayı seçtiğimizde ekrana ekleyecektir. Kullanıcıların menülerine kalıcı olarak eklemek için fare ile sağ tıklayıp sakla seçeneğini seçtiğimizde yeni raporu eklemek istediğimizi kullanıcıları seçip enter ile onayladığımızda kayıt edilecektir.






?T = Tarih için kullanılan değişken.
?K = Kod için kullanılan değişkeni.

Mikro programdan tarih değişkenini gördüğü anda ekrana başlangıç ve bitiş tarihlerini getiriyor ve sizden tarih girmenizi istiyor. Ör: cha_tarih BETWEEN ?T1 AND ?T2













SELECT TOP 100 PERCENT


        cari_unvan1 AS [Cari_Adi]
        ,1 AS [Ft_Ad]
        ,cari_vdaire_adi AS [Vergi_Dairesi]
        ,cari_vdaire_no AS [Vergi_No]
        ,dbo.fn_StokAnaGrupIsmi(sth_stok_kod) AS [Satilan_Mal_Cinsi]
        ,sth_miktar AS [Miktar]
        ,dbo.fn_StokBirimi(sth_stok_kod,sth_birim_pntr) AS [Birim]
        ,(sth_tutar - (sth_iskonto1-sth_iskonto2-sth_iskonto3-sth_iskonto4-sth_iskonto5-sth_iskonto6)) 

         AS [Tutar]
        ,sth_vergi AS [KDV]
        ,dbo.fn_VergiYuzde(sth_vergi_pntr) AS [Oran]
 

FROM dbo.CARI_HESAP_HAREKETLERI WITH (NOLOCK, INDEX = NDX_CARI_HESAP_HAREKETLERI_04)
        LEFT OUTER JOIN dbo.STOK_HAREKETLERI WITH(NOLOCK) 

        ON (sth_fat_recid_dbcno = cha_RECid_DBCno AND sth_fat_recid_recno = cha_RECid_RECno)
        LEFT OUTER JOIN dbo.CARI_HESAPLAR WITH(NOLOCK) 

        ON (cha_kod = cari_kod)
WHERE cha_tip = 0 AND cha_cinsi in (6,7) AND cha_evrak_tip = 63 AND  
              cha_normal_Iade = 0 AND cha_tarihi BETWEEN ?T1 AND ?T2 OR (?T1 = ''AND ?T2'') 
             AND sth_stok_kod BETWEEN ?K1 AND ?K2 OR (?K1 = ''AND ?K2='')

9 Ekim 2010 Cumartesi

T-SQL kodu çok mu karmaşık, içinden çıkmak çok mu zor?

Bazen karşımıza düzensiz yazılmış kodlar çıkabiliyor. Bu kodu düzenlemeye çalışarak zaman kaybetmek yerine www.dpriver.com/pp/sqlformat.htm web sitesini ziyaret ederek çok daha hızlı düzenleyebilirsiniz.

Database seçeneklerini de içeriğinde barındıran web sitesi çok başarılı. Bir kenara not almanızı tavsiye ederim.

SQL Server 2008 R2 Standard Edition 'da artık compress backup kullanılabiliyor.

SQL Server 2008 'de Standart Edition sürümü için backup compression dan compress backup seçtiğimizde backup başladıktan kısa bir süre sonra hata veriyordu ve bu özelliğin desteklenmediğini gösteren bir açıklama ile hayal kırıklığı oluşturuyordu.

SQL Server 2008 R2 Standard Edition'da artık bu özelliğide kullanabiliyoruz. Set backup compression 'da compress backup seçerek artık alacağınız yedekleri oldukça küçük boyutlara indirebilirsiniz.

2 Ekim 2010 Cumartesi

Özel klasörlere için yolu bulabilmek. "Environment.SpecialFolder"

Uygulama geliştirirken özel klasörler 'Special Folder' dediğimiz 'Desktop, ApplicationData, Startup, Favorites, ApplicationData, System, ProgramFiles, Favorites' gibi klasörlerde çalışmak gerekekiliyor.

string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Environment.GetFolderPath(Environment.SpecialFolder.System);
Environment.GetFolderPath(Environment.SpecialFolder.Startup);
Environment.GetFolderPath(Environment.SpecialFolder.Programs);
Environment.GetFolderPath(Environment.SpecialFolder.Templates);
Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

SQL Server database leri listelemek.

SQL Server üzerindeki database lerin bir listesine ihtiyacınız olduğundan SqlConnection dan örneklediğimiz sqlConx.GetSchema("Database") method'u ile database listesini alabiliyoruz. 

using System.Data;
using System.Data.SqlClient; 

string conStr = "Data Source = SunucuAdi; User Id = kullaniciAdi; Password = sifre";
using (SqlConnection sqlConx = new SqlConnection(conStr))
{
    try
    {
           sqlConx.Open();
           DataTable tblDatabases = sqlConx.GetSchema("Databases");
           //Elimize dolu bir DataTable geçti bundan sonra ne istersek yapabiliriz.
           sqlConx.Close();

           //Ben ComboBox ta listeledim.
           cbDatabase.DataSource = tblDatabases;
           cbDatabase.DisplayMember = "database_name";
           cbDatabase.ValueMember = "database_name";
           cbDatabase.SelectedIndex = 0;
    }
    catch (SqlException ex)
    {
           MessageBox.Show("Mesaj : " + ex.Message);
    }
}

Dünyaya benzeyen bir gezegen daha mı?

NASA Gliese 581 yıldız sisteminde yer alan gezegen dünyayla aynı koşulları sunduğunu söylüyorlar. Tüm araştırmalar yeni gezegen üzerine yoğunlaştığını anlıyor ve gelecek te iki farklı dünyada mı yaşıyor olacağız diye bir soru sormamak mümkün mü? :) Yada çok zengin kişiler yeni dünyada mı yaşayacaklar. Gelecekte
uzay biliminin çok fazla gelişeceğine inanıyorum. Bilgisayar teknolojiside oldukça ilerlediğini düşünecek olursak, hatta intel'in 32 çekirdekli bir işlemciyi bir araya getirdiğini düşünecek olursak gelecekte çok daha fazla işlemlerin çok daha hızlı yapılacağını düşünebiliriz. Uzay çağına giriş yapan insan oğlu belkide 20 yada 30 yıl sonra çok farklı konumda olacağını düşünüyorum.

Intel 32 çekirdek test planı hakkında : http://software.intel.com/en-us/articles/32-core-testing-plan-rules/

Tabi bizleri yaratan Allah-u Teâlâ teknolojide ne kadar ilerleyeceğimizi ve bunun bir durma yani son noktası olduğunuda bir gün bizlere bildireceğine sanırım hiç şüphe yoktur. Sonu beklemek yada sona giderken ne kadar bilginin işimize yarayacağının bilmekte gerektiğini düşünüyorum.

Birkaç ay önce Stephen Hawking dünyadaki adayaşamın bu yüzyıl içinde başka bir gezegene taşınmaması durumunda tamamen ortadan kaybolacağı ön görüsünde bulunmuştu. Yakın zaman sonra uzaylılarla irtibata geçen ilk kişi olarak seçilmesi beklenen Malezyalı Astrofizikçi Mazlan Othman, çalışmaların hızlandığını, yakın zamanda dünya benzeri bir gezegen bulunacağını öngörmüştü (bu arada BM tarafından uzaylılarla ilk temas için temsilci seçildiği haberinin yalanlandığını not düşelim).

Neyse, neticede beklentiler gerçekleşti ve dünyaya çok benzeyen bir gezegen sonunda keşfedildi. Gliese 581 adlı gezegenin yer aldığı yıldız sistemi 20,3 ışık yılı uzakta bulunuyor. Bugüne kadar astronomlar bu yıldız takımında beş gezegen keşfedilmişti. Ancak hiçbiri dünyanın bizlere sunduğu optimum yaşama düzeyine erişemiyordu. Keşfedilen gezegende durum böyle olmadı.

Sistemin ortasında bulunan yıldıza göre dördüncü sırada bulunan gezegen Gliese 581g, bugüne kadar keşfedilmiş dünyaya en çok benzeyen gezegen olabilir. Hatta gezegen yüzeyinde sıvı halde su bulunduğu tahmin ediliyor.

Su bulunmasının yanında gezegenin atmosfer sıcaklığının da ortalama eksi 31 ile eksi 12 arasında değiştiği belirtildi. Gezegenin dünyanın üç katı büyüklükte olduğu belirtiliyor.

Kaynak : http://www.nasa.gov/topics/universe/features/gliese_581_feature.html
http://www.btnet.com.tr/wps/portal/bilim/uzay-bilimleri/detay?wcm.haberId=btnethaber_1285848472655

Resimlerin büyük hali için linkler.
http://www.nasa.gov/topics/universe/features/Gliese_581_System.html
http://www.nasa.gov/topics/universe/features/Gliese_581.html