C# Open File Dialog ile Excelden Veri Çekmek

Ocak 31, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selamlar arkadaşlar,
Bu dersimizde Open File dialog kullanarak kullaran bir excel dosyasından veri çekip o verileri bir datatable'a doldurarak gridControl'e yazdırma işlemini görelim.
Formumuz da bir button ve bir gridControl(Devexpress) olsun. Button'un click eventinin altına;
C#
using System.Data.OleDb; // ekleyelim

         OpenFileDialog OFD = new OpenFileDialog()
            {
                Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls",
                // open file dialog açıldığında sadece excel dosyalarınu görecek
                Title = "Excel Dosyası Seçiniz..",
                // open file dialog penceresinin başlığı
                RestoreDirectory = true,
                // en son açtığı klasörü gösterir. Örn en son excel dosyasını D://Exceller adlı
                // bir klasörden çekmiş olsun. Bir sonraki open file dialog açıldığında yine aynı 
                // klasörü gösterecektir.
            };
            // bu da bir kullanım şeklidir. Aslında bu şekilde kullanmak daha faydalıdır. 
            // bir çok intelligence aracı bu şekilde kullanılmasını tavsiye ediyor.
            if (OFD.ShowDialog() == DialogResult.OK)
                // perncere açıldığında dosya seçildi ise yapılacak. Bunu yazmazsak dosya seçmeden 
                // kapandığında program kırılacaktır.
            {
                DosyaYolu = OFD.FileName;// dosya yolu
                DosyaAdi = OFD.SafeFileName; // dosya adı

                OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DosyaYolu + "; Extended Properties='Excel 12.0 xml;HDR=YES;'");
                // excel dosyasına access db gibi bağlanıyoruz.
                baglanti.Open();
                OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sayfa1$]", baglanti);
                // burada FROM dan sonra sayfa1$ kısmı önemlidir.sayfa adı faklı ise örn
                // sheet ise program hata verecektir.
                // NOT: Excel dosyanızın ilk satır başlık olsun. Yani sistem öyle algıladığından 
                // ilk satırdaki bilgileri başlık olarak tanımlayıp almıyor. Ne yazarsanız yazın
                // sorun teşkil etmiyor. Tabi db için özel olan karakterleri kullanmayın.
                DataTable DTexcel = new DataTable();                
                da.Fill(DTexcel);
                // select sorgusu ile okunan verileri datatable'ye aktarıyoruz.

                gridControl1.DataSource = DTexcel;
                // datatable'ı da gridcontrol'ün datasource'una atıyoruz.

                baglanti.Close();
                // bağlantıyı kapatıyoruz.
             }
kodlarını yazdıktan sonra, build edip denediğiniz de sorunsuzca verilerin dolduğunu göreceksiniz.
Bu dersimizde bu kadar arkadaşlar.
İyi kodlamalar.

0 Yorum:

Excel Sabit Hücre ile Bir Stunu İşleme Sokma

Ocak 28, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selam arkadaşlar,
Bu dersimizde bir excel tablosunda bütün bir stunu nasıl tek bir hücre ile işleme sokarız ona bakalım.

Yukarıdaki resimde de gördüğünüz gibi  " $ " işareti yani dolar simgesi ile formül içerisindeki hücreyi sabitlediğimizde hücredeki formülü aşağı doğru uzattığınızda C11 hücresi $C$11 şeklinde olduğunda hep aynı kalacaktır ve F4 hücresi değişecektir.

Bu dersimizde bu kadar arkadaşlar.
http://mustafabukulmez.com/

0 Yorum:

C# Date Değişkenini Sayı Değerine Dönüştürme

