Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
İşlem sonunda editi temizleme
#1
Merhaba; listviewde ürün daha önce ekliyse adeti ve toplam fiyatı değişecek.
Buraya kadar sorun yok fakak ürün olsada olmasada işlem sonunda editin temizlenmesini istiyorum ama bir türlü edit temizlenmiyor, nedenini anlayamadım   Huh 
Sorun nereden kaynaklanıyor olabilir?


procedure TForm2.EditUrunKeyPress(Sender: TObject; var Key: Char);
var
  Itm: TListItem;
  I: Integer;
  Urunbuldum: Boolean;
begin
  if SplitViewSatis.Opened then
  begin
    try
      Urunbuldum := False;
      With QueryUrun, LVSatis do
      begin
        Connection := FDConnecMain;
        Close;
        SQL.Clear;
        SQL.Add('Select * From URUNLER');
        SQL.Add('Where BARKOD LIKE ' + QuotedStr('%' + EditUrun.Text + '%'));
        Prepared := True;
        Open;
        if Not IsEmpty then
        begin
          for I := Items.Count - 1 downto 0 do
          begin
            if Pos(EditUrun.Text, Items[I].SubItems[0]) > 0 then
            begin
              EditUrun.Clear;
              Form2.EditUrun.Text := '';
              Form2.Caption := 'var mış bu ürün';
              Urunbuldum := True;
              Break;
            end;
          end;
          if Not Urunbuldum then // Ürün yoksa ekle
          begin
            Itm := LVSatis.Items.Add;
            Itm.Caption := FieldByName('ID').AsString;
            Itm.SubItems.Add(FieldByName('BARKOD').AsString);
            Itm.SubItems.Add(FieldByName('URUN').AsString);
            Itm.SubItems.Add(FieldByName('SATIS').AsString);
            Itm.SubItems.Add('1');
            Itm.SubItems.Add(FieldByName('SATIS').AsString);
            EditUrun.Clear;
            Form2.EditUrun.Text := '';
            Form2.Caption := 'Yokmuş bu ürün';
          end;
        end;
      end;
    except
    end;
  end;
EditUrun.Clear;
 Form2.EditUrun.Text := '';
  Form1.FDQueryUrun.Close;
end;
Cevapla
#2
Merhaba,
except-end yerine finally-end kullanın. Edit clear işleminizi de Finally kısmına yazın.
Örn;
 if SplitViewSatis.Opened then
  begin
    try
     //...
     //...
    finally
      EditUrun.Clear;
      Form2.EditUrun.Text := '';
      Form1.FDQueryUrun.Close;    
    end;
//...
//...

Böylece işlem sonucu ne olursa olsa, son işlem olarak finally kod bölümü tamamlanacaktır.
Cevapla
#3
(09-06-2017, Saat: 15:46)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
except-end yerine finally-end kullanın. Edit clear işleminizi de Finally kısmına yazın.
Örn;
 if SplitViewSatis.Opened then
  begin
    try
     //...
     //...
    finally
      EditUrun.Clear;
      Form2.EditUrun.Text := '';
      Form1.FDQueryUrun.Close;    
    end;
//...
//...

Böylece işlem sonucu ne olursa olsa, son işlem olarak finally kod bölümü tamamlanacaktır.



Değişen birşey olmadı Huh
Cevapla
#4
(09-06-2017, Saat: 16:51)hido Adlı Kullanıcıdan Alıntı:
(09-06-2017, Saat: 15:46)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
except-end yerine finally-end kullanın. Edit clear işleminizi de Finally kısmına yazın.
Örn;
 if SplitViewSatis.Opened then
  begin
    try
     //...
     //...
    finally
      EditUrun.Clear;
      Form2.EditUrun.Text := '';
      Form1.FDQueryUrun.Close;    
    end;
//...
//...

Böylece işlem sonucu ne olursa olsa, son işlem olarak finally kod bölümü tamamlanacaktır.



Değişen birşey olmadı Huh

Kodun son halini (finally bölümü eklenmiş hali) paylaşabilir misiniz?
Cevapla
#5
Birde neden KeyPress, herhangibir tuşa her bastığınızda bu işlemi yapar ?
WWW
Cevapla
#6
(09-06-2017, Saat: 16:58)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(09-06-2017, Saat: 16:51)hido Adlı Kullanıcıdan Alıntı: Değişen birşey olmadı Huh

Kodun son halini (finally bölümü eklenmiş hali) paylaşabilir misiniz?



Son hali bu hocam fakat değişen bir şey yok, edit işlem sonunda temizlenmiyor.


procedure TForm2.EditSatisKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  UrunSat(EditSatis.Text);
end;


function TForm2.UrunSat(SatilanUrunBarkodu: String): String;
var
  I: Integer;
  Itm: TListItem;
  Urunbuldum: Boolean;
