SQL Neden Görevini Yerine Getirmiyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

SQL Neden Görevini Yerine Getirmiyor

Mesaj gönderen husonet »

Arkadaşlar uygulamamda yazdığım programda bir bug yakaladım yazmış olduğum sql görevini yerine getirmiyor hiç bir şekilde hata mesajı almıyorum veritabanım ACCESS

Kod: Tümünü seç

procedure TCariAcilisFrm.ADODataSet1BeforeDelete(DataSet: TDataSet);
begin
//Cöp Tablosundan ilgili kaydı bul ve sil
        with AdoQueryHrk do
        Begin
            Close;
            Sql.Clear;
            sql.Add('Delete  from CopHareketTablo where CariKod = :CariKod');
            Parameters.ParamByName('CariKod').Value := AdoDataSet1.fieldByName('CariKod').AsString;
            ExecSQL;
        end;
end;
İyi Akşamlar

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Bu olayda bir şey daha dikkatimi veritabanını açık olarak işlem yaparken takip ettim SQL de herhangi bir sorun yok ilginç olan tablodan kayıt ilk başta silindi diye imleniyor sonra kayıt tekrar var oluyor.

Sizce ben nerde hata yapıyor olabilirim.


İyi Geceler.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Arkadaşlar problemin neden kayanaklandığını çözdüm AfterPost Eventine yazdığım kodlar etkiliyormuş.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

bir commit ,rollback sorunu olabilir belki manuel b ir transaction filan yapiyor musunuz?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Ne güzel Hüseyin hocam, kendin sor kendin cevapla :lol:

Kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Fahrettin abi transaction kullanmadım birde ADO ile transaction kullanımı nasıl oluyor onuda bilmiyorum zaten. AfterPost'a yazdığım kodlar başka bir tabloya ekleme veya düzenleme işi yapıyordu bu akşam o kodları AfterInsert ile AfterEdit'e yazmayı düşünüyorum.

Arkadaşlar birde kafama takılan bir noktayı daha sormak istiyorum After ile Before arasındaki fark nedir.

Teşekkür Ederim.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Sanırım before olunca o sql cümlesini çalıştırmadan afterda çalıştırdıktan sonra çalıştırıyor.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

evet aynen öyle. before : önce, after :sonra demek.

Yani beforePost olayı kaydetmeden önce, AfterPost olayı kaydettikten sonra çalışır.

Kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Arkadaşlar bu olayı hallettim nasıl hallettiğimi yazayım.

İlk önce Glabal bir değişken tanımladım.

Kod: Tümünü seç

var
        CariKodum:String;

daha sonrada glabal değişkene BeforePost olayında atama yaptım

Kod: Tümünü seç

procedure TCariAcilisFrm.ADODataSet1BeforePost(DataSet: TDataSet);
begin
   CariKodum := AdoDataSet1.fieldByName('CariKod').AsString;
end;
Diğer kodlarıda yazıyorum

Kod: Tümünü seç

procedure TCariAcilisFrm.ADODataSet1AfterPost(DataSet: TDataSet);
begin
    with AdoQueryHrk Do
    Begin
        Close;
        Sql.Clear;
        Sql.Add('Select * From CopHareketTablo where CariKod =:CariKod');
        Parameters[0].Value := AdoDataSet1CariKod.AsString;
        Open;
    End;
    if AdoQueryHrk.RecordCount > 0 Then
    Begin
        with AdoQueryHrk do
        Begin
            Close;
            Sql.Clear;
            sql.Add('update CopHareketTablo Set IslemNo = :IslemNo, Tarih = :Tarih, IslemTuru = :islemTuru, BorcTutari = :BorcTutari, AlacakTutari = :AlacakTutari where CariKod =:CariKod');
            Parameters[0].Value := 0;
            Parameters[1].Value := AdoDataSet1.fieldByName('Tarih').AsDateTime;
            Parameters[2].Value := AdoDataSet1.fieldByName('IslemTuru').AsString;
            Parameters[3].Value := AdoDataSet1.fieldByName('Borc').AsFloat;
            Parameters[4].Value := AdoDataSet1.fieldByName('Alacak').AsFloat;
            Parameters[5].Value := AdoDataSet1.fieldByName('CariKod').AsString;
            ExecSql;
        end;
    End
    Else
    Begin
        with AdoQueryHrk do
        Begin
            Close;
            Sql.Clear;
            sql.Add('insert into CopHareketTablo(IslemNo, CariKod, Tarih, IslemTuru, BorcTutari, AlacakTutari) values(:IslemNo, :CariKod, :Tarih, :islemTuru, :BorcTutari, :AlacakTutari)');
            Parameters[0].Value := 0;
            Parameters[1].Value := AdoDataSet1.fieldByName('CariKod').AsString;
            Parameters[2].Value := AdoDataSet1.fieldByName('Tarih').AsDateTime;
            Parameters[3].Value := AdoDataSet1.fieldByName('IslemTuru').AsString;
            Parameters[4].Value := AdoDataSet1.fieldByName('Borc').AsFloat;
            Parameters[5].Value := AdoDataSet1.fieldByName('Alacak').AsFloat;
            ExecSql;
        end;
    End;
end;

Kod: Tümünü seç

procedure TCariAcilisFrm.ADODataSet1AfterDelete(DataSet: TDataSet);
begin
//Cöp Tablosundan ilgili kaydı bul ve sil
        with AdoQueryHrk do
        Begin
            Close;
            Sql.Clear;
            sql.Add('delete from CopHareketTablo where CariKod =:CariKod');
            Parameters.ParamByName('CariKod').Value := CariKodum;
            ExecSQL;
        end;
end;
Bütün ilgilenen arkadaşlar teşekkür ederim.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Cevapla