Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' Hatas

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' Hatas

Mesaj gönderen brs »

Selma,

Databasede Adres, Telefon ve Onaylı alanlarım var Tüm CheckBox bilgilerini aynı anda çektiğimde 'not found' bilgisi geliyor fakat tek tek çekince sorun yok bu durumu nasıl aşabilirim...

Kod: Tümünü seç

procedure TForm1.LocalDatabase(Sender: TObject);
begin
  try
    with LocalAyarlar do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * From Ayarlar');
      Prepared := True;
      Open;
      if Not IsEmpty then
      begin
      Adres.Checked := FieldByName('ADRES').Value;
       Tel.Checked := FieldByName('TELEFON').Value;
       Onay.Checked := FieldByName('ONAYLI).Value;
      end;
    end;
  except
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen xozcanx »

Merhaba brs
Aklıma ilk gelen şey, value değerini aldığın alanda 1 yada 0 değerini tutuyor olmalısın, eger bu değerlerde "null" alan varsa bu hatayı veriyordur.

İyi Çalışmalar.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen brs »

VarIsNull ekledikten sonra 'not found' hatası vermedi fakat 0 veya 1 olsa bile CheckBox da herhangi bir değişiklik olmuyor...

Bu arada bir veri çekince sorun yok birden fakla olunca olması ilginç geldi bana...

Adres.Checked := VarIsNull(FieldByName('ADRES').Value);
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen xozcanx »

Kod: Tümünü seç

if not (FieldByName('ADRES').Value=null) Then
 Adres.Checked := FieldByName('ADRES').Value;
birde ilk kayıt oluşrurulduğunda veritabanındaki alanları null bırakma "0" değerini ata işlem olduğunda Checkbox işaretlenir "1" değerini alır.
Bir diğer durum ise Checked'in Boolean bir değer olması, eğer 0 ve 1 leri Firebird kullanrak veritabanında tutuyorsan ve bu alanlar integer değerde ise yukarıdaki gibi bir kodda yine hata verebilir.

kodları şu şekilde bir değiştir ve sonuca bak.

Kod: Tümünü seç

procedure TForm1.LocalDatabase(Sender: TObject);
begin
  try
    with LocalAyarlar do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * From Ayarlar');
      Prepared := True;
      Open;
       Adres.Checked := StrToBool(LocalAyarlarADRES.Text);
       Tel.Checked   := StrToBool(LocalAyarlarTELEFON.Text);
       Onay.Checked  := StrToBool(LocalAyarlarONAYLI.Text);
    end;
  Except on E: Exception do
    Begin
      ShowMessage('HataTürü : '+PChar(E.ClassType)+#10
                 +'HataKodu : '+PChar(E.Message));
    end;
end;
Şu şekilde de daha açık olabilir test için..
boş bir form üzerine 3 adet edit, 3 Adet Checkbox ve 1 adet Buton koy ve aşağıdaki kodları sayfaya yerleştir. Edit içerisine girdiğin 1 ve 0 değerlerine göre Checkboxların durumu değişir.

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text :='0';
  Edit2.Text :='0';
  Edit3.Text :='0';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   CheckBox1.Checked:=StrToBool(Edit1.Text);
   CheckBox2.Checked:=StrToBool(Edit2.Text);
   CheckBox3.Checked:=StrToBool(Edit3.Text);
end;
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen brs »

Yeni kayıt değil sadece değeri değiştiriyorum 1 veya 0, Firebird değil sqlite kullanıyorum 50 tane kod seçeneği denedim fakat olmadı...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen xozcanx »

Yaptığın değişiklikleri anlık olarak veritabanı tarafında yada Grid üzerinde izliyormusun 1 yada 0 oluyormu burada sıkıntı yoksa vede Ayarlar tablonda 1 den fazla satır yoksa Select * From Ayarlar dediğinde bilgileri görüntülemen gerekir. varsa son satırdaki bilgilere ulaşıyor olabilirsin. sorgu sonucunu Grid üzerinde de gözlemleyebilrsin. Hata yapılan noktayı tespit etmen kolay olur düşüncesindeyim.
Kolay Gelsin.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen brs »

Tabi, tabi databasede tek satır var ve anlık olarak değişiklik yansıyor tek sorun ise programı kapatıp tekrar açtığımda ya hata veriyor yada veri bilgisi gelmiyor...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen tayipk »

slm

Kod: Tümünü seç

Adres.Checked := FieldByName('ADRES').Value;
yerine

Kod: Tümünü seç

Adres.Checked := FieldByName('ADRES').Asstring;
denermisin
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen thelvaci »

FieldByName('FieldName').AsBoolean kullanın.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Databaseden Çoklu CheckBoxa Veri Çekiminde 'not found' H

Mesaj gönderen brs »

Yardımcı olan herkese teşekkür ederim sorunu bu şekilde çözdüm...

Kod: Tümünü seç

procedure TForm3.LocalDatabase(Sender: TObject); // Form Rengi
var
  Adres, Tel, Ony: Boolean;
begin
  try
    with LocalAyarlar do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * From Ayarlar');
      Prepared := True;
      Open;
      if Not IsEmpty then
      begin
        Adres := FieldByName('ADRES').Value;
       Tel := FieldByName('TELEFON').Value;
        Ony := FieldByName('ONAYLI').Value;

        Adress.Checked := (Adres);
       Telefonn.Checked := (Tel);
        Onayy.Checked := (Ony);
      end;
    end;
  except
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla