qury edit

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

qury edit

Mesaj gönderen erdogan_ozkaya »

Arkadaşlar,

dbgrind üzerinde 2 adet alanım var "SAYI" ve "ACIKLAMA"

"SAYI" alanınına 2 girersem birşey yok ama 1 girersem belli bir veri nasıl yazabilirim ?

bu şekilde olmuyor

Kod: Tümünü seç

procedure TPENCERE.QRY1AfterEdit(
  DataSet: TDataSet);
begin
  if   QRY1.FieldByName('SAYIS').Value='1'
  then QRY1.FieldByName('ACIKLAMA').AsString:='TEKLEME';
end;
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: qury edit

Mesaj gönderen ertank »

Merhaba,

TDataSet bileşeni (query nesnesi) AfterEdit olayını sizin istediğiniz zaman tetiklemeyecektir. Çok yüksek ihtimal ile SAYIS alanından çıktığınız zaman tetiklenir ki muhtemelen sizin istediğiniz bu değil. Aşağıda test edilmemiş kod örneğini deneyebilirsiniz.

Kod: Tümünü seç

procedure TForm2.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if DBGrid1.SelectedIndex = 0 then // DBGrid ilk kolonu SAYIS alanına ait olduğu varsayılıyor
  begin
    case Key of
      '1': begin 
        DBGrid1.DataSource.DataSet.FieldByName('ACIKLAMA').AsString := 'TEKLEME';
      end;
    end;
  end;
end;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: qury edit

Mesaj gönderen erdogan_ozkaya »

Cevabınız için teşekkürler ama olmadı ya :(
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: qury edit

Mesaj gönderen SimaWB »

Olmayan ne?
Ne denediniz, ne sonuç aldınız?
There's no place like 127.0.0.1
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: qury edit

Mesaj gönderen hi_selamlar »

Merhaba,

search.php?keywords=calcfield inceyin lütfen.
Herkes cahildir, bazi konularda.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: qury edit

Mesaj gönderen erdogan_ozkaya »

tamam bu şekilde oldu çok teşekkür ederim :)

Kod: Tümünü seç

procedure TPENCERE.dbgrd1KeyPress(Sender: TObject;
  var Key: Char);
begin
 if dbgrd1.SelectedIndex = 5 then // DBGrid ilk kolonu SAYIS alanına ait olduğu varsayılıyor
  begin
    case Key of
      '1': begin
       ///  dbgrd1.DataSource.DataSet.FieldByName('ACIKLAMA').AsString := 'TEKLEME';
        QRY1.Edit;
        QRY1.FieldByName('ACIKLAMA').AsString := 'TEKLEME';
        QRY1.Post;;
      end;
    end;
  end;
end;
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: qury edit

Mesaj gönderen ertank »

Eğer QRY1 durumu dsBrowse (normal dolaşma modunda) iken ve Focus DBGrid üzerinde iken kullanıcı 1 tuşuna basar ise buna rağmen AÇIKLAMA alanı "TEKLEME" olarak değiştirilir. Dolayısıyla benim önerim "DBGrid.State in [dsEdit, dsInsert]" şeklinde bir kontrol ile alan değerini değiştirmek olacaktır. Gezinme halinde iken yanlışlıkla değişiklik yapılmasının önüne geçilmiş olur bu şekilde.

Mesela,
- SAYIS alan değeri 3
- ACIKLAMA alanı değeri "deneme"
- Focus SAYIS kolonunda
- QRY1.State = dsBrowse iken
kullanıcı klavyeden 1 tuşuna basar ise;
* SAYIS alanı değeri 3 olarak kalır
* ACIKLAMA alanı değeri "TEKLEME" olarak değişir.
Cevapla