Database kaydet güncelle sil

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Database kaydet güncelle sil

Mesaj gönderen hido »

Merhaba;

listview deki kayıtları databaseye kayıt ve güncellemede işin işinden çıkamadım, sürekli kayıt ekleniyor...

Yapmak istedikleri...
1. listviewde kayıt varsa databasede ki kayıt güncellenecek
2. listviewde kayıt var databasede kayıt yok ise ekleyecek...
3. Listviewdeki kayıt silinmiş ise databasedende silinecek..

Kod: Tümünü seç

procedure TForm1.KaydetClick(Sender: TObject);
begin
  with ListView1 do
  begin
    for i := Items.Count - 1 downto 0 do
    begin
      with MEKANLAR do
      begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM MEKAN Where ID=:ID');
        ParamByName('ID').Value := Items[i].SubItems[5];
        Prepared := True;
        Open;
        if Not IsEmpty then
        begin
          Close;
          SQL.Clear;
          SQL.Add('Update MEKAN Set SIRANO=:SR, ADI=:AD, ADRES=:AS, TELLEFON=:NO');
          SQL.Add('Where ID =' + Items[i].SubItems[5]);
          ParamByName('SR').AsString := ListView1.Items[i].SubItems[0];
          ParamByName('AD').AsString := ListView1.Items[i].SubItems[1];
          ParamByName('AS').AsString := ListView1.Items[i].SubItems[2];
          ParamByName('NO').AsString := ListView1.Items[i].SubItems[3];
          ExecSQL;
        end
        else
        begin
          Close;
          SQL.Clear;
          SQL.Add('Insert Into MEKAN (SIRANO, ADI, ADRES, TELEFON)');
          SQL.Add(' Values (:SR, :AD, :AS, :NO)');
          ParamByName('SR').AsString := ListView1.Items[i].SubItems[0];
          ParamByName('AD').AsString := ListView1.Items[i].SubItems[1];
          ParamByName('AS').AsString := ListView1.Items[i].SubItems[2];
          ParamByName('NO').AsString := ListView1.Items[i].SubItems[3];
          ExecSQL;
        end;
      end;
    end;
  end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Database kaydet güncelle sil

Mesaj gönderen mrmarman »

ListView'i SubItems[5] leri bir kontrol edin, ID'leri eklemeyi yanlışlıkla ihmal etmiş veya sıra kaydırıp 4 veya 6 ve üzerine koymuş olabilirsiniz. Dolayısıyla hep IsEmpty True oluyor ve kayıt ekleme bloğunu çalıştırıyor olabilir. Sürekli ekliyor dediğiniz için bunu kontrol etmekte fayda gördüm.

Bu arada kod terbiyenizi beğendim, okuması kolay olmuş.
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Database kaydet güncelle sil

Mesaj gönderen hido »

mrmarman yazdı:ListView'i SubItems[5] leri bir kontrol edin, ID'leri eklemeyi yanlışlıkla ihmal etmiş veya sıra kaydırıp 4 veya 6 ve üzerine koymuş olabilirsiniz. Dolayısıyla hep IsEmpty True oluyor ve kayıt ekleme bloğunu çalıştırıyor olabilir. Sürekli ekliyor dediğiniz için bunu kontrol etmekte fayda gördüm.

Bu arada kod terbiyenizi beğendim, okuması kolay olmuş.

Kod terbiyesini ctrl + d ile hallediyorum. :lol:

Bu arada kodlama doğruymuş hocam, sadece verileri databaseden tekrar açıkmeyi ekledim kodarın sonuna; :N)

Fakat halen şunu bir türlü çözemedim listview de silinen güncelleme ve kayıt işlemi sırasında nasıl silebilirim :D
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Database kaydet güncelle sil

Mesaj gönderen mrmarman »

CTRL+D'yi bilip de kullananı az gördüğümden say. Tercihini düzenli çalışmadan yana kullanmak zaman da kazandırır verim de artar.

Silme işine gelince, bir tane DELETE FROM sql yazacak, Listview'den kayıt silme aşamasında onu çalıştıracaksınız.
silinecek kayıt da tahmin edileceği üzere seçili olan item için ise selected.SubItems[5]; oluyor. Buradaki değeri silmeden hemen önce sağlama alıp, sildikten sonra veritabanından da DELETE FROM sql'de kullanırsınız.
Resim
Resim ....Resim
Cevapla