Ocak 28, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selam arkadaşlar,
Bu dersimizde bir tarih değişkenini sayısal değerini nasıl bulacağımzı göreceğiz. Bunu Excel'de çok kolay yapabilirsiniz. Hücrelerden birine herhangi bir tarih yazın ve o hücreyü sayı olarak biçimlendirin. Bazı işlemlerde bize tamda o değer lazım olabiliyor. Yaptığım bir projede bana da lazım oldu o yüzden araştırıp buldum ve sizlerle de paylaşmak istedim. 
Bu dönüştürmedeki mantık yaptığım araştırmalara göre şu şekilde ( 
01/01/1900
 = 1 ) yani 01.01.1900 tarihinin sayısal değeri 1 olarak alınıyor. Bugünün tarihine bakarsak 27.01.2017 = 42762 olarak çıkıyor. Fazla uzatmadan kodları vereyim. Zaten çok kısa bir kod.
C#
 DateTime dt = Convert.ToDateTime(DAT_TARIHI.EditValue);
 int DateToInt = Convert.ToInt32(dt.ToOADate());
 MessageBox.Show(DateToInt.ToString());
Yukarıda gördüğünüz kodlardan istediğimizi yapan fonksiyon
C#
.ToOADate()
 fonksiyonudur. 
NOT 1 : DateTime.Now; olark ayarladığımda sonuç 42763 olarak çıktığı için DateEdit nesnesine yazdıktan sonra işlemi yaptırdım.
NOT 2 : DateEdit nesnesi DevExpress nesnesidir. Kullanmıyorsanız DevExpress'i kullanmanızı tavsiye ederim.
Bu dersimizde bu kadar arkadaşlar.
Kendinize iyi bakın.
http://mustafabukulmez.com/

0 Yorum:

C# Datatable İstenen Stundaki Max Değeri Bulmak

Ocak 28, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selamlar arkadaşlar,
Bu dersimizde bir datatable içerisindeki istediğimiz bir stundaki en büyük değeri nasıl bulabiliriz ona bir bakalım. Çok kısa bir işlemdir.
C#
int maxID = MyDataTable.AsEnumerable().Max(r => r.Field<int>("MyColumn"));
Hepsi bu kadar arkadaşlar. Max yerine min yazarakta da min değeri alabilirsiniz.
Bu dersimizde bu kadar arkadaşlar.
Kendinize iyi bakın.
http://mustafabukulmez.com/

0 Yorum:

C# İki Tarih Arasındaki Gün Sayısını Bulmak

Ocak 28, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selam arkadaşlar,
Bu dersimiz de C# ile iki tarih arasındaki günlerin sayısını nasıl bulacağımızı görelim. Çok kısa bir işlemdir.
C#
(baslangicTarihi - bitisTarihi).TotalDays
baslangicTarihi ve bitisTarihi datetime türünde olmalıdır.

Bu dersimizde bu kadar arkadaşlar.
http://mustafabukulmez.com/

0 Yorum:

#7 MSSQL Eğitim Seti Tablo Güncelleme - Alter

Ocak 26, 2017 Mustafa BÜKÜLMEZ 0 Yorum


Selamlar arkadaşlar,


Bu dersimizde önceden açtığımız tabloların stunları güncellemeyi yada yeni stun eklemeyi göreceğiz. Bu basit projelerde olmasada büyük projelerde işinize yarayacaktır. Atıyorum bir ön muhasebe programı hazırladınız ve daha sonra güncelleme yapmanız gerekti. Bu güncellemede de tablolarınıza bir stun daha eklemeniz gerekirse nasıl olacak bu iş. Tabloyu silip yeniden de açtıramazsınız. İşte burada devreye Alter komutu giriyor. Nasıl kullanıldığına bir bakalım.


Ancak bunu önceki derslerimde anlattığım gibi otomatik oluşturamıyorsunuz. En azından SQL 2014'de pasif durumda. Görünüyor ama pasif. Bu yüzden komutlarımızı elle yazacağız.


Görelim;


Tabloya yeni kolon eklemek:


ALTER TABLE Tablo_adi   ADD  Alan_adi   Alan_türü


Tablo adını yazdıktan sonra ekleyeceğimiz kolon adını ve türünü de yazıyoruz.


Örn 1: ALTER TABLE Kategoriler ADD  Kat_Sure  int


