qury edit

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

qury edit

Mesaj gönderen erdogan_ozkaya » 01 Ağu 2017 12:36

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
Üye
Mesajlar: 1202
Kayıt: 11 Eyl 2015 11:45

Re: qury edit

Mesaj gönderen ertank » 01 Ağu 2017 12:50

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: 806
Kayıt: 03 Eki 2007 01:00

Re: qury edit

Mesaj gönderen erdogan_ozkaya » 01 Ağu 2017 01:07

Cevabınız için teşekkürler ama olmadı ya :(

Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1310
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

Re: qury edit

Mesaj gönderen SimaWB » 01 Ağu 2017 01:13

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: 522
Kayıt: 05 May 2005 02:24
Konum: DelphiTürkiye.COM

Re: qury edit

Mesaj gönderen hi_selamlar » 01 Ağu 2017 01:28

Merhaba,

search.php?keywords=calcfield inceyin lütfen.
Herkes cahildir, bazi konularda.

erdogan_ozkaya
Üye
Mesajlar: 806
Kayıt: 03 Eki 2007 01:00

Re: qury edit

Mesaj gönderen erdogan_ozkaya » 01 Ağu 2017 01:39

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
Üye
Mesajlar: 1202
Kayıt: 11 Eyl 2015 11:45

Re: qury edit

Mesaj gönderen ertank » 01 Ağu 2017 08:28

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