Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: Delphi le Veritabanına Giriş  (Okunma sayısı 8508 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Delphi le Veritabanına Giriş
« : 09 Ekim 2005 15:58:08 »
Bu makalenin amacı Delphi İle Veritabanına ilk defa adım atacaklar için hazırlanmıştır. Böylece bu alanda da büyük bir eksikliği gidermiş olacağız. Uygulamayı Delphi 2005 ve Firebird kullanarak yapıyorum. Delphi 7 ile aralarında pek bir fark bulunmuyor.

Aşağıdaki gibi bir tablo ve Generators oluşturuyoruz. IDNO alanını Primary Key olarak tanımlayın. IDNO alanını sadece bize kolaylık sağlaması için oluşturduğumuz için tanımladığımız Generatorla Değerini otomatik olarak artan bir sayı vererek bir arttıracağız. Veritabanı tarafını daha önce anlattığım için ayrıntıya girmeden geçiyorum.



Aşağıdaki Görüntüde ise Delphide programımızın tasarım görüntüsü var. Delphide Veritanına bağlanmak için Component Paletten Interbase sekmesinde  IBDatabase, IBTransaction, IBDataset ve Data Access sekmesinde bulunan DataSource  formunuza birer tane ekleyin. Bu bileşenleri daha önce ayrıntısıyla işlemiştik ancak yinede kısaca anlatacağım. Anlatırken yapılacak ayarları da belirteceğim.

IBTransaction
veritabanına kayıtların anında yansıtılıp yansıtılmayacağınızı belirlemenizi sağlar. Bu bileşeni çift tıklayarak karşınıza çıkan pencereden “Read Committed” kutucuğunu işaretleyin.

Object Inspectordan DefaultDatabase özelliğine forma eklediğiniz IBDatabase bileşenini gösterin. Bu kayıtların hangi veritabanına yazılacağını gösterir.

IBDatabase

Sanırım yukarıdaki anlattığımla Veritabanına bağlantıyı sağlayan bileşen olduğunu anlamışsınızdır. Bu bileşeni de seçip Object Inspectordan DefaultTransaction özelliğine forma eklediğiniz IBTransaction bileşenini gösterin. Böylece IBTransaction ile IBDatabase ile ilişkiyi kurmuş oluyoruz. IBdatabaseye çift tıklayarak Veritabanına bağlıntıyı sağlayacak diğer ayarları yapıyoruz.IBDatabaseyi çift tıkladığınızda karşınıza çıkacak pencereden.

Local kutucuğunu işaretleyin.Database bölümüne veritabanı yolunu ve adını yazın. Örneğin “C:\My Doc\Projelerim\Deneme\DATAM.FDB” gibi. “User Name”ye Kullanıcı adını “Password”a şifrenizi yazın. Değiştirmediyseniz kullanıcı adı: “SYSDBA” şifre: “masterkey”dir. “Character Set”e Türkçe için “WIN1254” Seçin  ve son olarak “Login Prompt” kutucuğunun işaretini kaldırarak “Ok”leyin. Her şeyi doğru yaptıysanız Object Inspectordan Connected özelliğini True yaparak Veritabanıyla bağlantıyı gerçekleştirmiş olursunuz.

IBDataset

Yukarıdaki bileşenlerle veritabanına bağlandık ancak herhangi bir tablo listelemedik. İşte  bu bileşende tabloları seçmek ve üzerinde işlemler yapmak için vardır. Bu bileşenin Database ve Transaction özelliklerine forma eklediğiniz IBKDatabase ve IBTransaction bileşenlerini gösterin. Bu işlem tabloyu hangi veritabanından çekeceğimizi gösterir. Daha sonra Yine Object Inspectordan “SelectSql” özelliğine tıklıyoruz. Karşımıza çıka pencereden tablomuzu listeletecek SQL cümlesini yazıyoruz.

Kod: [Seç]
select * from TBL_REHBER

tabloyu listeleyecek kodu oluşturduk. Şimdide kayıt silecek,üncelleyecek vs.. işlemleri yapacak SQL Cümlelerini oluşturalım.. bunu yapmanın en kolay yolu IBDataset bileşenini sağ tıklayıp çıkan menüden “Dataset Editor” seçeneğini tıklamak. Karşınıza çıkan pencereden öncelikle  “Get Table Fields” buttonuna tıklayın. “Key Fields” ve Update Fields” Listesindeki tüm alanlar seçilecektir. “update fields” güncellenecek alanları gösterirken “key fields” işlem yapılırken işlemin hangi şartlara göre yapılacağını gösterir. Key fields bölümünde tümünü seçmek yerine sadece IDNO alanını seçili bırakıyoruz.  Örneğin key fields kısmında hepsi seçiliyken silme sorgusu şöyle olabilirdi

Kod: [Seç]
delete from tablo where alan1=deger and alan2=deger…. gibi

halbuki bizim bir primary keye sahip alanımız var ve primary keyli alan farklı değerler içeremez. Bu sebeple extra şartlar eklememiz hem sadeliğin bozulmasına hem de yavaşlamaya sebep olur. Aşağıda ki gibi kodumuz kısalmış olacaktır. Ve primary keyin önemini de anlamış oluyoruz.

Kod: [Seç]
delete from tablo where primaryalan=deger

Primary Keye sahip alanımızın otomatik artması için IBDataseti seçip Object inspectordan GeneratorField'e tıklayın. Generator bölümünden Generatorunuzu Field bölümünfden otomatik artacak alanı Increment By kısmına kaçar kaçar artacağıını yazdıktan sonra On Post kutucuğunu Seçip OK leyin.

Son olarak Active özelliğini True  yapın. Böylece kayıtları listelemiş olacağız.

DataSource

Bu bileşen kayıtları IBDatasetten alarak DataControls sekmesinde bulunan bileşenlere aktarır. Bir nevi köprü vazifesi görür.Köprünün kurulması için DataSource bieşeninin Dataset özelliğine forma eklediğimiz  IBDataaset bileşenini gösteriyoruz.

Tasarımı aşağıdaki şekilde oluşturuyoruz. Resimde DataControls sekmesinde bulunan bileşenlerin isimlerini üzerlerine yazdım



dbtext > verileri bir label şeklinde gösterir. İçindeki  veriyi değiştiremezsiniz. Dbgrid hariç resimdeki tüm Datacontrols bileşenleri bir  alanın değerini gösterirler. Bütün DataControls bileşenlerinin DataSource özelliği vardır. Bu özelliğe forma eklediğimiz DataSource bileşenini gösteriyoruz. DataField özelliklerine ise hangi alandaki verilerin gösterilmesini istiyorsanız o alanı gösterin. Biz kayırt tarihini o anki tarih olarak ayarlayacağımız için DataField özelliğine “KAYIT_TARIHI” alanımızı gösterdik. Aynı şekilde dbeditleri,dbmemo ve dbimage bileşenlerinin Datasource ve DataField özelliklerini ayarlayın. Diğer standart bileşenler gibi olduğu için ayrınt4ıya girmiyorum..

dbgridin DataSorce özelliğini gösterdiğinizde tüm alanları listelediğini göreceksiniz. Oysa resimde üç alan görünüyor. Dbgridi özelleştirip istediğimiz alanları listelemesi için dbgridi çift tıklayın. Karşınıza aşağıdaki gibi bir pencere gelecek.



Alan Ekleye tıklayarak dbgide yeni bir alan ekleyebilirsiniz. Eklediğiniz Alanı seçip Object Insspectordan Hangi alan için eklendiğini göstermek için “FieldName” özelliğine bağlanılacak alanı seçin. Alan isimler EMAIL vb. şekilde görünecektir. Siz bunu E-Mail şeklinde göstermek isterseniz yine alan seçiliyken title özelliğindeki Caption özelliğine E-Mail yazmanız yeterli. Böylece tıpkı resimdeki görüntüyü elde edebilirsiniz.

Gelelim kayıtlar arasında dolaşmaya. Button isimlerinden hangi buttona hangi kodu yazdığımı ve işlevlerini anlayabilirsiniz.

Kod: [Seç]
procedure TForm1.ilkKayitClick(Sender: TObject);

begin

 if not IBDataset1.Bof Then //İlk Kayıtta Değilse

IBDataset1.First;

end;



procedure TForm1.OncekiKayitClick(Sender: TObject);

begin

 if not IBDataset1.Bof Then //İlk Kayıtta Değilse

IBDataset1.Prior;

end;



procedure TForm1.mClick(Sender: TObject);

begin

if not IBDataset1.Eof Then //Son Kayıtta Değilse

IBDataset1.Next;

end;



procedure TForm1.SonKayitClick(Sender: TObject);

begin

if not IBDataset1.Eof Then //Son Kayıtta Değilse

IBDataset1.Last;

end;0



procedure TForm1.KayitEkleClick(Sender: TObject);

begin

IBDataset1.insert;

DbEdit1.setfocus; // Tablonun İlk Alanına Bağlı Bileşenge Kursörü Bırakıyoruz.

end;



procedure TForm1.KaydiSilClick(Sender: TObject);

Begin

if IBDataset1.RecordCount>0 then //Kayıt varsa

IBDataset1.delete;

end;    



procedure TForm1.KaydiDuzenleClick(Sender: TObject);

begin

IBDataset1.Edit;

end;



procedure TForm1.iptalClick(Sender: TObject);

begin

IBDataset1.Cancel;

end;



procedure TForm1.KaydetClick(Sender: TObject);

begin

IBDataset1.Post;

end;



procedure TForm1.YenileClick(Sender: TObject);

begin

 IBDataset1.Refresh;

end;


 IBDataset1: forma  eklediğimiz ibdatasettir.kayıtlar arasında dolaşırken EOF ve BOF komutlarıyla tablonun sonunda veya başında olup olmadığımızı kontrol ediyoruz. İlk kayıttayken ilk kayda git diye bir komut kullanırsak doğal olarak hata verecektir. Daha sonraki komut ise buttonun görevini yerine getiriyor.

Silme burttonunda ise önce tabloda kayıt olup olmadığı kontrol ediliyor. En az kayıt varsa kaydı siliyor. Kaydı silmek için IBDatasete yazdığımız SQL Cümlesini çalıştırıyor.. Resimde eklemeyi unuttuğum Kaydet buttonunu ekleyin. Kodları yazarken farkına vardım.

Kaydı sildiğinizde, kayıt eklediğinizde, kaydı güncellediğinizde değişikliğin anında veritabanına yansıtılmadığını göreceksiniz.

değişikliğin hemen veritabanına yansıması için forma eklediğimiz IBTransactiona değişikliği hemen veritabanına yansıtmasını söylemeliyiz.

Bunun için kayıt eklendikten ve silindikten sonra bu komutu vermeliyiz. Kayıt silindiğin de IBDatasetin AfterDelete(Sildikten sonra) ve AfterPost(kayıt eklendikten veya güncellendikten sonra) meydana gelen olaylarına aşağıdaki kodu yazmalıyız.

Kod: [Seç]
procedure TForm1.IBDataSet1AfterPost(DataSet: TDataSet);

begin

 IBTransaction1.CommitRetaining;

end;


şimdi de kayıt tarihi alanımıza kayıt ekle buttonuna basılır basılmaz günün tarihini bu alana atayalım. Bunun için IBDatasetin  kayıt eklenirken meydana gelen OnNewRecord olayına kodu yazıyoruz.

Kod: [Seç]


procedure TForm1.IBDataSet1NewRecord(DataSet: TDataSet);

begin

IBDataSet1.FieldByName('KAYIT_TARIHI').Value:=Date;

end;


Date sizinde bildiğiniz gibi şuan ki tarihi vermektedir.  KAYIT_TARIHI yerine istediğiniz alan ismini yazarak o alana atama yapabilirsiniz.

Şimdide kayıt silineceği zaman kullanıcıya emin misiniz diye soralım. Emin değilse silme işlemini iptal edelim.

Bunun için IBDatasetin kayıt silinmeden önce meydana gelen BeforeDelete olayına aşağıdaki kodu yazalım.

Kod: [Seç]
procedure TForm1.IBDataSet1BeforeDelete(DataSet: TDataSet);

Var

Cevap:Word;

Begin

Cevap:=Application.MessageBox(' silinsin  mi? ','Onay',MB_YesNo);

if Cevap=mrNo then

SysUtils.Abort; //Hayırsa İşlemi İptal Et

end;


Resim weklemek içinse dbimagenin OnClick olayına aşağıdaki kodu yazıyoruz. Öncesinde forma bir OpenPictureDialog bileşeni eklemeyi  unutmuyoruz.

Kod: [Seç]
procedure TForm1.DBImage1Click(Sender: TObject);

begin

if OpenPictureDialog1.Execute Then

Begin

//Tablo düzenleme yada ekleme modunda değilse

if not (IBDataset1.State in [dsEdit,dsInsert])  then

IBDataset1.Edit; //Düzenleme moduna gir

//dbimageye seçilen resmi aktar.

DbImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

IBDataset1.Post; //değişikliği kaydet.

end;

end;


sadece bmp dosyalarını kaydedebileceğinizi unutmaayın. İlerde diğer türleride görürüz inşallah.

Kapat buttonuna formu kapatacak kodu yazın

Kod: [Seç]
Close;

şunu unutmayın yapacağınız bütün işlemler o anki aktif kayıt üzerinde yapılır. Her zaman bir kayıt mutlaka aktiftir.

Son olarak arama işlemi için aşağıdaki kodu Bul buttonunun Onclick olayına yazalım.

Kod: [Seç]
//IBDatseti kapat. SelectSQL cümlesini Değiştirirken Mutlaka yapılmalıdır

IBDataSet1.Close;

//IBDataSetin SelectSQL özelliğini temizle

IBDataSet1.SelectSQL.Clear;

//IBDataSetin SelectSQL özelliğine SQL Cümlemizi atıyoruz.

IBDataSet1.SelectSQL.Add('select * from TBL_REHBER');

//IBDataSetin SelectSQL özelliğine SQL Cümlemizi atıyoruz.

IBDataSet1.SelectSQL.Add('Where ADI='+#39+EditAraAd+#39+' AND SOYADI='+#39+EditAraSoyad+#39);

//SelectSql özelliğine atama yapıldıktan sonra IBDataseti aç.

IBDataSet1.Open;


Gördüğünüz gibi Sorgulama kısmındaki Editlere göre arama yapıp. Sonuçları listeledik.

Sitede bulunan IBQuery makalesini incelemenizi öneririm. SQL Sorgularıkonusunda tek farkı “SelectSQL” Yerine “SQL” yazılması.

Örneğin

Kod: [Seç]
IBDataSet1.SelectSQL.Add('select * from TBL_REHBER');

Yerine

Kod: [Seç]
IBQuery1.SQL.Add('select * from TBL_REHBER');
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı 32844

  • Kıdemli Üye
  • *****
  • İleti: 288
  • Rep: +3/-0
  • Cinsiyet: Bay
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #1 : 06 Aralık 2007 11:11:11 »
Akrep sağolsun, bu yazıyı onun sayesinde buldum ve uyguladım.
Çok güzel hazırlanmış ve hata yapma olasılığı çok az.
Ancak benim uygulamamda
Form1'de       :ComboBox1,2,3,4,5 (Ders kodu, ders saati, yarıyıl, adı soyadı, gün)
                       DBEdit1,2,3,4,5
                       DBGid
                       SpeedButton (kaydet, kayıt ekle, kayıt sil, kayıt düzelt, ilk kayıt, önceki kayıt, sonraki kayıt, son kayıt, ders kodu ara, isim ara)

DataModul'de IBDatabase, IBTransaction, IBDataset ve DataSource var
Amacım Öğretmenin adı soyadı, gün, dersi, saati ve yarıyılı listelemek.

Veritabanı C:\FHYICRA\DATA.FDB adlı dosyada ve o dosyada TBL_DERSLER adlı tabloyu esas alıyor.
Tablodaki alan adları ADI_SOYADI (varchar), GUN (varchar), DERS_KODU (varchar), DERS_SAATI (integer), YARIYIL(integer)
Primary Key bir alan yok.

SORUN 1- DBGridde sadece 1 satır mı sıralanır. Birden fazla satır sıralanamaz mı? Sıralanabilirse ilk kayıt, son kayıt, önceki kayıt, sonraki kayıt butonlarını kaldıracağım)
SORUN' 2- Kayıt işleminden sonra ikinci bir kayıt yaparken sanki öncekinin üzerine yazıyor. SQL Manager'de kontrol ettiğimde de öyle görüyorum. Sebebini çözemedim. Acemelik ne de olsa.


Kodlar aşağıdaki gibi
Makaledeki // den sonra yazılan bilgilere dokunmadan kullandım.

Kod: [Seç]
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
DBEdit1.Text:=ComboBox1.Text;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
DBEdit2.Text:=ComboBox2.Text;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
begin
DBEdit3.Text:=ComboBox3.Text;
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
begin
DBEdit4.Text:=ComboBox4.Text;
end;

procedure TForm1.ComboBox5Change(Sender: TObject);
begin
DBEdit5.Text:=ComboBox5.Text;
end;

procedure TForm1.SpeedButton10Click(Sender: TObject);
begin
uData2.DataModule2.IBDataset1.post;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
uData2.DataModule2.IBDataset1.insert;
DbEdit1.setfocus; // Tablonun İlk Alanına Bağlı Bileşenge Kursörü Bırakıyoruz.
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if uData2.DataModule2.IBDataset1.RecordCount>0 then //Kayıt varsa
uData2.DataModule2.IBDataset1.delete;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
uData2.DataModule2.IBDataset1.Edit;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
//IBDatseti kapat. SelectSQL cümlesini Değiştirirken Mutlaka yapılmalıdır
uData2.DataModule2.IBDataSet1.Close;
//IBDataSetin SelectSQL özelliğini temizle
uData2.DataModule2.IBDataSet1.SelectSQL.Clear;
//IBDataSetin SelectSQL özelliğine SQL Cümlemizi atıyoruz.
uData2.DataModule2.IBDataSet1.SelectSQL.Add('select * from TBL_DERSLER');
//IBDataSetin SelectSQL özelliğine SQL Cümlemizi atıyoruz.
uData2.DataModule2.IBDataSet1.SelectSQL.Add('Where DERS_KODU='+#39+ComboBox1.Text+#39);
//SelectSql özelliğine atama yapıldıktan sonra IBDataseti aç.
uData2.DataModule2.IBDataSet1.Open;
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
//IBDatseti kapat. SelectSQL cümlesini Değiştirirken Mutlaka yapılmalıdır
uData2.DataModule2.IBDataSet1.Close;
//IBDataSetin SelectSQL özelliğini temizle
uData2.DataModule2.IBDataSet1.SelectSQL.Clear;
//IBDataSetin SelectSQL özelliğine SQL Cümlemizi atıyoruz.
uData2.DataModule2.IBDataSet1.SelectSQL.Add('select * from TBL_DERSLER');
//IBDataSetin SelectSQL özelliğine SQL Cümlemizi atıyoruz.
uData2.DataModule2.IBDataSet1.SelectSQL.Add('Where ADI_SOYADI='+#39+DBEdit4.Text+#39);
//SelectSql özelliğine atama yapıldıktan sonra IBDataseti aç.
uData2.DataModule2.IBDataSet1.Open;
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
if not uData2.DataModule2.IBDataset1.Bof Then //İlk Kayıtta Değilse
uData2.DataModule2.IBDataset1.First;
end;

procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
if not uData2.DataModule2.IBDataset1.Bof Then //İlk Kayıtta Değilse
uData2.DataModule2.IBDataset1.Prior;
end;

procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
if not uData2.DataModule2.IBDataset1.Eof Then //Son Kayıtta Değilse
uData2.DataModule2.IBDataset1.Next;
end;

procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
if not uData2.DataModule2.IBDataset1.Eof Then //Son Kayıtta Değilse
uData2.DataModule2.IBDataset1.Last;
end;
Çang çing çong çung.
Çin Atasözü

Çevrimdışı akrep

  • Global Moderatör
  • *****
  • İleti: 1.242
  • Rep: +27/-13
  • Cinsiyet: Bay
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #2 : 06 Aralık 2007 11:53:44 »
32844 (ya bu numarayı yanlış yazacam diye tekrar bakmak zorunda kalıyorum en iyisi formulize edeyim :::)) hocam bu kodlar kayıt yapmıyor, atama yapıyor sadece sanki.
1. soruna cevap: DBGrid'de elbette birden fazla  hatta onbinlerce kayıt gösterilebilir.
2. soruna cevap: yeni kayıdı nasıl bir sql komutuyla yaptığına bağlı.

Madem combobox'lardan seçerek listeleme yapmak istiyorsun bence dbedit'lere gerek yok. Bir "Ara" düğmesi koyup OnClick olayına;

Kod: Delphi
  1. var
  2. cmb1, cmb2, cmb3, cmb4, cmb5:String;
  3. begin
  4.  
  5. if Combobox1.ItemIndex=0 then cmb1:='%' else cmb1:=Combobox1.Text;
  6. if Combobox2.ItemIndex=0 then cmb2:='%' else cmb2:=Combobox2.Text;
  7. if Combobox3.ItemIndex=0 then cmb3:='%' else cmb3:=Combobox3.Text;
  8. if Combobox4.ItemIndex=0 then cmb4:='%' else cmb4:=Combobox4.Text;
  9. if Combobox5.ItemIndex=0 then cmb5:='%' else cmb5:=Combobox5.Text;
  10.  
  11.  
  12. IBDataset1.Close;
  13. IBDataSet1.SelectSQL.Clear;
  14. IBDataSet1.SelectSQL.Add('Select * From TBL_DERSLER Where DERS_KODU like:derskodu AND');
  15. IBDataSet1.SelectSQL.Add('DERS_SAATI like:derssaati AND YARIYIL like:yariyil AND ADI_SOYADI like:adsoyad AND');
  16. IBDataSet1.SelectSQL.Add('GUN like:gun');
  17.  
  18. IBDataset1.ParamByName('derskodu').AsString:=cmb1;
  19. IBDataset1.ParamByName('derssaati').AsString:=cmb2;
  20. IBDataset1.ParamByName('yariyil').AsString:=cmb3;
  21. IBDataSet1.ParamByName('adsoyad').AsString:=cmb4;
  22. IBDataSet1.ParamByName('gun').AsString:=cmb5;
  23.  
  24. IBDataSet1.Prepare;
  25. IBDataSet1.Open;
  26.  
  27. end;

Eğer bileşenler arasındaki bağlantıları da doğru yaptıysan bu şekilde çalışması gerekir. Bu arada IBDataSet'in Object Inspector üzerinde görünen "SelectSQL" özelliğine "Select * from TBL_DERSLER" yazarsan iyi olur. Active özelliği de "false"  yani sen arama yapmak için düğmeye basmadığın sürece bir kayıt göstermesin, böylece performanstan tasarruf edersin. Buradaki SelectSQL cümlesi aslında bir işe yaramayacak çünkü dataset sen düğmeye basana kadar aktif hale gelmeyecek. Bastığında ise zaten yukarıdaki kodlarda oluşturulan yeni SQL cümlesi devreye girecek. Ama yine de object inspector üzerindeki "SelectSQL" özelliğine "Select * from TBL_DERSLER" yazmamızın sebebi, oraya birşeyler yazmak zorunluluğunun olması...

Ayrıca programın çalıştığında combobox'ların ilk maddesi olarak "Seçiniz" yada "-" gibi birşeyler yazarak ilk maddenin bir seçenek olmadığını belirtirsen iyi olur, çünkü yukarıdaki kodlar comboboxların ilk maddesini dikkate almayacak.

Bu yazdıklarımı yaptığında listelemeyi gerçekleştirebiliyorsan ikinci kısıma yani yeni kayıt eklemeye geçelim. Tabi yeni kayıt ekleme işini hangi kodlarla yapmaya çalıştığını da yazarsan iyi olur.

(Bu arada üzülerek tekrar hatırlatayım, yine sorunu makale bölümünde sormuşsun :))
« Son Düzenleme: 06 Aralık 2007 12:00:40 by Akrep »
Tomurcuk derdinde olmayan ağaç, odundur - Necip Fazıl Kısakürek

Çevrimdışı 32844

  • Kıdemli Üye
  • *****
  • İleti: 288
  • Rep: +3/-0
  • Cinsiyet: Bay
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #3 : 06 Aralık 2007 12:57:59 »
Sayın Akrep, çok teşekkür ederim.

Öncelikle bu makale üzerinde çalıştığım için soruyu buraya yazdım. Yani doğrudan ilgili olduğu için.

Verdiğin linklerin bir kısmında da böyleydi. O yüzden soru-ipucu bölümünü kullanmadım. Benim sorum ve sizin yanıtınız bana göre, makale ile bütünlük oluşturmuş durumda.

Kaydet ve kayıt ekle için makaledeki kodları kullandım. Yeni bir projede Doğrudan DBComboBox'tan kayıt yaptım sorun yok yalnız bu sefer DK_NO diye bir primary key alan atadım. Belki sorun ordadır diye. Ancak bu alanı otomatik arttırmadım. Onunla uğraşıyorum. SelectSQL'e dediklerini yazmıştım. Tavsiyene uyup, true'yi false yapacağım.

Tekrar çok teşekkürler. Şimdi
Çang çing çong çung.
Çin Atasözü

Çevrimdışı akrep

  • Global Moderatör
  • *****
  • İleti: 1.242
  • Rep: +27/-13
  • Cinsiyet: Bay
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #4 : 06 Aralık 2007 13:11:16 »
Active özeliğini false yapman verdiğim kodları uygularsan yapmanı tavsiye ettiğim birşey, ama farklı tarzda devam ettiğine göre false yapmana da gerek yok sanıyorum. Rica ederim.
Tomurcuk derdinde olmayan ağaç, odundur - Necip Fazıl Kısakürek

Çevrimdışı cosmopolich

  • Yeni Üye
  • *
  • İleti: 11
  • Rep: +0/-0
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #5 : 08 Ocak 2009 13:46:24 »
verdiğin değerli bilgiler için teşekkürler...
yalnız datasource nin beforedelete event ına kodu yazdımda sürekli hata veriyor.
ilgilenirsen ve görüş bildiririsen sevinirm saygılar...

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #6 : 13 Ocak 2009 12:14:56 »
Kodu ve  hatayı görebilir miyim?
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı cosmopolich

  • Yeni Üye
  • *
  • İleti: 11
  • Rep: +0/-0
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #7 : 06 Şubat 2009 18:52:10 »
Fatih hocam eline sağlık giriş aşamasında olduğum için mantığı kavramamda büyük faydası oldu.

Çevrimdışı cosmopolich

  • Yeni Üye
  • *
  • İleti: 11
  • Rep: +0/-0
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #8 : 23 Şubat 2009 13:21:15 »
Fatih hocam size bir sorum olacaktı.
Yaptığım araştırmalar ve hazrıladığım yazılım örneklerinden anladığım kadarı ile bir projeyi başından sonuna kusursuz planlamak olduğunu düşünüyorum.Ve bunun Veirtabnını oluşturmaktan geçtiğini düşünüyorum.Ve bu aşamada RDBMS sürecini ve mantığını kavramakta biraz zorlanıyorum.Bununla ilgili yardımcı olursanız sevinirim.
Saygılarımla....

Çevrimdışı cosmopolich

  • Yeni Üye
  • *
  • İleti: 11
  • Rep: +0/-0
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #9 : 06 Mart 2009 20:09:20 »
Fatih hocam bul butonunun onclick olayına aşağıdaki kodu yazınca hata veriyor.Benim tablomun ismi rehber değil adres gerekli alanlarıda değiştirdim.


IBDataSet1.SelectSQL.Add('Where ADI='+#39+EditAraAd+#39+' AND SOYADI='+#39+EditAraSoyad+#39);
----------------------------------------------------------------------
IBDataSet1.Close;
 IBDataSet1.SelectSQL.Clear;
 IBDataSet1.SelectSQL.Add('select * from TBL_ADRES');
 IBDataSet1.SelectSQL.Add('Where ADI='+#39+EditAraAd+#39+' AND SOYADI='+#39+EditAraSoyad+#39);
 IBDataSet1.Open;
yani bu şekilde kodlar.
Hocam ilgilenirseniz sevinirim.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #10 : 09 Mart 2009 11:05:47 »
verdiği hata nedir
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı cosmopolich

  • Yeni Üye
  • *
  • İleti: 11
  • Rep: +0/-0
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #11 : 09 Mart 2009 19:38:41 »
Fatih hocam şöle bi hata veriyor;
Undeclared identifier : 'EditAraAd'

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #12 : 09 Mart 2009 21:13:00 »
'EditAraAd' formda arama için kullanılan bir edit bileşeninin ismi. Bu isimde bir bileşen bulamıyor
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı xexus

  • Yeni Üye
  • *
  • İleti: 7
  • Rep: +0/-0
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #13 : 02 Mart 2010 21:54:28 »
Merhabalar konu bayağı bir eski ama işime yarıyor doğrusu teşekkürederim bu paylaşım için.
Ben yeni yeni delphi ile haşır neşir oluyorum sizin verdiğiniz kodlar ışığında çalışan bir telefon defteri ve veri tabanı uygulaması yaptım. Gayet sorunsuz çalışıyor. Lakin ben ilişkili bir veritabanındaki sadece KISILER tablosunu DBgrid de gösterip TELEFON, CEP,WEB,E_MAIL gibi diğer tablolardaki bilgileri ise KISILER_ID si vasıtasıyla DBedit lere yazdırmak istiyorum. Bu konuda örnek bir çalışma yada fikir oluşturabilicek bir yazı bulamadım ??? .  Yardımcı olursanız sevinirim.

Çevrimdışı selchuk

  • Kıdemli Üye
  • *****
  • İleti: 265
  • Rep: +0/-0
  • Cinsiyet: Bay
    • Arma Ticari Sistem
Ynt: Delphi le Veritabanına Giriş
« Yanıtla #14 : 04 Temmuz 2010 02:14:56 »
AdoQuery ile sorgulatmanız gerekli.
Knowledge is power (Bilgi Güçtür)