Örn 2:  ALTER TABLE  Personel  ADD  DogumYeri  nvarchar(50)


Personel tablomuza DogumYeri  stununu ekleyip türünü nvarchar(50) yaptık.


Hem kolon ekleyip hemde kolonumuzu özelleştirebiliriz.


Örn 3: ALTER TABLE  Personel  ADD  Cinsiyet  Bit  Not Null  Default ((0))


Personel tablomuza Cinsiyet stunu ekledik, boş olmasın dedik ve default olarak false olsun dedik.(Önceki derslerimizden hatırlayın ;) )


Tabloya birden fazla kolon eklemek:


ALTER TABLE  Tablo_adi   ADD  (Alan_adi1  Alan_türü1, Alan_adi2  Alan_türü2)


Tablomuza aynı anda birden fazla kolonu parantez içerisinde virgül ile ayırarak ekleyebiliriz.


Örn 4: ALTER TABLE  Personel  ADD  ( TCKimlikNo  int not null,  SSKNo int null)


Personel tablomuza tc no ve ssk no stunlarını ekledik ve özelleştirdik.


Tabloya Primary Key eklemek:


ALTER TABLE  Tablo_adi ADD PRIMARY KEY  (Alan_adi)


Örn 5: ALTER TABLE  Personel  Add  Primary Key (Id)


Personel tablomuzda bulunan Id stununu primary key yaptık.


Örn 6: ALTER TABLE  Personel add  ID2  int Not Null  IDENTITY(1,1) Primary Key


Personel tablomuza ID2 stununu ekledik, int olacak dedik, boş olmayacak dedik, bir bir otomatik artan sayı dedik ve primary key (birincil anahtar) olsun dedik.


Tablodaki alanin Primary Key özelligini silmek: 


ALTER TABLE  Tablo_adi   DROP CONSTRAINT Alan_adi


Bu komuta baktığımızda Drop ve Constraint komutlarını görüyoruz. Drop " sil " anlamına; Constraint ise kısıtlama anlamına gelir. Yani biz burada ilgili stundaki kısıtlamayı sil demiş olduk. Kısıtlamamız ise Primary Key... (Bu konuyu ileride daha derinlemesine göreceğiz bu yüzden hızlıca geçiyorum. Şimdilik bunu bilmeniz yeterlidir.)


Örn 7: ALTER TABLE  Personel  Drop Constraint   Id


Bu örnekte Personel tablomuzdaki Id stununun primary key özelliğini sildik.


Tablodaki kolona ait bilgileri degistirmek:


ALTER TABLE Tablo_adi  ALTER COLUMN alan_adi   alan_türü


Bu komut ile tablomuzdaki kolonun türünü değiştirebiliriz.


Örn 8: ALTER TABLE Personel  Alter Column  SSKNo Varchar(20)


Az önce personel tablomuza int olarak eklediğimiz alanı Varchar(20) olarak değiştirdik.


Örn 9: ALTER TABLE Personel  Alter Column   TcNo  int  null


Az önce boş olamaz olarak eklediğimiz TcNo stununun boş kalabilir olarak değiştirdik.


Tablodaki bir kolonu silmek:


ALTER TABLE Tablo_adi DROP COLUMN alan_adi


Bu komut ile tablomuzdaki bir kolonu silebiliriz. (Bunu dikkatli kullanmalıyız.)


Örn 10: Alter Table Personel Drop Column SSKNo


Az önce eklediğimiz sskno stununu sildik.


NOT: Tablomuzda bulunan bir alani sildigimizde, o alandaki bütün datalar silinir. Eger sildigimiz alan composite primary key ise, hem o alan silinir hem de tabloda yinelenen kayitlar silinir.


Birleşik Anahtar(Composite Key): Birden fazla alanın birleştirilmesiyle birincil anahtar görevini üstlenecek tanımlamalar yapılabilir. Bunlar birleşik anahtar olarak adlandırılır.


Bundan sonraki dersimiz çok önemlidir. Hazırlaması uzun sürebilir. Çünkü en çok kullanacağımız ve kullanılacak çok fazla yöntemi var. Bu konuyu ayrıntılı bir şekilde anlatmak istiyorum.


