![]() |
|
|
#1 (permalink) |
|
*BUNALIMLARIN ADMİNİ*
![]() |
Veri Sorgulama
TQuery Kontrolü İle Veri Sorgulama Delphi'de Veri Sorgulama işlemi TQuery kontrolü ile olur. TQuery kontrolüne ait SQL özelliği; hem bir editör olarak ve hem de doğrudan SQL komutları yazılıp çalıştırılmak suretiyle kullanılan bir özelliktir. Şimdi Query1 kontrolüyle sorgulama işlemlerine başlayalım. Tüm Sütunları Listelemek Aşağıdaki örneği inceleyelim. Örnek: liste.dbf adlı veri tabanımız olsun. Bunu Query1 kontrolü ile sorgulayıp listelemek istiyoruz. Bunun için yapmamız gerekenler şunlardır. İlk önce formumuza Data Access kısmından Query1 bileşeni ile DataSource1 bileşeni yerleştirelim. DataSource1'in Dataset özelliğini Query1 yapalım. Daha sonra Data Controls kısmından formumuza DbGrid yerleştirelim ve Object Inspector'den DataSource özelliğini DataSource1 yapalım. Daha sonra Query1'in DataBaseName özelliğini alias olarak tanımlanan önceden oluşturduğumuz liste. dbf'yi seçelim. Sonra Query1'in SQL özelliğine gidip çıkan pencerede aşağıdaki SQL ifadesini yazalım. SELECT * FROM liste Sonra Query1'in Object Inspector'den Active özelliğini True yapalım ve programımızı F9'a basarak çalıştıralım. DbGrid'de görüleceği gibi liste.dbf'deki bütün bilgiler listenmiştir. İstenilen Sütunları Listelemek istenilen sütunlar listelenmek istenirse Query1'in SQL özelliğine şu SQL komutu yazılmalıdır. SELECT adi soyadi adresi FROM listeNot: liste.dbf adlı veri tabanımızdan sadece adi soyadi adresi adlı sütunlar ve bu sütunlardakibilgileri listelemiş olduk. Tekrarlı Kayıtları Bir Defa Listelemek Bir tabloda bulunan aynı kayıtları bir kez listelemek için DISTINCT komutu kullanılır. Bunun için; Query1'in SQL özelliğine şu SQL komutu yazılmalıdır. SELECT DISTINCT adi soyadi adresi FROM listeŞartlı Sorgulama yapmak istersek aşağıdaki gibi SQL komutu kullanmak gerekir. SELECT adi soyadi adresi FROM liste WHERE adi = 'Bahadir 'Örnek1: İsminin başharfi "B" ile başlayanları sorgulayalım. Aşağıdaki SQL komutunu inceleyiniz. SELECT DISTINCT adi soyadi adresi FROM liste WHERE adi LIKE ' B%'Örnek2: İki şartı aynı anda sağlama. Örneğimizi inceleyelim. SELECT DISTINCT adi soyadi adresi maas FROM liste WHERE ( adi = 'B%' and maas >10000 ) İki şarttan biri gerçekleşmesi isteniyorsa yukardaki örnekte And yerine Or kullanılacak. Verileri Sıralamak Tabloda bulunan verileri A-Z'ye veya Z-A'ya sıralayabiliriz. Bunun için aşağıdaki örnekleri inceleyelim. Örnek1: SELECT DISTINCT adi soyadi adresi maas FROM liste WHERE Order By adi ASC( A-Z'ya sıralar ) Örnek2: SELECT DISTINCT adi soyadi adresi maas FROM liste WHERE Order By adiDESC ( Z-A'ya sıralar ) Verileri Gruplandırmak Bir tabloda yer alan kişilerin farklı zamanlardaki yaptıkları işlerin miktarı gruplandırmak suretiyle tek bir tabloda listelenebilir. Bunun için Group BY komutunu kullanacağız. SELECT adi soyadi SUM ( toplam_fiyat )Genel_toplam FROM liste Where fiyat = 'TL'GROUP BY adi Önemli Not: Şimdiye kadar Query1'in SQL özelliğine SQL komutları yazarak sorgulamalar yaptık. Şimdi kod penceresinde yazacağımız program koduyla veri sorgulayacağız. Örnek: Parametreye bağlı olarak veri sorgulaması procedure TForm1.Button1Click ( Sender : TObject ) ; // Button1 adlı butona kodumuzu yazıyoruz. begin Query1.Close ; Query1.ParamByNAme( ' Adi ' ).AsString := Edit1.Text ; Query1.Open ; end ; Sütun Sorgulama Bunu yaparken DataSource1 'in DataSet özelliğini Query1 ; Query1'in DataBaseName özelliğini veri tabanınız ( bizim örnekte liste.dbf ) ; DBGrid1 ' in DataSource özelliğinide DataSource1 yapınız. Örnek : procedure TForm1.Button1Click ( Sender : TObject ) ; begin Query1.SQL.Clear ; Query1.SQL.Add(' Select adi soyadi adresi maas From liste ' ) ;Query1.Open ; end ; Programımızı çalıştırıp Button1'e tıkladığımız zaman DBGrid'de istediğimiz bilgilerin listelendiğini görürüz. Ekleme Sorgusu Formumuza Button1 koyalım. Caption özelliğine Ekle yazalım. Ekle butonuna aşağıdaki kodları yazalım. ( formumuza Query1 DataSource1 ve DBGrid1 yerleştirilmiş varsayıyorum.) procedure TForm1.EkleClick ( Sender : TObject ) ; begin Query1.SQL.Add ('INSERT into liste ' ); Query1.SQL.Add ( ' (ADI SOYADI ) ' ) ;Query1.SQL.Add ( 'values (" Bahadir " " Sahin " ) ' ) ;Query1.ExecSQL ; end; Not : Programı çalıştırıp Ekle butonuna bastığımız zaman kodda yazmış olduğumuzBahadir Sahin' i veri tabanına ekler. Veri Güncellemek Tablomuzda bulunan verilerimizi güncellemek için UPDATE'i kullanacağız. Bunun için Formumuza Button1 koyalım. Caption özelliğine Güncelle yazalım. Güncelle butonuna aşağıdaki kodları yazalım. procedure TForm1.GuncelleClick ( Sender : TObject ) ; begin Query1.SQL.Clear ; Query1.SQL.Add ( ' UPDATE liste set maas = 10000 where ADI = ' Bahadir ' ) ; Query1.ExecSQL ; end ; Veri Silme Sorgusu procedure TForm1.SilClick ( Sender : TObject ) ; begin Query1.SQL.Clear ; Query1.SQL.Add ( ' Delete from liste where ADI = ' Bahadir ' ) ; Query1.ExecSQL ; end ; Parametreye Bağlı Olarak Veri Sorgulama procedure TForm1.SorguClick ( Sender : TObject ) ; begin Query1.SQL.Clear ; Query1.SQL.Add('Select ADI SOYADI from liste Where ADI =:a') ;Query1.ParamByName ('a').AsString := Edit1.Text; Query1.Open; end; Borland Delphi'de QReport Bileşenleri ile Rapor Hazırlama Daha önceki bölümlerde veri tabanını nasıl oluşturduğumuzu ve bu veri tabanına yazmış olduğumuz verileri nasıl sorgulayıp listelediğimizi görmüştük. Şimdi ise yapmış olduğumuz işlerin meyvesini almaya geldi. Nasıl mı? Tabiki QReport ile...QReport ile Printer'dan çıktı alabiliriz. Şimdi QReport'un özelliklerini inceleyelim. · Bölüm ( Band ) yapısına dayanan rapor üretici · QReport bileşenleri ile görsel rapor tasarımı · Rapor çıktısı verme · Anında önizleme imkanı · Limitsiz Memo alanları · Limitsiz Grup sayısı · Karmaşık rapor tasarımı · İsteğe uyarlanabilir rapor tasarımı · Yazdırılabilir grafik formatları · Geliştirilmiş hesap ifadeleri · Tam yazıcı kontrolü vb.diğer özellikler... Şimdi adım adım Rapor oluşturmaya başlayalım. Bir rapor formu en basit aşağıdaki bileşenlerden meydana gelir. DataSet ( TTable ) elemanı QuickReport ( TTable ile bağlantılı ) QuickReport üzerine alınan QRBand bileşeni TQuickRep elemanının Bands özelliği altındaki HasDetail özelliğinin True yapılması Detail bölümü üzerine yazılabilir TQRDBText elemanı Bunları öğrendikten sonra raporumuzu hazırlamaya devam edelim. İlk önce Formumuza Data Access kısmından TTable kontrolünü yerleştirelim. Table1'in Object Inspector'ündeki DatabaseName özelliğini oluşturduğumuz aliası ( Ben liste.dbf oluşturdum. Sizde oluşturduğunuz veri tabanını seçin.) seçelim. TableName 'de veritabanının ismini seçelim. Table1'in Active özelliğini True yapalım. Sonra QReport kısmından QuickRep1 elemanın yerleştirelim ve DataSet özelliğini Table1 yapalım. Daha sonra Bands özelliğine tıklayıp HasDetail özelliğini True yapalım. Bu işlem ile form üzerine veri alanlarının yer alacağı bölümü eklemiş olduk. Şimdi bir örnek yapalım. Örnek: Yukarıdaki işlemleri gerçekleştirdikten sonra QReport kısmından 5 adet QRDBText kontrolü alıp Details kısmına yerleştirelim ve herbir QRDBText'in Dataset özelliğini Table1 ve DataField özelliğinide liste.dbf'de bulunan sütun alanlarından birini seçelim ( Mesela ADI SOYADI ADRESI ). Basit bir rapor yapmış olduk. Şimdi tasarım zamanındaki raporugörebilmek için QuickRep1'in üzerindeyken Mouse'ın sağ tuşuna tıklayalım. Karşımıza birmenü çıkar. Şimdi bu menüdeki özellikleri inceleyelim. Report Setting: Tasarım zamanı rapor ile ilgili ayarların yer aldığı pencereye ulaşılır. Zoom in: Tasarım zamanında rapor üzerindeki bileşenler daha büyük gösterilir. Zoom Out: Tasarım zamanında rapor üzerindeki bileşenler daha küçük gösterilir. Rotate Band View: Rapor üzerinde yer alan bileşenlerin yerleri değiştirilir. Hide Bands: Bu özellikle bileşenler gizlenir. Reset: Gizlenen bölümleri tekrar gösterir. Preview: Bu özellik; Raporumuzun ekran görüntüsünü çıkarır. Raporla İlgili Ayarlar Tasarım zamanında raporla ilgili ayarların yapılabilmesi için QuickRep1'e sağ tıklanır. Açılan menüde Report Setting seçeneği seçilir. Açılan menüde ; Paper Size: Kağıdın tipi belirlenir. Length: Sayfa uzunluğu belirlenir. Width: Sayfa genişliği belirlenir. Margins: Kenarlarda bırakılacak boşluk miktarı belirlenir. Column Space: Sütun genişliği belirlenir. Number of Column: Sütun sayısı belirlenir. Other: Bu kısımda raporda kullanılacak font adı büyüklüğü ve ölçü birimi ayarlanır.Page Frame: Bu bölümde ise rapor önizleme modunda iken gözükecek çerçeveler çerçeveninrengi kalınlığı ayarlanır.Bands: Rapora eklenecek bölümler ( Band ) seçilir. Page Header: Rapora Sayfa Başlığı verilir. Title: Başlık girilir. Column Header: Sütun başlıkları girilir. Detail Band: Veri alanlarının yer aldığı bölümdür. Page Footer: Sayfanın altında yer alan sayfa alt bilgilerini ekler. Summary: Raporla ilgili ek açıklamaları ekler. Çalışma Anında Rapor Önizleme Bunun için şu işlemleri yapınız. İlk önce Formumuza bir Button ekleyin ve bu button1'in Caption özelliğine Raporla yazınız. Daha sonra butonun OnClick kısmına aşağıdaki kodu yazınız. Procedure TForm1.RaporlaClick ( Sender : TObject ) ; begin QuickRep1.Preview ; end; Programı çalıştırıp Raporla butonuna bastığımız zaman raporumuzun ekran görüntüsükarşımıza gelir. Not: Kayıtları direk yazıcıya göndermek istiyorsak Butonun OnClick olayına şu kodu yazacağız.QuickRep1.Print ; Wizard Kullanarak Rapor Hazırlama · File / New Aplication 'u seçin. · File / New menüsünden Business kısmına geçiniz. Buradan QuickReport Wizard seçeneğini seçiniz. Sonra Ok düğmesine basınız. · Çıkan pencerede Start Wizard düğmesiyle bir sonraki adıma geçelim. · Alias or Directory kutusunda bağlantı kuracağımız veritabanının bulunduğu dizini seçiyoruz. Table Name kısmınada veri tabanımızın ismini seçiyoruz. · Tablo seçildikten sonra; tablomuzda yer alan sütunlar görülecektir. Raporda bulunmasını istediğimiz alanları belirleyip > veya hepsini seçersek >> tuşuyla sağ taraftaki listeye alalım ve bu işlemi bitirdikten sonra Finish düğmesine basalım. Böylece Wizard kullanarak otomatik olarak raporumuzu oluşturmuş bulunuyoruz. Veri Süzmek ve Sıralamak QuickReport; verileri sıralayacak herhangi bir özelliğe sahip değildir. Veriler girildikleri sırada basılırlar. Veri tabanı içindeki veri alanlarının index olarak tanımlanması gerekir. Bu işlemden sonra TTable elemanının IndexName özelliği ile belirtilmesi gerekir. TQuery elemanıylada istenilen şekilde verileri süzmek mümkündür. Veri süzme birkaç şekilde yapılır. TTable.Filter özelliği bir süzme koşulu ekler. Bu sırada TTable.Filtered özelliği True olması gerekir. Diğer yol SQL kullanılarak istenilen kayıtları elde etmektir. Bir diğer seçenek ise Detail bandının PrintEvent olayını kullanmaktır. Sayfa Büyüklüğü ve Kenar Boşluklarını Ayarlama Bunun için QuickRep1 elemanının Page özelliğine tıklanarak açılan alt özellikler aracılığıyla rapor tasarımında kullanılacak olan sayfanın büyüklüğü ve kenar boşlukları kolay bir şekilde ayarlanır. Not: QuickRep1'in içinde varsayılan yazı tipleri seçilebilir. Bunun için Font özelliğine tıklanması gerekir. Burada font adı tipi rengi fontun altı veya üstü çizili olma durumuayarlanabilir. Rapor Başlığı Rapor tanımlama QuickReport'un Description özelliği ile yapılır. Bu seçeneği tıklayalım ve açılan pencereye raporla ilgili bilgileri girelim. Bir rapor başlığı TQRSysData elemanı aracılığıyla yazdırılabilir. Başlık aşağıdaki kodla oluşturulabilir. Örnek rocedure TForm1.Button1Click(Sender :TObject ) ;begin with QuickRep1 do begin Report Title := ' Personel Bilgisi Raporu ' ; Bands.HasTitle := True ; with TQRSysData ( Bands.TitleBand.AddPrintable ( TQRSysData ) ) do begin Data := qrsReportTitle ; AlignToBand := true ; Aligment := taCenter ; end ; Preview ; end ; end ; Bir Rapora Bölüm Eklemek Bir rapora bölüm eklemek için Object Inspector penceresinden TQuickRep elemanına ait Bands özelliğine tıklamak ve çıkan alt bölümdeki özelliklerin değerini true yapmaktır. Quick Report'ta Kullanılan Operatörler Operatör Açıklama + Toplama - Çıkarma * Çarpma / Bölme ( ) Paranaaa And Mantıksal And Or Mantıksal Or Not Mantıksal Not = Eşit < Küçük > Büyük <= Küçük eşit >= Büyük eşit < > Eşit değil QuickReport Fonksiyonları Date: Mevcut tarihi string olarak geri gönderir. Rapor üzerine QRExpr elemanı alınarak Expression özelliğine Date verilerek kullanılır. Time: Mevcut saati stringe çevirir. Rapor üzerine QRExpr elemanı alınarak Expression özelliğine Time verilerek kullanılır. Str ( sayı ): Sayısal bir ifadeyi stringe çevirir. Copy(str s l): Bir ifadenin içinde bulunan belli bir bölümü geri gönderir.Rapora Sayfa Numarası ve Tarih Eklemek Raporumuza sayfa numarası ve tarih eklemek için; rapor üzerine QRB elemanı alarak BandType özelliğini rbPageFooter yapalım. Daha sonra QRSYSData kontrolünden iki tane alıp birincisinin Data özelliğini qrsDate ve Text özelliğine "Basım Tarihi " ikincisinin Dataözelliğini qrsPageNumber ve Text özelliğini de " Sayfa : " yapalım. Raporu Preview'e tıklayarak önizlemeye alırsak sayfanın sonunda Basım Tarihi ve Sayfa Numarasının yazılmış olduğunu görürüz. Delphi ile MS Access Database'ine Bağlantı Delphi'den MS Access Databaseine ulaşabilmek için sırasıyla yapılması gerekenler aşağıdaki gibidir: 1. Windows Control Panel'i açın. 2. ODBC simgesini çift tıklayın. 3. User DSN tabına gelin ve Add butonuna basın. 4. Driver olarak "Microsoft Access Driver (*.mdb)" yi seçin ve Finish butonuna basın. 5. Data Source Name'i olarak kullanmak istediğiniz bir isim verin. Description kısmına isterseniz database'inizle ilgili bir açıklama yazabilirsiniz. 6. Daha sonra Select butonuna basarak database isminizi verin. 7. Advanced butonuna basarak kullanıcı adı ve şifresi tanımlayabilirsiniz. ( Zorunlu değil ) 8. OK butonuna basıp ODBC ekranını kapatın. 9. Şimdi programınıza bir TDatabase objesi ekleyin. 10. AliasName olarak ODBC ayarlarında verdiğiniz (5) Data Source Name'i seçin.11. Database Name olarak istediğiniz bir isim yazın. 12. Eğer 7. basamakta bir kullanıcı adı ve şifresi girmediyseniz login ekranın çıkmaması için LoginPrompt seçeneğini false yapın. Not: Eğer database'in bir kullanıcı adı ve şifresi varsa LoginPrompt seçeneğini False yapmanız durumunda database'e ulaşamazsınız. 13. Programınıza bit TTable ekleyin. 14. Database Name kısmına TDatabase bileşeninde Database Name kısmına 11. adımdaverdiğiniz ismi seçin. 15. Programınıza bit TDataSource ekleyin. 16. DataSet değeri olarak 13. adımda eklediğiniz TTable adını verin. Artık MS Access Database'ine bağlı bir table'a sahipsiniz. |
|
|
|