27 Nisan 2010 Salı
Microsoft Enterprise Library 5.0 Yayınlandı.
Microsoft Enterprise Library 5.0 Visual Studi 2008 ve 2010 için yayınlandı.
Patterns & Practices – Enterprise Library
http://entlib.codeplex.com/
Patterns & Practices Developer Center
http://msdn.microsoft.com/en-us/library/ff632023.aspx
Download
http://www.microsoft.com/downloads/details.aspx?FamilyId=bcb166f7-dd16-448b-a152-9845760d9b4c&displaylang=en
17 Mart 2010 Çarşamba
TextBox.Enable = False;
13 Mayıs 2009 Çarşamba
C# 4.0 Features
http://adilamughal.blogspot.com/
http://www.codeproject.com/KB/cs/CSharp4_Features.aspx
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Qualification { get; set; }
public string MiddleName { get; set; }
public Employee(string firstName, string lastName)
{
FirstName= firstName;
LastName= lastName;
Qualification= "N/A";
MiddleName= string.Empty;
}
public Employee(string firstName, string lastName, string qualification)
{
FirstName= firstName;
LastName= lastName;
Qualification= qualification;
MiddleName= string.Empty;
}
public Employee(string firstName, string lastName, string qualification, string middleName)
{
FirstName= firstName;
LastName= lastName;
Qualification= qualification;
MiddleName= middleName
}
}
C# 4.0 ile, sadece bir yapıcıyı "constructor" oluşturmaya ihtiyaç duyuluyor.
public Employee(string firstName, string lastName, string qualification = "N/A", string middleName = "")
{
FirstName= firstName;
LastName= lastName;
Qualification= qualification;
MiddleName = middleName;
}
Çok basit :) ve kolayca çağırabilirsin:
Employee(“Adil”,”Mughal”);
Employee emp= newoyee("Adil", "Mughal");
Yapıcıda "constructor" bazı opsiyonel parametreler örneği.
public Employee(string firstName, string lastName, string qualification = "N/A", string middleName = "")
Employee emp= new Employee("Adil", "Mughal");
Employee emp = new Employee("Adil", "Mughal", middleName: "Ahmed");
Query'i cevaplamak için yeteri kadar iyi. :). Employee constructor'da bazı değişiklikleri yapınca ve lastName opsiyonel oldu.
public Employee(string firstName, string lastName = "", string qualification = "N/A", string middleName = "")
Şimdi tamamen basit ve esnek Employee instantiate nesnesi olacaktır.
Employee("Adil", qualification:"BS");
Employee("ABC", lastName: "EFG", qualification: "BS");
Employee("XYZ", middleName: "MNO");
1 Mart 2009 Pazar
Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.
sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'
Sonra da veritabanınızın altındaki security - users bölümünde 'NT AUTHORITY\NETWORK SERVICE' kullanıcısının üzerinde sağ tıklayıp properties seçerek Role Members kıısmından veritabanınız için gerekli (db_datareader, db_datawriter gibi) yetkileri verirseniz hatadan kurtulabilirsiniz.
21 Ocak 2009 Çarşamba
Barkod yazıcısından etiket dökümü.
//YaziciCiktisi Methodunu kullanarak yazıcı ayarları ve seçiminin yapılması istersek print preview ile çıktıyı önce ekrana alabiliriz.
private void YaziciCiktisi()
{
PrintDocument dokuman = new PrintDocument();
PrintDialog yazici = new PrintDialog();
try
{
dokuman.PrintPage += new PrintPageEventHandler(YazdirilacakEtiketBilgileri);
yazici.PrinterSettings = new PrinterSettings();
yazici.Document = dokuman;
yazici.UseEXDialog = true;
if (DialogResult.OK == yazici.ShowDialog(this))
{
dokuman.PrinterSettings.PrinterName = yazici.PrinterSettings.PrinterName;
dokuman.Print();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
dokuman.Dispose();
}
}
//Başlık ve detay satırları şeklinde kullandım. etiketin üst kısmında firma bilgileri ve sonrasında koli içersinendeki ürün bilgileri yazdırdım.
void YazdirilacakEtiketBilgileri(object sender, PrintPageEventArgs e)
{
Font fontFirmaBaslik = new Font("Arial", 12);
Font fontStatik = new Font("Arial", 10);
Font fontDinamikBaslik = new Font("Arial", 9);
Font fontDinamik = new Font("Arial", 7);
e.Graphics.DrawString("FİRMA ÜNVANI", fontFirmaBaslik, Brushes.Black, 130, 10);
e.Graphics.DrawString(lblFirmaUnvani.Text.ToUpper(), fontStatik, Brushes.Black, 10, 40);
e.Graphics.DrawString(": " + txtFirmaUnvani.Text, fontStatik, Brushes.Black, 110, 40);
e.Graphics.DrawString("İLİ", fontStatik, Brushes.Black, 10, 55);
e.Graphics.DrawString(": " + txtIli.Text, fontStatik, Brushes.Black, 110, 55);
e.Graphics.DrawString("ALT MÜŞTERİ", fontStatik, Brushes.Black, 10, 70);
e.Graphics.DrawString(": " + txtAltMusteri.Text, fontStatik, Brushes.Black, 110, 70);
e.Graphics.DrawString(lblIrsaliyeNo.Text.ToUpper(), fontStatik, Brushes.Black, 10, 85);
e.Graphics.DrawString(": " + txtIrsaliyeSeriSiraNo.Text, fontStatik, Brushes.Black, 110, 85);
e.Graphics.DrawString(lblKoliBilgisi.Text.ToUpper(), fontStatik, Brushes.Black, 200, 85);
e.Graphics.DrawString("ÜRÜN KODU", fontDinamikBaslik, Brushes.Black, 10, 120);
e.Graphics.DrawString("ÜRÜN ADI", fontDinamikBaslik, Brushes.Black, 110, 120);
e.Graphics.DrawString("MİKTAR", fontDinamikBaslik, Brushes.Black, 300, 120);
e.Graphics.DrawString("BİRİM", fontDinamikBaslik, Brushes.Black, 350, 120);
int satir = 135, koliNo = 0;
if (_yazKoliNo > 0) koliNo = _yazKoliNo;
else koliNo = _koliNo;
//Detay satırlarını yazdırıyoruz.
for (int i = 0; i < dgSiparisListesi.Rows.Count; i++)
{
if (Convert.ToInt32(dgSiparisListesi.Rows[i].Cells["KOLI"].Value) == koliNo)
{
e.Graphics.DrawString(dgSiparisListesi.Rows[i].Cells["sip_stok_kod"].Value.ToString(), fontDinamik, Brushes.Black, 10, satir);
e.Graphics.DrawString(dgSiparisListesi.Rows[i].Cells["sto_isim"].Value.ToString(), fontDinamik, Brushes.Black, 110, satir);
e.Graphics.DrawString(dgSiparisListesi.Rows[i].Cells["MIKTAR"].Value.ToString(), fontDinamik, Brushes.Black, 310, satir);
e.Graphics.DrawString("ADET", fontDinamik, Brushes.Black, 350, satir);
satir = satir + 15;
}
}
}
2 Ekim 2008 Perşembe
.Net 3.5 ve LINQ
.Net Framework 3.5 ile bir projeye oluşturup LINQ to SQL Classes ekliyoruz. Bu sınıf veritabanı ile ilgili bilgileri barındırıyor. Server Explorerdan kullanacağımız veritabanını Data Connection yardımı ile ekliyoruz. Oluşan Data Connection dan kullanacağımız Tablo, Functions ve Stored Procedures 'leri ekliyoruz.
Sınıfın (Class) için verdiğiniz isimnin sonuna "Veritabanı Adı + " "DataContext" ekliyor. İlgili sınıfı örneklediğinizde artık tablo ve alanlara kolaylıkla erişebiliyorsunuz.
VeritabaniDataContext vt = new VeritabaniDataContext();
SQL Server 2008 kullanmanızıda şiddetle önerebilirim. T-SQL ile sorgular yazmak oldukça kolaylaşıyor. Tablo isimleri, alan isimleri vs bir boşluk tuşu kadar yakın.
Arada bir gözleri dinlendirmeyi ihmal etmeyin gözlerimiz en değerli organımızdır.
Linq'de Left Outer Join kullanmak.
Başta biraz uğraştırdı ama LINQ ile LEFT OUTER JOIN kullanmak isterseniz. Çok da zor değilmiş. :)
var sorguSiparisler = (from s in vt.SIPARISLERs
join b in vt.BARKOD_TANIMLARIs on s.sip_stok_kod equals b.bar_stokkodu
into tempBARKOD_TANIMLARIs from b in tempBARKOD_TANIMLARIs.DefaultIfEmpty()
orderby s.sip_stok_kod
where s.sip_evrakno_sira == Convert.ToInt32(btnSipGetir.Text)
select new { s.sip_stok_kod, b.bar_kodu, s.sip_miktar });
21 Ağustos 2008 Perşembe
Access Database'inden System Database Referansı İçin Connection String
Access database ile çok fazla uğraşmamıştım ama SystemDb kullanarak da verileri hiç çekmemiştim. Her şeyin bir ilki vardır diyerek atıldım işe.
Geçenlerde IBM SurePOS 700 kasalarda kullanılan Genius v2.2 database inden satış bilgilerini ticari programa satış irsaliyesi olarak oluşturmak amaçlı program yazmam gerekiyordu. Atıldığım işten altaki bağlantı satırı ortaya çıktı. İhtiyacı olanlar için...
Ufak bir hatırlatma eğer x64 sistem kullanıyor iseniz "Provider=Microsoft.Jet.OLEDB.4.0" desteklemiyor. Yazdığınız uygulamanın properties'inden Build sekmesinde Platform target seçeneğini x86 olarak değiştirin.
string oleDbConStr = @"Provider=Microsoft.Jet.OLEDB.4.0; Password=sifre; Persist Security Info=True; User ID=Kullanici Adi; Data Source=C:\Data Files\DataDb.mdb; Jet OLEDB:System database=C:\Data Files\SystemDb.mdw; Jet OLEDB:Database Password=Db Sifresi";
20 Ağustos 2008 Çarşamba
Visual Studio 2008 ve .NET Framework 3.5 SP1
İşte düzeltmelerde geldi.
- WPF uygulamaları için %20-45 arası performans iyileştirmeleri.
- SQL Server 2008'i desteklemek için data platform tarafında, ADO.NET Entity Framework, ADO.NET Data Services başta olmak üzere gelen yenilikler.
- WPF uygulamaları için daha gelişmiş tasarımcılar.
- Visual Studio 2008'in SQL Server 2008'i tam olarak desteklemesi.
- TFS tarafında müşteri geribildirimleri sonucu eklenmiş özellikler, iş maddesi ön izleme ile geliştirilmiş e-mail entegrasyonu ve SQL 2008 üzerinde TFS'in host edilmesi desteği.
Installer için link.
ISO için link.
Visual Studio 2008 SP1 ve .NET Framework 3.5 SP1'ı hızlıca yüklemenizi tavsiye ederim.