Bu dersimizde bu kadar arkadaşlar. Bir sonraki dersimizde görüşmek üzere.

0 Yorum:

#6 MSSQL Eğitim Seti Tablo Silme ve Oluşturma - Drop and Create

Ocak 26, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selamlar arkadaşlar,


Bu dersimizde yine otomatik script oluşturmada yer alan " Drop And Create To " yu göreceğiz. Bu komut tabloyu silip ardından yenisi açmaktadır. Kullanabilceğimiz bazı yerler var. Gerçi bunu drop ve create scriptlerini ayrı ayrı alarak da yapabilirsiniz ama adamlar bunu da kolaylık olsun diye eklemiş.


DROP TABLE [dbo].[Kategoriler]


CREATE TABLE [dbo].[Kategoriler](

    [Kat_RECno] [int] IDENTITY(1,1) NOT NULL,

    [Kat_Adi] [nvarchar](150) NULL,

    [Kat_Tur] [nvarchar](150) NULL,

    [Kat_Aciklama] [nvarchar](500) NULL,

    [Kaydeden] [nvarchar](150) NULL,

    [Kayit_Tarih] [datetime] NULL,

    [Degistiren] [nvarchar](50) NULL,

    [Degistirme_Tarih] [datetime] NULL,

    [Silen] [nvarchar](50) NULL,

    [Silme_Tarih] [datetime] NULL,

    [Silindi] [bit] NULL,

    [Aktif] [bit] NULL)


Hepsi bu kadar arkadaşlar. Tek güzel yanı tek seferde bunu alabiliyoruz o kadar.


Bu kısımlarda anlatılacak çok fazla konu var ama başlangıç olarak bu bilgiler size yetecektir. İlerleyen zamanlarda başa dönüp daha derinlere de ineceğiz.


Şimdilik bu kadar. Diğer dersimizde görüşürüz.

0 Yorum:

#5 MSSQL Eğitim Seti Tablo Silme - Drop

Ocak 26, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selamlar arkadaşlar,
Bu dersimizde tablo silme işlemini anlatacağım. Neredeyse hiç kullanmadım. Aslında hiç kullanmadım. Bu yüzden genel bir bilgi verip geçeceğim. Zaten sizde çok fazla kullanamazsınız.
Önceki derslerde anlatmıştım. Bu komutu da otomatik oluşturabilirsiniz. Bu sefer " DROP TO " yu seçeceksiniz.
DROP TABLE [dbo].[Kategoriler]


Hepsi bu kadar arkadaşlar. Bu komut ile tablomuzu tamamen silebiliriz.
http://mustafabukulmez.com/

0 Yorum:

#4 MSSQL Eğitim Seti Tablodaki Veriyi Silme - Delete

Ocak 26, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selam arkadaşlar,


Bu dersimizde tablodaki veriyi tamamen nasıl sileriz ona bir bakalım. Yine önceki derslerimizde anlattığımız gibi otomatik olarak oluşturulabilir. Bu seferde "DELETE To" 'yu seçmeniz gerek.


DELETE FROM [dbo].[Kategoriler]

      WHERE Search Conditions,,>


Delete script'imiz bu şekildedir ve yine bir şarta göre işlem yapılır. Şart koşulmazsa Allah muhafaza tablounuz tertemiz oluverir... :)


Bu komutumuzda kolon adlarına gerek duymuyoruz tek ihtiyacımız olan bir şart koşmak.


DELETE FROM [dbo].[Kategoriler] WHERE Silindi = 1


İşte bu kadar Silindi kolonu 1 olan bütün kayıtlar tamamen silinecektir.


Burada anlatılacak pek bir şey yok. Zaten bende neredeyse hiç kullanmıyorum. Kullandığım yerlerden birine örnek vereyim.


DELETE FROM [dbo].[Kategoriler] WHERE Kat_Adi = '"+Textbox1.Text+"'


yazıp altına da insertini yazıyorum. Bundaki amacım  tablodan aynı isimden iki tane olmaması için. Bu isim tabloda var mı yokmu varsa uyarı versin yoksa kaydetsin işlemleri ile uğraşmak zoruma gittiği için bu şekilde kullanıyorum. Tabi her yerde ve her zaman olmuyor bu bazen uğraşmak gerekiyor.


Çünkü ben çoğu zaman insert yaparken (örn makale ) tablolara adını değil RECno sunu yazıyorum. bir yerde göstermek istediğimde ise kategori tablosuna git RECno su örn 5 olan kaydon kategori adını getir diye kod yazıyorum. Bunu bundan sonraki derste anlatacağım.O dersimiz biraz uzun olacak muhtemelen iki yada 3 parçada anca biter çünkü en çok kullanacağımız ve en fazla kullanım şekli olan konudur.


Bu dersimizde bu kadar arkadaşlar diğer dersimizde görüşürüz.
http://mustafabukulmez.com/

0 Yorum:

#3 MSSQL Eğitim Seti Tablodaki Veriyi Düzeltme - Update

Ocak 26, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selamlar arkadaşlar,


Bu dersimizde tabloya kaydettiğimiz verileri nasıl düzenleriz ona bakacağız. 


Önceki derslerimizdeki örneklerden devam edeceğim. Hemen dersimizde geçelim ve bir update script'i nasıl onu görelim. Ve yine elle yazmamıza gerek yok. Önceki dersimizde nasıl otomatik oluşturacağımızı anlatmıştım. Tek farkı bu sefer "UPDATE To" yu seçeceksiniz.


Update Sctiptimiz;


UPDATE [dbo].[Kategoriler]

   SET [Kat_Adi] = 

      ,[Kat_Aciklama] = 

      ,[Kaydeden] = 

      ,[Kayit_Tarih] = 

      ,[Degistiren] = 

      ,[Degistirme_Tarih] = 

      ,[Silen] = 

      ,[Silme_Tarih] = 

      ,[Silindi] = 

      ,[Aktif] = 

 WHERE


bu şekildedir ve otomatik oluşturma ile alınmıştır. İnsert komutundan biraz farklı olarak Update komutunda kolonlar ve güncellenecek değerler aralarında eşittir (=) ile yan yana olup bir şarta göre işlem yapılır. Eğer bir şarta bağlamazsak tüm tablodaki değerler güncellenir ki bu da bizi bitirebilir. Çok ciddi sorunlarla karşılaşabiliriz. En kötü yanı burada CTRL + Z işe yaramaz :)


Şimdi dolu bir scripti görelim;


NOT: Insert yaparken her kolona bir veri yazmamız gerekiyordu ama update' de sadece güncellemek istediğimiz kolonları yazmamız gerekiyor.


UPDATE [dbo].[Kategoriler]

   SET [Kat_Adi] = 'Kategori Adı'    

      ,[Degistiren] = 'Mustafa BÜKÜLMEZ'

      ,[Degistirme_Tarih] = '20161029'

 WHERE Kat_RECno = 1


Yukarıdaki örneğimizde RECno'su 1 olan kaydın kategori adını, değiştiren kişiyi ve değiştirilme tarihini güncelledik. Diğer kolonları güncellememize gerek yoktur.


Şimdi diyelimki bir kategoriyi sileceğiz. O zaman ne yapmalıyız? Önceki derslerimizde bahsettiğim genel kolonları kullancağız.


UPDATE [dbo].[Kategoriler]

   SET [Silen] = 'Mustafa BÜKÜLMEZ'

      ,[Silme_Tarih] = '20161029'

      ,[Silindi] = 'true'

 WHERE Kat_RECno = 1


Yukarıdaki örneğimizde RECno'su 1 olan kategoriyi silmiş olduk. Fiziksel olarak veri hala orada ama sadece hiçbir yerde bir daha görünmemesini istedik. İleriki bir zamanda bir sorun yaşarsak kimin sildiğini tabloya bakarak görebileceğiz.


