Tablo da Boş Kayıt Uyarısı [Çözüldü]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Tablo da Boş Kayıt Uyarısı [Çözüldü]

Mesaj gönderen ozcank »

Arkadaşlar Merhaba;
Tablo Boş iken hiçbir kayıt yok ve İlk kayıt bilgilerini girip "KAYIT BUTONUNA" bastığımda aşağıdaki hatayı alıyorum. Yardım edebilir misiniz?

Kod: Tümünü seç

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
IF MADENKAYIT.Locate('MD_CEMKODU',Edit1.Text,[])=True then
Begin
Application.MessageBox('Aynı Çember Kodun da Öğrenci Kaydı Var !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
End
Else if (Edit1.Text='') Then
Begin
Application.MessageBox('Öğrenci Çember Kodu Boş Geçilemez !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
end
Else
Begin
MADENKAYIT.Append;
MADENKAYIT.FieldByName('MD_KAYITID').Value:=Edit4.Text;
MADENKAYIT.FieldByName('MD_CEMKODU').Value:=Edit1.Text;
MADENKAYIT.FieldByName('MD_ADSOYAD').Value:=DBEdit1.Text;
MADENKAYIT.FieldByName('MD_SINIFI').Value:=DBEdit2.Text;
MADENKAYIT.FieldByName('MD_TCKIMLIK').Value:=Edit2.Text;

---------------------------
Debugger Exception Notification
---------------------------
Project MADENPRJ1.exe raised exception class EOleException with message 'Cannot insert the value NULL into column 'MD_CEMKODU', table 'MADENPRO.dbo.TBLMADENKAYIT'; column does not allow nulls. INSERT fails'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
En son ozcank tarafından 22 Kas 2016 05:30 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen greenegitim »

MD_CEMKODU fieldın not null olarak tanımlı sen edit1.text değerini MD_CEMKODU na yaz demişsin belki madenkayit.append dediğinde edit1.text içi temizleniyordur.
Mücadele güzelleştirir!
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ozcank »

greenegitim temizletmek için bir kod yok, peki nasıl çözebilirim?
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen greenegitim »

MADENKAYIT.FieldByName('MD_CEMKODU').Value:=Edit1.Text; satırına break point koyup F8 ile aldığı değeri bir incele.
Mücadele güzelleştirir!
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ozcank »

Bu şekilde kodu değiştirmeme rağmen hata değişmedi.

Kod: Tümünü seç

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
//IF MADENKAYIT.Locate('MD_CEMKODU',Edit1.Text,[loPartialKey])=True then
//Begin
//Application.MessageBox('Aynı Çember Kodun da Öğrenci Kaydı Var !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
//End
//Else if (Edit1.Text='') Then
//Begin
//Application.MessageBox('Öğrenci Çember Kodu Boş Geçilemez !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
//end
//Else
//Begin
MADENKAYIT.Append;
MADENKAYIT.FieldByName('MD_KAYITID').Value:=Edit4.Text;
MADENKAYIT.FieldByName('MD_CEMKODU').Value:=Edit1.Text;
MADENKAYIT.FieldByName('MD_ADSOYAD').Value:=DBEdit1.Text;
MADENKAYIT.FieldByName('MD_SINIFI').Value:=DBEdit2.Text;
MADENKAYIT.FieldByName('MD_TCKIMLIK').Value:=Edit2.Text;
MADENKAYIT.FieldByName('MD_OGRNO').Value:=Edit3.Text;
---------------------------
Debugger Exception Notification
---------------------------
Project MADENPRJ1.exe raised exception class EOleException with message 'Cannot insert the value NULL into column 'MD_CEMKODU', table 'MADENPRO.dbo.TBLMADENKAYIT'; column does not allow nulls. INSERT fails'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ozcank »

Hatanın sorunu şu şekilde çözdüm;

SQL de Tabloda
MD_CEMKODU varchar(50) Allow Nulls (Unchecked) iken kaydetmedi
MD_CEMKODU varchar(50) Allow Nulls (checked) bu şekilde kaydetti fakat 1. Değeri NULL 2.Değer kayıt da ki bilgiler şöyle;


NULL NULL aaaaaaaaaaaaa NULL NULL NULL NULL NULL NULL NULL NULL NULL
1 1 2016-11-12 17:20:41.000 2016-10-29 11:24:07.000

MD_ADSOYAD / NULL değeri ile kayıtlı
MD_CEMKODU / 2.Kayıt olarak kayıtlı

Nasıl çözebilirim fikri olan var mı?
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ozcank »

Tabloda
MD_KAYITID int Checked
MD_CEMKODU varchar(50) Checked

kaydederken hata vermiyor ama tabloya çift kayıt atıyor;
1. NULL NULL ADSOYAD(Yazıyor)
2. 1 1 ADSOYAD(Boş)



MD_KAYITID int UNChecked
MD_CEMKODU varchar(50) UNChecked


Bu hatayı alıyorum ;
---------------------------
Debugger Exception Notification
---------------------------
Project MADENPRJ1.exe raised exception class EOleException with message 'Cannot insert the value NULL into column 'MD_KAYITID', table 'MADENPRO.dbo.TBLMADENKAYIT'; column does not allow nulls. INSERT fails'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

Kafayı yiyecem neden yapar anlamadım .
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ertank »

Merhaba,

Öncelikle gönderdiğiniz kod ile ilgili olarak aşağıdaki noktalara dikkat etmenizde fayda var.
1- Değişken isimleri programcı kullanımına serbest bırakılmış olmakla beraber, Delphi içinde kullanılan Form, Buton, Edit gibi bileşenlere bileşen kullanım mantık ve amacına uygun isimler vermek yazılan kodun çok daha kolay anlaşılmasını sağlar. Sizin sorun yaşadığınız Edit1.Text içinde ne bilgi olduğu bileşen adından rahatça tahmin edilebilir.

2- TDataSet.Locate() fonksiyonu geriye Doğru/Yanlış (True/False) şeklinde mantıksal değer çevirir. if mantıksal kontrol için kullanılır. Bu anlamda TDataSet.Locate() ile gelen değeri tekrar doğru mu diye kontrol etmeye gerek yoktur. Gelen değerin kendisini kontrol etmek yeterlidir. Dolayısı ile sizin

Kod: Tümünü seç

IF MADENKAYIT.Locate('MD_CEMKODU',Edit1.Text,[loPartialKey])=True then
şeklinde yazdığınız satır aşağıdaki gibi yazıldığı zaman derleyici ekstra bir kontrol için kod üretmez ve tamamen aynı işi yapar.

Kod: Tümünü seç

if MADENKAYIT.Locate('MD_CEMKODU', Edit1.Text, []) then
3- Günümüzdeki programlama dillerinin neredeyse hepsinde kodu okuması daha kolay olması için "blok" (begin..end, try..finally, vb) arasında kalan satırlar daha içeride yazılır. Sizin gönderdiğiniz kodun tamamı aynı kolondan yazıldığı için blok başlangıç bitişleri kolay anlaşılmıyor. Özellikle bu konuya dikkat etmenizde ve özen göstermenizde fayda var. Duruma göre bazı hataları görerek anlamak blok içinde kalan kodlar en az iki karakter içeriden yazıldığı zaman çok daha kolay olabiliyor.

4- Yazdığınız kod içinde birçok if..else..else şeklinde ifade göze çarpıyor. Mantıksal incelendiğinde ise bu kadar çok kontrol yapmanıza gerek olmayabilir. Yazdığınız kodu bu anlamda mantıksal olarakta incelemelisiniz. En basit örnek olarak "Edit1.Text içi boş mu" kontrolünü ikinci kontrol olarak yapmışsınız. Halbuki içi boş olduğu zaman başka bir kontrole gerek yok. Başka bir şekilde ifade etmek gerekir ise; Eğer Edit1.Text içi boş ise database içinde arama yapılmasına gerek kalmıyor çünkü kayıt bulması mümkün değil.

5- Eğer database tablosuna NULL değer kaydetmek zorunda değil iseniz, database alanlarına atama yaparken aşağıdaki gibi değil

Kod: Tümünü seç

  MADENKAYIT.FieldByName('MD_KAYITID').Value  := Edit4.Text;
  MADENKAYIT.FieldByName('MD_CEMKODU').Value  := Edit1.Text;
şu şekilde atama yapılması

Kod: Tümünü seç

  MADENKAYIT.FieldByName('MD_KAYITID').AsInteger := StrToInt(Edit4.Text);
  MADENKAYIT.FieldByName('MD_CEMKODU').AsString := Edit1.Text;
uygulamanıza duruma göre bir miktar hız kazandırır zira aynı veri türlerini atama durumunuz olacaktır (integer tablo alanına uygulamanız içindeki integer değişkeni direk atayabileceksiniz). Zira bu işlem varyant değişkenin arka planda integer değişkene çevrilmesinden çok daha hızlı olacaktır. Ayrıca veri türü belirsiz varyant değil veri türü belirli değişkenler kullanmış olursunuz. Hatalı atamalar yaptığınızı kendiniz kod yazarken farketmeniz mümkün olabilir. Database tablosu yapınızın tamamını göremiyoruz. Bu anlamda aşağıdaki örnek kod bu öneriye ait örnek içermiyor.

Yukarıda yazdıklarım programcının klavye ve Delphi karşısında daha fazla zaman geçirmesine sebep olacak noktalardır. Uygulama geliştirilir iken ne kadar özen gösterilir ise ortaya çıkacak olan nihai ürün (uygulamanın kendisi) o kadar hatasız çalışması olası olacaktır.

Sorununuza gelince;
Daha önceden bahsedildiği gibi bazı olayların otomatik çalışması sebebi ile MADENKAYIT.Append() dediğiniz anda uygulamanızın başka bir yerinde yazılmış olan bir kod Edit1.Text içini boşaltılıyor olabilir. Bunu kontrol etmek adına ve yukarıdaki önerileri göz önünde bulundurarak aşağıdaki gibi bir kod yazmak mümkün.

Kod: Tümünü seç

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
  Edit1.Text := Trim(Edit1.Text);

  if (Edit1.Text = EmptyStr) then
  begin
    Application.MessageBox('Öğrenci Çember Kodu Boş Geçilemez !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
    Exit();
  end;

  if MADENKAYIT.Locate('MD_CEMKODU', Edit1.Text, []) then
  begin
    Application.MessageBox('Aynı Çember Kodun da Öğrenci Kaydı Var !!!', 'Bilgilendirme Mesajı', MB_ICONINFORMATION);
    Exit();
  end;

  MADENKAYIT.Append();

  // Aşağıdaki kod bloğu hata tespiti yardımı için
  if Trim(Edit1.Text) = EmptyStr then
  begin
    MADENKAYIT.Cancel();
    ShowMessage('Edit1 içi boş');
    Exit();
  end;

  MADENKAYIT.FieldByName('MD_KAYITID').Value  := Edit4.Text;
  MADENKAYIT.FieldByName('MD_CEMKODU').Value  := Edit1.Text;
  MADENKAYIT.FieldByName('MD_ADSOYAD').Value  := DBEdit1.Text;
  MADENKAYIT.FieldByName('MD_SINIFI').Value   := DBEdit2.Text;
  MADENKAYIT.FieldByName('MD_TCKIMLIK').Value := Edit2.Text;
  MADENKAYIT.Post();
end;
Yukarıdaki kod çalıştığı zaman eğer size 'Edit1 içi boş' mesajını vermiyor ise karşınıza çıkan hatayı başka bir yerde aramanız gerekli. Delphi nesne ve olaylara dayalı çalışan bir dildir. Nesne içinde sorun bulunamıyor ise olayların incelenmesinde her zaman fayda vardır. Dolayısı ile @greenegitim tarafından size yapılan *ilk* tavsiyeye uyup diğer olayları incelemenizde fayda var.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ozcank »

ertank kardeşim yazdıklarını okudum ve dediğin kod değişikliklerini yaptım ama bu hatayı gideremedim :( :(

---------------------------
Debugger Exception Notification
---------------------------
Project MADENPRJ1.exe raised exception class EDatabaseError with message 'Cannot insert the value NULL into column 'MD_KAYITID', table 'MADENPRO.dbo.TBLMADENKAYIT'; column does not allow nulls. INSERT fails'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen greenegitim »

Localate neden kullanıyorsunuz benim genelikle kullandığım yapı aşağıdaki gibi

Kod: Tümünü seç

cumle:='';
        cumle:=cumle+' and firma_id='+IntToStr(firmaid);
        cumle:=cumle+' and carikod='+QuotedStr(edt_CARIKOD.Text);
        cumle:=cumle+' and cari_id<>'+QuotedStr(edt_CARI_ID.Text);

        unqry_CariUyari.Close;
        unqry_CariUyari.SQL.Text:='';
        unqry_CariUyari.SQL.Text:='select * from cariler where 1=1 '+cumle+'';
        unqry_CariUyari.Open;
        unqry_CariUyari.FetchingAll;


        if unqry_CariUyari.RecordCount>0 then
        begin
          MessageBoxW(Handle, 'Bu Cari Kod İle Kayıtlı Zaten Bir Cari Var !',
            'Uyarı', MB_OK + MB_ICONSTOP + MB_DEFBUTTON2);
            edt_CARIKOD.SetFocus;
            Abort;

        end;
Mücadele güzelleştirir!
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ozcank »

greenegitim dediğin gibi kodu değiştirdim.:) Ama sorunum hala devam ediyor çözemedim 2 kayıt atıyor 1 tanesi NULL
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ertank »

İlgili formun kodunu komple paylaşabilir misiniz?
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ozcank »

Müsaitseniz ammy verebilirim. ertank kardeşim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ozcank »

Form içeriği;

Kod: Tümünü seç

unit MADENTANIMA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, ComCtrls, Buttons, DB, ADODB,
  Grids, DBGrids, RzDBGrid, IBCustomDataSet, IBUpdateSQL, RzEdit, RzDBEdit,
  RzDTP, RzDBDTP, RzButton;

type
  TForm3 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit1: TEdit;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    ComboBox1: TComboBox;
    Panel2: TPanel;
    DBEdit3: TDBEdit;
    Panel3: TPanel;
    Label10: TLabel;
    Panel4: TPanel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    DateTimePicker2: TDateTimePicker;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    DBEdit12: TDBEdit;
    DBEdit13: TDBEdit;
    DBEdit14: TDBEdit;
    Shape1: TShape;
    Panel5: TPanel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    DBEdit15: TDBEdit;
    MaskEdit1: TMaskEdit;
    DBEdit16: TDBEdit;
    DBEdit17: TDBEdit;
    Label30: TLabel;
    MaskEdit2: TMaskEdit;
    DBEdit18: TDBEdit;
    MaskEdit3: TMaskEdit;
    Panel6: TPanel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    Label38: TLabel;
    DBEdit19: TDBEdit;
    DBEdit20: TDBEdit;
    ComboBox4: TComboBox;
    DBEdit21: TDBEdit;
    ComboBox5: TComboBox;
    DBEdit22: TDBEdit;
    DBEdit23: TDBEdit;
    DBEdit24: TDBEdit;
    Panel7: TPanel;
    Label39: TLabel;
    MaskEdit4: TMaskEdit;
    Label40: TLabel;
    Label41: TLabel;
    ComboBox6: TComboBox;
    Label42: TLabel;
    Label43: TLabel;
    ComboBox7: TComboBox;
    Label44: TLabel;
    DBEdit25: TDBEdit;
    Label45: TLabel;
    DBEdit26: TDBEdit;
    Label46: TLabel;
    DBEdit27: TDBEdit;
    Label47: TLabel;
    ComboBox8: TComboBox;
    Label48: TLabel;
    DBEdit28: TDBEdit;
    Label49: TLabel;
    ComboBox9: TComboBox;
    DBEdit29: TDBEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    ComboBox10: TComboBox;
    ComboBox11: TComboBox;
    ComboBox12: TComboBox;
    ComboBox13: TComboBox;
    ComboBox14: TComboBox;
    MADENKAYIT: TADOTable;
    DataSource1: TDataSource;
    Edit4: TEdit;
    DateTimePicker1: TDateTimePicker;
    MDKAYITID: TADOQuery;
    DataSource2: TDataSource;
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    Label50: TLabel;
    Edit5: TEdit;
    MDOGRARA: TADOQuery;
    DataSource3: TDataSource;
    Label51: TLabel;
    Label52: TLabel;
    Edit6: TEdit;
    Label53: TLabel;
    Edit7: TEdit;
    RzBitBtn1: TRzBitBtn;
    DBGrid2: TDBGrid;
    procedure BitBtn5Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormActivate(Sender: TObject);
    procedure ComboBox12Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5Change(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DataSource3DataChange(Sender: TObject; Field: TField);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses MADENMENU;

{$R *.dfm}

procedure TForm3.BitBtn5Click(Sender: TObject);
begin
Form3.Hide;
Form2.Show;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form3.Hide;
Form2.Show;
end;

procedure TForm3.FormActivate(Sender: TObject);
begin
GroupBox1.Visible:=False;
ComboBox1.Items.LoadFromFile('C:\MADENPRO\NUFUSIL.TXT');
ComboBox2.Items.LoadFromFile('C:\MADENPRO\DOGUMYERI.TXT');
ComboBox9.Items.LoadFromFile('C:\MADENPRO\CALISTIGIIL.TXT');
ComboBox10.Items.LoadFromFile('C:\MADENPRO\CALISTIGIILCE.TXT');
ComboBox13.Items.LoadFromFile('C:\MADENPRO\CALISTIGIKURUM.TXT');
ComboBox14.Items.LoadFromFile('C:\MADENPRO\CALISTIGIMADEN.TXT');
ComboBox13.Enabled:=False;
end;


procedure TForm3.ComboBox12Change(Sender: TObject);
begin
If (Combobox12.ItemIndex=1) Then
Begin
DBEdit29.Visible:=True;
DBEdit29.Text:='';
ComboBox13.Enabled:=False;
ComboBox13.Text:='';
End
Else
Begin
DBEdit29.Visible:=False;
DBEdit29.Text:='';
ComboBox13.Enabled:=True;
ComboBox13.Text:='';
end;
End;


procedure TForm3.FormCreate(Sender: TObject);
begin
//MADENKAYIT.Active:=True;
//MDKAYITID.Active:=True;
end;



procedure TForm3.BitBtn2Click(Sender: TObject);
//begin
//MADENKAYIT.Active:=True;
//MDKAYITID.Active:=True;

//MADENKAYIT.FieldByName('MD_KAYITID').Value:=Edit4.Text;

//IF MADENKAYIT.Locate('MD_CEMKODU',Edit1.Text,[]) then
//Begin
//Application.MessageBox('Aynı Çember Kodun da Öğrenci Kaydı Var !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
//End
//Else if (Edit1.Text='') Then
//Begin
//Application.MessageBox('Öğrenci Çember Kodu Boş Geçilemez !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
//End
//Else
//Begin
//MADENKAYIT.Append;


///////////////////////////////////////////////////////////

begin

  Edit1.Text := Trim(Edit1.Text);

  if (Edit1.Text = EmptyStr) then
  begin
    Application.MessageBox('Öğrenci Çember Kodu Boş Geçilemez !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
    Exit;
  end;

//  if MADENKAYIT.Locate('MD_CEMKODU', Edit1.Text, []) then
//  begin
//    Application.MessageBox('Aynı Çember Kodun da Öğrenci Kaydı Var !!!', 'Bilgilendirme Mesajı', MB_ICONINFORMATION);
//    Exit;
///  end;

 if MADENKAYIT.RecordCount>0 then
        begin
          MessageBoxW(Handle, 'Aynı Çember Kodun da Öğrenci Kaydı Var.!!!!',
            'Uyarı', MB_OK + MB_ICONSTOP + MB_DEFBUTTON2);
            Edit1.SetFocus;
            Abort;
        end;

  MADENKAYIT.Append();

  // Aşağıdaki kod bloğu hata tespiti yardımı için
  if Trim(Edit1.Text) = EmptyStr then
  begin
    MADENKAYIT.Cancel();
    ShowMessage('Edit1 içi boş');
    Exit;
  end;

///////////////////////////////////////////////////////////
MADENKAYIT.FieldByName('MD_CEMKODU').AsString := Edit1.Text;
MADENKAYIT.FieldByName('MD_ADSOYAD').Value:=DBEdit1.Text;
MADENKAYIT.FieldByName('MD_SINIFI').Value:=DBEdit2.Text;
MADENKAYIT.FieldByName('MD_TCKIMLIK').Value:=Edit2.Text;
MADENKAYIT.FieldByName('MD_OGRNO').Value:=Edit3.Text;
MADENKAYIT.FieldByName('MD_NUFKAYIL').Value:=ComboBox1.Text;
MADENKAYIT.FieldByName('MD_DOGYERI').Value:=ComboBox2.Text;
MADENKAYIT.FieldByName('MD_DOGTARIHI').AsDateTime:=DateTimePicker1.Date;
MADENKAYIT.FieldByName('MD_BAYBYN').Value:=ComboBox3.Text;
MADENKAYIT.FieldByName('MD_KANGRUP').Value:=DBEdit3.Text;
MADENKAYIT.FieldByName('MD_UNVGTAR').AsDateTime:=DateTimePicker2.Date;
MADENKAYIT.FieldByName('MD_BLMKTERC').Value:=DBEdit4.Text;
MADENKAYIT.FieldByName('MD_IDLMESLEKLER').Value:=DBEdit5.Text;
MADENKAYIT.FieldByName('MD_MZOLDLISE').Value:=DBEdit6.Text;
MADENKAYIT.FieldByName('MD_LISEBNOTU').Value:=DBEdit7.Text;
MADENKAYIT.FieldByName('MD_OSSPUAN').Value:=DBEdit8.Text;
MADENKAYIT.FieldByName('MD_OSSTURU').Value:=DBEdit9.Text;
MADENKAYIT.FieldByName('MD_BABAMESL').Value:=DBEdit10.Text;
MADENKAYIT.FieldByName('MD_BSAGVEFAT').Value:=ComboBox4.Text;
MADENKAYIT.FieldByName('MD_ANNEMESL').Value:=DBEdit11.Text;
MADENKAYIT.FieldByName('MD_ASAGVEFAT').Value:=ComboBox5.Text;
MADENKAYIT.FieldByName('MD_KARDESSAYI').Value:=DBEdit12.Text;
MADENKAYIT.FieldByName('MD_OKYKRDSAYI').Value:=DBEdit13.Text;
MADENKAYIT.FieldByName('MD_AILEGDUZEY').Value:=DBEdit14.Text;
MADENKAYIT.FieldByName('MD_ADRES').Value:=DBEdit15.Text;
MADENKAYIT.FieldByName('MD_TELEFON').Value:=MaskEdit1.Text;
MADENKAYIT.FieldByName('MD_EPOSTA').Value:=DBEdit16.Text;
MADENKAYIT.FieldByName('MD_AILEADRES').Value:=DBEdit17.Text;
MADENKAYIT.FieldByName('MD_AILETELEFON').Value:=MaskEdit2.Text;
MADENKAYIT.FieldByName('MD_ACILYAKIN').Value:=DBEdit18.Text;
MADENKAYIT.FieldByName('MD_ACILTEL').Value:=MaskEdit3.Text;
MADENKAYIT.FieldByName('MD_SOSYALMEDYA').Value:=DBEdit19.Text;
MADENKAYIT.FieldByName('MD_OZELYETENEK').Value:=DBEdit20.Text;
MADENKAYIT.FieldByName('MD_HOBILER').Value:=DBEdit21.Text;
MADENKAYIT.FieldByName('MD_BURS').Value:=ComboBox6.Text;
MADENKAYIT.FieldByName('MD_BURSIHTY').Value:=ComboBox7.Text;
MADENKAYIT.FieldByName('MD_SAGLIKPROB').Value:=DBEdit22.Text;
MADENKAYIT.FieldByName('MD_GNLHASTALIK').Value:=DBEdit23.Text;
MADENKAYIT.FieldByName('MD_DGRHUSUS').Value:=DBEdit24.Text;
MADENKAYIT.FieldByName('MD_MEZUNYILI').Value:=MaskEdit4.Text;
MADENKAYIT.FieldByName('MD_MZNORTALAMA').Value:=DBEdit25.Text;
MADENKAYIT.FieldByName('MD_EGTDURUM').Value:=ComboBox8.Text;
MADENKAYIT.FieldByName('MD_CALISIL').Value:=ComboBox9.Text;
MADENKAYIT.FieldByName('MD_CALISILCE').Value:=ComboBox10.Text;
MADENKAYIT.FieldByName('MD_CALISYER').Value:=ComboBox11.Text;
MADENKAYIT.FieldByName('MD_MSLICDIS').Value:=DBEdit26.Text;
MADENKAYIT.FieldByName('MD_POZISYON').Value:=DBEdit27.Text;
MADENKAYIT.FieldByName('MD_CALISBOLM').Value:=DBEdit28.Text;
MADENKAYIT.FieldByName('MD_CALISKURUM').Value:=ComboBox12.Text;
MADENKAYIT.FieldByName('MD_CALKUROZEL').Value:=DBEdit29.Text;
MADENKAYIT.FieldByName('MD_CALKURMADI').Value:=ComboBox13.Text;
MADENKAYIT.FieldByName('MD_CALISMADEN').Value:=ComboBox14.Text;
MADENKAYIT.FieldByName('MD_YEDEK1').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK2').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK3').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK4').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK5').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK6').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK7').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK8').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK9').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK10').Value:=NULL;
//MADENKAYIT.FieldByName('MD_KAYITID').AsString:=Edit4.Text;
MADENKAYIT.FieldByName('MD_KAYITID').AsInteger := StrToInt(Edit4.Text);
MADENKAYIT.Post;
Application.MessageBox('Öğrenci Kaydı Eklenmiştir !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
//////////////////////////////////////////////////////////////////////////////////////////////////////
Edit4.Text:=MDKAYITID.FieldByName('MD_KAYITID').Text;
MDKAYITID.close;
MDKAYITID.sql.clear;
MDKAYITID.SQL.Add('select MD_KAYITID from TBLMADENKAYIT order by MD_KAYITID DESC');
MDKAYITID.open;
  if (MDKAYITID.recordcount<=0) Then
    begin
     Edit4.Clear;
     Edit4.Text:='1';
  end
  else
  begin
    edit4.clear;
    edit4.text:=inttostr(MDKAYITID.fields[0].AsInteger+1);

//MADENKAYIT.Active:=False;
//MDKAYITID.Active:=False;

  end;
end;
//end;
/////////////////////////////////////////////////////////////////////////////////////////

procedure TForm3.FormShow(Sender: TObject);
begin
MADENKAYIT.Active:=True;
MDKAYITID.Active:=True;

Edit4.Text:=MDKAYITID.FieldByName('MD_KAYITID').Text;
MDKAYITID.close;
MDKAYITID.sql.clear;
MDKAYITID.SQL.Add('select MD_KAYITID from TBLMADENKAYIT order by MD_KAYITID DESC');
MDKAYITID.open;
  if (MDKAYITID.recordcount<=0) Then
    begin
     Edit4.Clear;
     Edit4.Text:='1';
  end
  else
  begin
    edit4.clear;
    edit4.text:=inttostr(MDKAYITID.fields[0].AsInteger+1);
//MADENKAYIT.Active:=False;
//MDKAYITID.Active:=False;
  end;
end;


procedure TForm3.BitBtn3Click(Sender: TObject);
begin
MADENKAYIT.Edit;
MADENKAYIT.FieldByName('MD_KAYITID').Value:=Edit4.Text;
MADENKAYIT.FieldByName('MD_CEMKODU').Value:=Edit1.Text;
MADENKAYIT.FieldByName('MD_ADSOYAD').Value:=DBEdit1.Text;
MADENKAYIT.FieldByName('MD_SINIFI').Value:=DBEdit2.Text;
MADENKAYIT.FieldByName('MD_TCKIMLIK').Value:=Edit2.Text;
MADENKAYIT.FieldByName('MD_OGRNO').Value:=Edit3.Text;
MADENKAYIT.FieldByName('MD_NUFKAYIL').Value:=ComboBox1.Text;
MADENKAYIT.FieldByName('MD_DOGYERI').Value:=ComboBox2.Text;
MADENKAYIT.FieldByName('MD_DOGTARIHI').AsDateTime:=DateTimePicker1.Date;
MADENKAYIT.FieldByName('MD_BAYBYN').Value:=ComboBox3.Text;
MADENKAYIT.FieldByName('MD_KANGRUP').Value:=DBEdit3.Text;
MADENKAYIT.FieldByName('MD_UNVGTAR').AsDateTime:=DateTimePicker2.Date;
MADENKAYIT.FieldByName('MD_BLMKTERC').Value:=DBEdit4.Text;
MADENKAYIT.FieldByName('MD_IDLMESLEKLER').Value:=DBEdit5.Text;
MADENKAYIT.FieldByName('MD_MZOLDLISE').Value:=DBEdit6.Text;
MADENKAYIT.FieldByName('MD_LISEBNOTU').Value:=DBEdit7.Text;
MADENKAYIT.FieldByName('MD_OSSPUAN').Value:=DBEdit8.Text;
MADENKAYIT.FieldByName('MD_OSSTURU').Value:=DBEdit9.Text;
MADENKAYIT.FieldByName('MD_BABAMESL').Value:=DBEdit10.Text;
MADENKAYIT.FieldByName('MD_BSAGVEFAT').Value:=ComboBox4.Text;
MADENKAYIT.FieldByName('MD_ANNEMESL').Value:=DBEdit11.Text;
MADENKAYIT.FieldByName('MD_ASAGVEFAT').Value:=ComboBox5.Text;
MADENKAYIT.FieldByName('MD_KARDESSAYI').Value:=DBEdit12.Text;
MADENKAYIT.FieldByName('MD_OKYKRDSAYI').Value:=DBEdit13.Text;
MADENKAYIT.FieldByName('MD_AILEGDUZEY').Value:=DBEdit14.Text;
MADENKAYIT.FieldByName('MD_ADRES').Value:=DBEdit15.Text;
MADENKAYIT.FieldByName('MD_TELEFON').Value:=MaskEdit1.Text;
MADENKAYIT.FieldByName('MD_EPOSTA').Value:=DBEdit16.Text;
MADENKAYIT.FieldByName('MD_AILEADRES').Value:=DBEdit17.Text;
MADENKAYIT.FieldByName('MD_AILETELEFON').Value:=MaskEdit2.Text;
MADENKAYIT.FieldByName('MD_ACILYAKIN').Value:=DBEdit18.Text;
MADENKAYIT.FieldByName('MD_ACILTEL').Value:=MaskEdit3.Text;
MADENKAYIT.FieldByName('MD_SOSYALMEDYA').Value:=DBEdit19.Text;
MADENKAYIT.FieldByName('MD_OZELYETENEK').Value:=DBEdit20.Text;
MADENKAYIT.FieldByName('MD_HOBILER').Value:=DBEdit21.Text;
MADENKAYIT.FieldByName('MD_BURS').Value:=ComboBox6.Text;
MADENKAYIT.FieldByName('MD_BURSIHTY').Value:=ComboBox7.Text;
MADENKAYIT.FieldByName('MD_SAGLIKPROB').Value:=DBEdit22.Text;
MADENKAYIT.FieldByName('MD_GNLHASTALIK').Value:=DBEdit23.Text;
MADENKAYIT.FieldByName('MD_DGRHUSUS').Value:=DBEdit24.Text;
MADENKAYIT.FieldByName('MD_MEZUNYILI').Value:=MaskEdit4.Text;
MADENKAYIT.FieldByName('MD_MZNORTALAMA').Value:=DBEdit25.Text;
MADENKAYIT.FieldByName('MD_EGTDURUM').Value:=ComboBox8.Text;
MADENKAYIT.FieldByName('MD_CALISIL').Value:=ComboBox9.Text;
MADENKAYIT.FieldByName('MD_CALISILCE').Value:=ComboBox10.Text;
MADENKAYIT.FieldByName('MD_CALISYER').Value:=ComboBox11.Text;
MADENKAYIT.FieldByName('MD_MSLICDIS').Value:=DBEdit26.Text;
MADENKAYIT.FieldByName('MD_POZISYON').Value:=DBEdit27.Text;
MADENKAYIT.FieldByName('MD_CALISBOLM').Value:=DBEdit28.Text;
MADENKAYIT.FieldByName('MD_CALISKURUM').Value:=ComboBox12.Text;
MADENKAYIT.FieldByName('MD_CALKUROZEL').Value:=DBEdit29.Text;
MADENKAYIT.FieldByName('MD_CALKURMADI').Value:=ComboBox13.Text;
MADENKAYIT.FieldByName('MD_CALISMADEN').Value:=ComboBox14.Text;
MADENKAYIT.FieldByName('MD_YEDEK1').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK2').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK3').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK4').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK5').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK6').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK7').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK8').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK9').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK10').Value:=NULL;
MADENKAYIT.Post;
Application.MessageBox('Öğrenci Kaydı Düzeltilmiştir !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
end;

procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // Öğrenci Rehber
  if Key = VK_F2 then
  begin
    GroupBox1.Visible := True;
    Edit5.SetFocus();
  end;
end;


procedure TForm3.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
IF Key=#27 Then
GroupBox1.Visible:=False;
Exit;
end;

procedure TForm3.Edit5Change(Sender: TObject);
begin
MDOGRARA.Active:=True;
MDOGRARA.Close;
MDOGRARA.SQL.Clear;
MDOGRARA.SQL.Add('SELECT DISTINCT MD_CEMKODU,MD_ADSOYAD,MD_TCKIMLIK,MD_OGRNO FROM TBLMADENKAYIT WHERE MD_CEMKODU LIKE :MD_CEMKODU');
MDOGRARA.Parameters.ParamByName('MD_CEMKODU').Value:=Edit5.text+'%';
MDOGRARA.Open;
End;

procedure TForm3.Edit6Change(Sender: TObject);
begin
MDOGRARA.Active:=True;
MDOGRARA.Close;
MDOGRARA.SQL.Clear;
MDOGRARA.SQL.Add('SELECT DISTINCT MD_CEMKODU,MD_ADSOYAD,MD_TCKIMLIK,MD_OGRNO FROM TBLMADENKAYIT WHERE MD_ADSOYAD LIKE :MD_ADSOYAD');
MDOGRARA.Parameters.ParamByName('MD_ADSOYAD').Value:=Edit6.text+'%';
MDOGRARA.Open;
end;


procedure TForm3.Edit7Change(Sender: TObject);
begin
MDOGRARA.Active:=True;
MDOGRARA.Close;
MDOGRARA.SQL.Clear;
MDOGRARA.SQL.Add('SELECT DISTINCT MD_CEMKODU,MD_ADSOYAD,MD_TCKIMLIK,MD_OGRNO FROM TBLMADENKAYIT WHERE MD_TCKIMLIK LIKE :MD_TCKIMLIK');
MDOGRARA.Parameters.ParamByName('MD_TCKIMLIK').Value:=Edit7.text+'%';
MDOGRARA.Open;
end;


procedure TForm3.RzBitBtn1Click(Sender: TObject);
begin
  // Öğrenci Rehber
    GroupBox1.Visible := True;
    Edit5.SetFocus();
end;

procedure TForm3.DBGrid1DblClick(Sender: TObject);
begin
MDOGRARA.Active:=True;
Edit1.Enabled:=False;
GroupBox1.Visible:=False;

//Edit1.Text:=DBGrid1.DataSource.DataSet.FieldByName('MD_CEMKODU').AsString;
//DBEdit1.Text:=DBGrid1.DataSource.DataSet.FieldByName('MD_ADSOYAD').AsString;
//Edit2.Text:=DBGrid1.DataSource.DataSet.FieldByName('MD_TCKIMLIK').AsString;
//Edit3.Text:=DBGrid1.DataSource.DataSet.FieldByName('MD_OGRNO').AsString;

IF MADENKAYIT.Locate('MD_CEMKODU',Edit1.Text,[])=True then
Begin
Edit1.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CEMKODU').AsString;
DBEdit1.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_ADSOYAD').AsString;
Edit2.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_TCKIMLIK').AsString;
Edit3.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_OGRNO').AsString;
Edit4.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_KAYITID').AsString;
DBEdit10.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_BABAMESL').AsString;
ComboBox4.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_BSAGVEFAT').AsString;
DBEdit11.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_ANNEMESL').AsString;
ComboBox5.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_ASAGVEFAT').AsString;
DBEdit12.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_KARDESSAYI').AsString;
DBEdit13.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_OKYKRDSAYI').AsString;
DBEdit14.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_AILEGDUZEY').AsString;
DBEdit15.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_ADRES').AsString;
MaskEdit1.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_TELEFON').AsString;
DBEdit16.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_EPOSTA').AsString;
DBEdit17.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_AILEADRES').AsString;
MaskEdit2.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_AILETELEFON').AsString;
DBEdit18.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_ACILYAKIN').AsString;
MaskEdit3.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_ACILTEL').AsString;
DBEdit19.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_SOSYALMEDYA').AsString;
DBEdit20.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_OZELYETENEK').AsString;
DBEdit21.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_HOBILER').AsString;
ComboBox6.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_BURS').AsString;
ComboBox7.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_BURSIHTY').AsString;
DBEdit22.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_SAGLIKPROB').AsString;
DBEdit23.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_GNLHASTALIK').AsString;
DBEdit24.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_DGRHUSUS').AsString;
MaskEdit4.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_MEZUNYILI').AsString;
DBEdit25.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_MZNORTALAMA').AsString;
ComboBox8.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_EGTDURUM').AsString;
ComboBox9.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CALISIL').AsString;
ComboBox10.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CALISILCE').AsString;
ComboBox11.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CALISYER').AsString;
DBEdit26.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_MSLICDIS').AsString;
DBEdit27.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_POZISYON').AsString;
DBEdit28.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CALISBOLM').AsString;
ComboBox12.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CALISKURUM').AsString;
DBEdit29.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CALKUROZEL').AsString;
ComboBox13.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CALKURMADI').AsString;
ComboBox14.Text:=DBGrid2.DataSource.DataSet.FieldByName('MD_CALISMADEN').AsString;
end;
END;


procedure TForm3.DataSource3DataChange(Sender: TObject; Field: TField);
begin
Edit1.Text:=DBGrid1.DataSource.DataSet.FieldByName('MD_CEMKODU').AsString;
DBEdit1.Text:=DBGrid1.DataSource.DataSet.FieldByName('MD_ADSOYAD').AsString;
Edit2.Text:=DBGrid1.DataSource.DataSet.FieldByName('MD_TCKIMLIK').AsString;
Edit3.Text:=DBGrid1.DataSource.DataSet.FieldByName('MD_OGRNO').AsString;
end;

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
//////////////TEMİZLE/////////////////////
Edit1.Enabled:=True;
//Edit4.Clear;
Edit1.Text:='';
DBEdit1.Text:='';
DBEdit2.Text:='';
Edit2.Text:='';
Edit3.Text:='';
DateTimePicker1.Date:=Date;
DBEdit3.Text:='';
DateTimePicker2.Date:=Date;
DBEdit4.Text:='';
DBEdit5.Text:='';
DBEdit6.Text:='';
DBEdit7.Text:='';
DBEdit8.Text:='';
DBEdit9.Text:='';
DBEdit10.Text:='';
DBEdit11.Text:='';
DBEdit12.Text:='';
DBEdit13.Text:='';
DBEdit14.Text:='';
DBEdit15.Text:='';
MaskEdit1.Text:='';
DBEdit16.Text:='';
DBEdit17.Text:='';
MaskEdit2.Text:='';
DBEdit18.Text:='';
MaskEdit3.Text:='';
DBEdit19.Text:='';
DBEdit20.Text:='';
DBEdit21.Text:='';
DBEdit22.Text:='';
DBEdit23.Text:='';
DBEdit24.Text:='';
MaskEdit4.Text:='';
DBEdit25.Text:='';
DBEdit26.Text:='';
DBEdit27.Text:='';
DBEdit28.Text:='';
DBEdit29.Text:='';
end;
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Tablo da Boş Kayıt Uyarısı

Mesaj gönderen ertank »

greenegitim yazdı:Localate neden kullanıyorsunuz benim genelikle kullandığım yapı aşağıdaki gibi

Kod: Tümünü seç

cumle:='';
        cumle:=cumle+' and firma_id='+IntToStr(firmaid);
        cumle:=cumle+' and carikod='+QuotedStr(edt_CARIKOD.Text);
        cumle:=cumle+' and cari_id<>'+QuotedStr(edt_CARI_ID.Text);

        unqry_CariUyari.Close;
        unqry_CariUyari.SQL.Text:='';
        unqry_CariUyari.SQL.Text:='select * from cariler where 1=1 '+cumle+'';
        unqry_CariUyari.Open;
        unqry_CariUyari.FetchingAll;


        if unqry_CariUyari.RecordCount>0 then
        begin
          MessageBoxW(Handle, 'Bu Cari Kod İle Kayıtlı Zaten Bir Cari Var !',
            'Uyarı', MB_OK + MB_ICONSTOP + MB_DEFBUTTON2);
            edt_CARIKOD.SetFocus;
            Abort;

        end;
Merhaba,

Öncelikle gönderdiğiniz kod ile ilgili bazı noktalara dikkat etmenizde fayda var.
1- unqry_CariUyari.FetchingAll ifadesini yanlış anlamadı isem Tüm kayıtları oku anlamında kullanıyorsunuz. Ancak bu kullanım doğru değil. UniDAC dökümanlarını inceler iseniz bu bir fonksiyon/prosedür değil bir değişken olduğunu görürsünüz. Halen kayıtlar okunup okunmadığını anlamak için kullanılan bir değişkendir. Büyük veriler okunur iken veri okuma işlemi uzun sürebilir. Uygulama bu parametreyi kullanarak veri okuma işleminin tamamlanıp tamamlanmadığını algılar.
Link: https://www.devart.com/unidac/docs/?dev ... gall().htm

Kayıt sayısının doğru olduğundan emin olmak için ise "TUniQuery.Options.QueryRecCount := True" şeklinde ayarladıktan sonra TUniQuery.Open() dediğinizde UniQuery arka planda ikinci bir query daha çalıştırarak toplam kayıt sayısını doğru bir şekilde düzenler ve ardından Open() işemi tamamlanır.

Dolayısı ile aşağıdaki gibi bir kod yazmanız yeterli olacaktır.

Kod: Tümünü seç

  unqry_CariUyari.Close();
  unqry_CariUyari.Options.QueryRecCount := True;
  unqry_CariUyari.SQL.Text:='select * from cariler where 1=1 '+cumle+'';
  unqry_CariUyari.Open();
  if unqry_CariUyari.RecordCount > 0 then
  begin
    MessageBoxW(Handle, 'Bu Cari Kod İle Kayıtlı Zaten Bir Cari Var !',
      'Uyarı', MB_OK + MB_ICONSTOP + MB_DEFBUTTON2);
      edt_CARIKOD.SetFocus();
      Exit();
  end;
2- TUniQuery.SQL.Text değişkenine atama yaptığınız anda daha önceki SQL içeriği silinir ve yeni atama yaptığınız geçerli olur. Dolayısı ile aşağıdaki kod yerine

Kod: Tümünü seç

        unqry_CariUyari.SQL.Text:='';
        unqry_CariUyari.SQL.Text:='select * from cariler where 1=1 '+cumle+'';
bu şekilde yazmanız yeterlidir.

Kod: Tümünü seç

        unqry_CariUyari.SQL.Text:='select * from cariler where 1=1 '+cumle+'';
3- Yazdığınız kod örneğinin TDataSet.BeforePost() olayı dışında bir yerde kullanılıyor ise eğer: Abort kullanımı yerine Exit() kullanmanız daha sağlıklı olacaktır. Abort arka planda sessiz bir "exception" oluşturur. Kullanıcı bunu görmez. İhtiyaç olmadığı halde exception oluşturmak yerine hiç exception oluşmadan prosedür/fonksiyon içinden çıkmak daha doğru bir yöntemdir.


Sorunuza gelince, TDataSet.Locate() kullanmak için birden fazla sebep olabilir.
1- Zaten açık olan bir DataSet içinden arama yapmanın en hızlı yolu TDataSet.Locate() fonksiyonunu kullanmaktır. Sizin verdiğiniz kod örneği ise kapalı bir DataSet için kullanılabilir.

2- Stored Procedur veya Trigger ile işlem yapmak her zaman uygun olmayabiliyor. Hatta birçok genel muhasebe uygulaması stored procedure ve trigger kullanımını neredeyse tamamen bırakmış ve kod ve SQL kullanarak yapmak istediklerini yapmaya başlamışlardır. Şahsen tanıdığım bir firma, kullanmayan ayrı ve çok bilinmiş başka bir firma daha biliyorum. Bu gibi durumlarda stok miktarı bulma, vs. konularında yine TDataSet.Locate() kullanışlı hale gelebiliyor.
Cevapla