dbgrid de eof hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kazimates
Üye
Mesajlar: 332
Kayıt: 01 Tem 2005 12:40
Konum: Kıbrıs
İletişim:

dbgrid de eof hatası

Mesaj gönderen kazimates »

aşağıdaki koda bakacak olursanız ve bu kod dbgrid1 in üzerinde yukarı aşağı oklarla gidince en alt satıra ulaştığımda sonuncu kayıt ve burada tekrar bir sefer daha aşağı oka basacak olursam

Kod: Tümünü seç

procedure TDovizForm.DBGrid1DrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
var
   dovtip,dkkayitno:integer;
begin

   dkkayitno:=DM1.ADOQDOVIZKUR.fieldbyname('KAYITNO').Value;
   dovtip:=DM1.ADOQDOVIZKUR.fieldbyname('DOVIZTIPI').AsInteger;
   EDovTip.Text:=DM1.ADOQDOVIZKUR.fieldbyname('DOVIZTIPI').Value;
   DateTimePicker1.DateTime:=DM1.ADOQDOVIZKUR.fieldbyname('DOVIZTARIHI').AsDateTime;
  {
   with DM1.ADOQDovizKur do
   begin
      close;
      sql.Clear;
      sql.Text:='select * from DOVIZKUR where KAYITNO=:KN';
      Parameters.ParamByName('KN').Value:=dkkayitno;
      If not prepared then
         prepared;

      Active:=True;
   end;
   }
   with DM1.ADOQDOVIZLISTESI do
   begin
      close;
      sql.Clear;
      sql.Text:='select * from DOVIZLISTESI '+
                'where DOVIZTURU=:D1';
      Parameters.ParamByName('D1').Value:=dovtip;
      If not prepared then
         prepared;

      Active:=True;
      ComboBox1.Text:=dm1.ADOQDOVIZLISTESI.fieldbyname('DOVIZADI').AsString;
   end;

   Edit1.Text:=DM1.ADOQDOVIZKUR.fieldbyname('DOVIZALIS').AsString;
   Edit2.Text:=DM1.ADOQDOVIZKUR.fieldbyname('DOVIZSATIS').AsString;
   Edit3.Text:=DM1.ADOQDOVIZKUR.fieldbyname('EFEKTIFALIS').AsString;
   Edit4.Text:=DM1.ADOQDOVIZKUR.fieldbyname('EFEKTIFSATIS').AsString;
end;
vediği hata ise aşağıdaki gibidir

Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: dbgrid de eof hatası

Mesaj gönderen sabanakman »

kazimates yazdı:dkkayitno:=DM1.ADOQDOVIZKUR.fieldbyname('KAYITNO').Value;
gibi alanların Value değerleri variant tipli değer üretir ve bunlar boş değer için NULL değeri üretirler. Bu NULL değerleri standart tiplere atarken belirttiğiniz hata gelir. Bu gibi durumlara düşmemek için muhakkak AsString, AsFloat, AsInteger gibi dönüşüm fonksiyonlarıyla atama yapmak daha sağlıklı olacaktır. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
kazimates
Üye
Mesajlar: 332
Kayıt: 01 Tem 2005 12:40
Konum: Kıbrıs
İletişim:

Mesaj gönderen kazimates »

Kod: Tümünü seç

dkkayitno:=DM1.ADOQDOVIZKUR.fieldbyname('KAYITNO').asinteger;
   dovtip:=DM1.ADOQDOVIZKUR.fieldbyname('DOVIZTIPI').AsInteger;
   EDovTip.Text:=DM1.ADOQDOVIZKUR.fieldbyname('DOVIZTIPI').asstring;
dediğin gibi yaptım sabanakman ve kesinlikle problem çözüldü konuyla ilgili cevabın ve beni dertten kurtardığın için çok teşekkür ederim.
Cevapla