NOT: Önceki dersimizde yine bahsetmiştim. Kolonun veri tipi tarih ama tek tırnak ile kayıt yapabiliyoruz diye. Bakın yine karşımıza geldi. Silindi kolonunun veri tipi " bit " 'tir yani ya " true " yada " false " olmak zorunda yani " Bool " bir değer olmak zorundadır. Peki ama biz oraya string bir veri gönderdik nasıl olacak? Arkadaaşlar yine burada string değer gönderiyoruz ama yazdığımız string değeri SQL kontrol edildiğinde içeriğinin bool bir ifade olduğunu anlayıp ona göre değeri alıyor ve işlemi hatasız yapıyor. Burada " true " yerine " 1 " de yazabilirdik ki buda integer bir değerdir. Buradaki gerekli düzenlemeleri SQL kendi halledip değeri algılayıp işlemi gerçekleştiriyor.


Update konusunda her zaman RECno(ID) yi kullanarak güncelleme yapmayız. Çünkü RECno ile güncelleme yaparsak sadece bir kaydı güncelleyebiliriz. Ya biz tek seferde 10-15 kaydı güncellemek istiyorsak. Bunun için güncelleme yapacağız satırların bir ortak noktası olmak zorundadır.


Farzedelim ki kategoriler tablomuzdaki silinmiş olan satırları geri getirmek istiyoruz. Yani hiç silinmemiş gibi olsunlar;


UPDATE [dbo].[Kategoriler]

   SET [Silen] = ''

      ,[Silme_Tarih] = '20000101'

      ,[Silindi] = 'false'

      ,Degistiren 'Mustada BÜKÜLMEZ'

      ,Degistirme_Tarih = '20161029'

 WHERE Silindi = 1


Evet yukarıdaki örneğimizde silinmiş olan kategorileri geri getirmiş olduk. Bu işlemi yaparkende Değiştiren ve Değiştirme Tarihi bilgilerinide işlem anındaki bilgiler olarak güncelledik.


NOT: Örneğe baktığımızda Silindi = 'false' derken where şartında Silindi = 1 dedik. Sorunsuz çalışacaktır. 


* Birden fazla şartı olan UPDATE


Şimdi buraya kadar her şey tamam. Ya iki yada daha fazla şart koşmamız gerekirse nasıl yapacağız?.


UPDATE [dbo].[Kategoriler]

   SET [Silen] = ''

      ,[Silme_Tarih] = '20000101'

      ,[Silindi] = 0

 WHERE Silindi = 1 and Silen = 'Mustafa BÜKÜLMEZ' 


Bu örneğimizde Silindi kolonu 1 yani true olan ve silen kolonunun Mustafa BÜKÜLMEZ olduğu bütün kayıtları silinmemiş olarak güncelledik. Bunu sağlayan şey aradaki " AND " dir. AND " ve " anlamına gelir ve işlemin yapılması için iki şartında sağlanması gerekir. Yan hem Silindi kolonu true olacak hemde Silin kolonu Mustafa BÜKÜLMEZ olacak. Bu iki şart sağlanıyorsa güncelleme yapılır sağlamıyorsa yapılmaz.


UPDATE [dbo].[Kategoriler]

   SET [Silen] = ''

      ,[Silme_Tarih] = '20000101'

      ,[Silindi] = 0

 WHERE Silindi = 1 or Silen = 'Mustafa BÜKÜLMEZ' 


Bu örneğimizde de iki şartımız var fakat arada " OR " var bu da " veya " anlamına gelir. Silindi kolonu true olan YADA Silen kolonu Mustafa BÜKÜLMEZ olan bütün kayıtlar güncellenecektir.


Birinci örnekteki işlem ile ikinci örnekleri işlemde güncellenen kayıt sayıları farklıdır. İkinci örnekte daha fazla satır güncellenir. Çünkü şartı sağlayan daha fazla kayıt olacaktır.


Şimdi bir örnek daha yapalım ve bu sefer ikisinide kullanalım.