begin
  try
    Urunbuldum := False;
  With QueryUrun, LVSatis do
    begin
      Connection := FDConnecMain;
      Close;
      SQL.Clear;
      SQL.Add('Select * From URUNLER Where BARKOD=:BR');
      ParamByName('BR').AsString := SatilanUrunBarkodu;
      Prepared := True;
      Open;
      if Not IsEmpty then
      begin
        for I := Items.Count - 1 downto 0 do
        begin
          if Pos(SatilanUrunBarkodu, Items[I].SubItems[0]) > 0 then
          begin
            Items[I].SubItems[3] :=
              IntToStr(StrToInt(Items[I].SubItems[3]) + 1);
            Urunbuldum := True;
            Break;
          end;
        end;
        if Not Urunbuldum then // Ürün yoksa ekle
        begin
          Itm := LVSatis.Items.Add;
          Itm.Caption := '';
          Itm.SubItems.Add(FieldByName('BARKOD').AsString);
          Itm.SubItems.Add(FieldByName('URUN').AsString);
          Itm.SubItems.Add(FieldByName('SATIS').AsString);
          Itm.SubItems.Add('1');
          Itm.SubItems.Add(FieldByName('SATIS').AsString);
        end;
      end;
    end;
  finally
    EditUrun.Clear;
    Form2.EditUrun.Text := '';
    SatisiHesapla(Self);
    QueryUrun.Close;
  end;
end;
Cevapla
#7
SatisiHesapla içinde EditUrun'e birşeyler yazılıyor olmasın?
There's no place like 127.0.0.1
WWW
Cevapla
#8
Pointbreak koyup kodu f8 ile takip edip nerede kod bloğunun dışına çıkıp geri dönmediğine bakman gerekiyor. Bu şekilde çok sağlıklı ilerlemiyor malesef. Çünkü kodda pek hata görünmüyor. Belki bir yerde hataya düşüyor fakat ekrana patlamıyor olabilir.
WWW
Cevapla
#9
Bir çok değişiklik yaptım sonunda bitti; Emeği geçen herkese teşekkür ederim;

function TForm2.SatisIslemleri(IdNumber: Integer; UBarkod, Urun, Satis: String;
 Adet: Integer; USatis: String): Integer;
var
 I: Integer;
 Itm: TListItem;
 Urunbuldum: Boolean;
begin
 try
   Urunbuldum := False;
   With LVSatis do
   begin
     for I := Items.Count - 1 downto 0 do
     begin
       if Pos(UBarkod, Items[I].SubItems[0]) > 0 then
       begin
         Items[I].SubItems[3] := IntToStr(StrToInt(Items[I].SubItems[3]) + 1);
         SatisAlert('Fiyat ve adet değişikliği yapıldı       ', 2);
         Urunbuldum := True;
         Break;
       end;
     end;
     if Not Urunbuldum then // Ürün yoksa ekle
     begin
       Itm := LVSatis.Items.Add;
       Itm.Caption := IntToStr(IdNumber);
       Itm.SubItems.Add(UBarkod);
       Itm.SubItems.Add(Urun);
       Itm.SubItems.Add(Satis);
       Itm.SubItems.Add(IntToStr(Adet));
       Itm.SubItems.Add(USatis);
       SatisAlert('Yeni ürün girişi yapıldı       ', 2);
     end;
   end;
 finally
   SatisBarkod.Clear;
   SatisiHesapla(Self);
 end;
end;



procedure TForm2.SatisBarkodChange(Sender: TObject);
var
 ID, AD: Integer;
 BR, UR, ST, US: String;
begin
 try
    With QueryUrun, LVSatis do
   begin
     Connection := FDConnecMain;
     Close;
     SQL.Clear;
     SQL.Add('Select * From URUNLER Where BARKOD=:BR');
     ParamByName('BR').AsString := SatisBarkod.Text;
     Prepared := True;
     Open;
     if Not IsEmpty then
     begin
       ID := FieldByName('ID').AsInteger;
       BR := FieldByName('BARKOD').AsString;
       UR := FieldByName('URUN').AsString;
       ST := FieldByName('SATIS').AsString;
       AD := StrToInt('1');
       US := FieldByName('SATIS').AsString;
       SatisIslemleri(ID, BR, UR, ST, AD, US);
     end;
   end;
 finally
FDQueryUrun.Close;
 end;
end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  4 İşlem - PDF Çalışma Sayfası Hazırlama Frrst 0 223 25-08-2023, Saat: 09:58
Son Yorum: Frrst
  İşlem Yapılırken "Lütfen Bekleyiniz" Yazısı OZCANK 21 10.846 25-11-2022, Saat: 19:09
Son Yorum: Hayati
  Matematiksel İşlem apachi2006 8 2.173 20-03-2022, Saat: 16:31
Son Yorum: apachi2006
  Uygulama, geçerli işlem için yanlış türde bir değer kullanıyor. şeklinde hata uyarısı denizfatihi 11 2.987 30-12-2021, Saat: 13:45
Son Yorum: denizfatihi
  Metin Belgesinden satır satır okuyarak multi task ya da multi thread işlem yapma eroniko 2 1.077 23-07-2021, Saat: 13:14
Son Yorum: eroniko



Konuyu Okuyanlar: 1 Ziyaretçi