UPDATE [dbo].[Kategoriler]

   SET [Silen] = ''

      ,[Silme_Tarih] = '20000101'

      ,[Silindi] = 0

 WHERE Silindi = 1 and ( Silen = 'Mustafa BÜKÜLMEZ' or Degistiren = 'Mustafa BÜKÜLMEZ' or Kaydeden='Mustafa BÜKÜLMEZ')


Bu örneğimizde hem AND hemde OR kullandık ama dikkat ettiyseniz OR komutları parantez içerisindedir. Eğer OR'ları paranteze koymazsak. Silindi ve Silen şartlarının ikisi yada diğerlerinin şartına bakacaktır. Biraz daha açarsak.


Biz burada yapılmasını istediğimiz işlem;


Silindi 1 ve diğerlerinden herhangi biri Mustafa BÜKÜLMEZ ise güncellemeyi yap değilse yapma. Yani bir kaydın Kaydeden, Değiştiren ve Silindi kolonları Mustafa BÜKÜLMEZ olsa dahi eğer Silindi 1 değilse işlem yapılmaz.


Bu dersimizde bu kadar arkadaşlar diğer derslerimizde görüşmek üzere.
http://mustafabukulmez.com/

0 Yorum:

#2 MSSQL Eğitim Seti Tabloya Veri Kaydetme - Insert

Ocak 26, 2017 Mustafa BÜKÜLMEZ 0 Yorum

2 - INSERT INTO


Selamlar,


MSSQL Başlangıç Eğitim Setimizin 2.dersi olan Insert konusundan devam ediyoruz.


Önceki dersimizde tablonun nasıl açılağından, genel stunlardan, tablo açılırken dikkat edilmesi gerekenlerden ve bir kaç püf noktadan bahsettik. Artık kayıtlarımızı kaydedelim.


Bu komut ile tablolarımıza birşeyler kaydederiz. Kullanımı basittir. Bu konuda verebileceğim pek bir püf nokta yok.


SQL server programında tablo üzerinde sağ tık yapıp "Script Table As" dediğinizde otomatik olarak tablo ile ilgili scriptleri oluşturabilirsiniz. Elle yazmanıza gerek yoktur.


Tablo üzerinde sağ tık / Scipt Table As / INSERT To / New Query Editor Window


yolunu izleyerek hazır sorguyu alabilirsiniz. Bize aşağıdaki gibi bir script verecektir.


INSERT INTO [dbo].[Kategoriler]

           ([Kat_Adi]

           ,[Kat_Tur]

           ,[Kat_Aciklama]

           ,[Kaydeden]

           ,[Kayit_Tarih]

           ,[Degistiren]

           ,[Degistirme_Tarih]

           ,[Silen]

           ,[Silme_Tarih]

           ,[Silindi]

           ,[Aktif])

     VALUES

           (

           ,

           ,

           ,

           ,

           ,

           ,

           ,

           ,

           ,

           ,)


Values kısmındaki yazıları insert edeceğimiz verileri aldığımız nesneleri yazıp sorgumuzu çalıştırıyoruz. SQL tarafında çalışan sorgu bu şekilde olacaktır.


INSERT INTO [dbo].[Kategoriler]

           ([Kat_Adi]

           ,[Kat_Aciklama]

           ,[Kaydeden]

           ,[Kayit_Tarih]

           ,[Degistiren]

           ,[Degistirme_Tarih]

           ,[Silen]

           ,[Silme_Tarih]

           ,[Silindi]

           ,[Aktif])

     VALUES

           ('Blog'

           ,'Açıklama'

           ,'Mustafa BÜKÜLMEZ'

           ,'20161029'

           ,''

           ,'20000101'

           ,''

           ,'20000101'

           ,0

           ,1)


Şimdi yukarıdaki örneği irdeleyelim.


1 - SQL de metin kaydetmek için tek tırnak kullanırız ( ' ' ) ancak veri türüne göre de tek tırnak kullanabiliriz. Örnekte gördüğünüz gibi tarih alanları da tek tırnak içerisindedir. Ama bu demek değil ki normal bir yazı kaydedilebilir. SQL de tarih kaydedebilmek için metnin bir tarih belirtmesi ve formatının YIL AY GÜN olması gerekmektedir. Ancak burada da bir ayrım var. Script kullanarak bu şekilde insert edebilirisiniz ama tabloyu açıp manuel güncellemek isterseniz de 29.10.2016 şeklinde yazmanız gerekir.


// DateTime1.Text.ToString("yyyyMMdd"));


Peki değiştirme tarihi ile silme tarihini neden öyle bir tarih yazdım ve değiştiren ve silen bilgisi neden boş?.


Tarihler konusunda ben tabloda "NULL" yazısını görmeyi sevmiyorum. Kontrol yapmam gerektiğinde NULL lardan arada kalanları göremiyorum. Bu sadece tarih verileri için değil boş bırakmama bende bir huy olmuştur. Çünkü bir arama yaptırmak istediğimde NULL alanlar yüzünden sıkıntı yaşadığım oldu zamanında....Kısacası tabloyu açtığımda NULL görmek istemememdir.


Şimdi söylemezdem olmaz. Programlamada ( '' ) bu boş değildir. Programalama gerçek boş alan NULL alandır. İki tek tırnak varsa bu da boştur ama ASCII listesinde de boşluk bırakmaya yarayan bir kod vardır. Yani bize göre boş ama bilgisayara göre boş değil. Çünkü o boşluğun bile bir karşılığı vardır.


Nesnelerden veri alarak nasıl yaparız ona da bakalım.


INSERT INTO [dbo].[Kategoriler]

           ([Kat_Adi]

           ,[Kat_Aciklama]

           ,[Kaydeden]

           ,[Kayit_Tarih]

           ,[Degistiren]

           ,[Degistirme_Tarih]

           ,[Silen]

           ,[Silme_Tarih]

           ,[Silindi]

           ,[Aktif])

     VALUES

           ('CMB_KATEGORI.SelectedText'

           ,'TXT_ACIKLAMA.Text'

           ,'Session["Kullanıcı_Adı"].ToString()'

           ,'20161029'

           ,''

           ,'20000101'

           ,''

           ,'20000101'

           ,0

           ,1)


Yukarıdaki örnekte asp.net projesi için verilmiş bir örnektir. (Session[""] asp.net'te var çünkü :) ) Ben projelerimde genel bir class kullanırım ve o class'ın içerisinde de değişkenler ile kullanıcı bilgilerini saklarım.


Global_System (Class'ımın Adı)


public static string KullanıcıAdi = "";


...


Tekrar bakalım,


INSERT INTO [dbo].[Kategoriler]

           ([Kat_Adi]

           ,[Kat_Aciklama]

           ,[Kaydeden]

           ,[Kayit_Tarih]

           ,[Degistiren]

           ,[Degistirme_Tarih]

           ,[Silen]

           ,[Silme_Tarih]

           ,[Silindi]

           ,[Aktif])

     VALUES

           ('CMB_KATEGORI.SelectedText'

           ,'TXT_ACIKLAMA.Text'

           ,'"+ Global_System.KullanıcıAdi+"  '

           ,'20161029'

           ,''

           ,'20000101'

           ,''

           ,'20000101'

           ,0

           ,1)


Diğer alanlar standart olarak bu şekildedir. İlgili işlemde gerekli yerleri güncellerim. İnsert işlemi yaparken bütün alanları bir kere doldurun.


INSERT işlemi yaparken verileri birleştirerek kullanabilirsiniz. Örn


 ,' " + Global_System.KullanıcıID + " ' + ' Kodlu ' + ' " +  Global_System.KullanıcıAdi + " '


şeklinde 2 farklı veriyi tek alana yazabilirsiniz.


Class'lardan da bahsettik. Eğer C# ile uğraşıyorsanız,




dersime göz atabilirisiniz.
http://mustafabukulmez.com/

0 Yorum: