Delphi Can
Çözüldü-sql kodu dengesiz çalışıyor - Baskı Önizleme

+- Delphi Can (http://www.delphican.com)
+-- Forum: Delphi (http://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (http://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Çözüldü-sql kodu dengesiz çalışıyor (/showthread.php?tid=3780)



Çözüldü-sql kodu dengesiz çalışıyor - sadikacar60 - 06-07-2019

arkadaşlar aşagıdaki kod çalışmıyor kodu satırın birinde durdurdugumda tekrar çalıştırdıgımda problemsiz çalışıyor. çalışmaya devam ediyor.
ama kodu durdurma yapmazsam çalışmıyor.

tabloda 11 bin kayıt var   bu konuda bir öneriniz var mı acaba 

saygılarımla

procedure dbTBL_KASA_UPDATE_yap(bid,kolon,data:string);
var
s:string;
begin
s:='UPDATE TBL_KASA set '+kolon+'='''+data+''' where BID='+bid;
DMsettings.IBQuery1.Close;
DMsettings.IBQuery1.SQL.Clear;
DMsettings.IBQuery1.SQL.Add(s);
DMsettings.IBQuery1.ExecSQL;
DMsettings.IBTransaction1.CommitRetaining;
ShowMessage('Ok');
end;

DMsettings.IBTransaction1.Active:=false;
DMsettings.IBTransaction1.Active:=false;
DMsettings.IBDatabase1.DatabaseName:=_RecPcFolderYol+'system\DB\ACRKNTDB.FDB';
DMsettings.IBDatabase1.Connected:=true;
DMsettings.IBTransaction1.Active:=True;

DMsettings.IBQuery1.Active:=True;




s:='UPDATE TBL_KASA set '+kolon+'='''+data+''' where BID='+bid;
DMsettings.IBQuery1.Close;
DMsettings.IBQuery1.SQL.Clear;
DMsettings.IBQuery1.SQL.Add(s);
DMsettings.IBQuery1.ExecSQL;
DMsettings.IBTransaction1.CommitRetaining;
//ShowMessage('Ok');
tüm bağlantıları kod içinde tekrar yaptırdım.
sanırım bir yerde bağlantıyı koparıyoruz.
yukardaki şekilde çalışıyor

merak ettiğim bir şey var datamodule create de tabloya bağlanıp sürekli bağlı kalmak mı doğru yoksa bir bağlantı procedure oluşturup
her işlemden önce bağlanmak mı daha doğru

saygılarımla


Cvp: sql kodu dengesiz çalışıyor - cinarbil - 06-07-2019

Fikir vermesi açısından 
datamodul içerisine  fonksiyon yazıyorum ihtiyaç duyunca bağlanıyorum işin bitince aşağıdaki gibi bağlantıları kapatıyorum.
 
if assigned(data_form.siparis_sorgu)      then FreeAndNil(data_form.siparis_sorgu);
if assigned(data_form.siparis_kaynak)     then FreeAndNil(data_form.siparis_kaynak);
programın çalışması değil yazım kurallarına uyulması gerektiğini
aşağıdaki bilgilerin tamamı bu formdan öğrendim ve uygulamaya çalıştım 
 function Tdata_form.siparis_oku(komut:AnsiString;yaz:boolean): Boolean;
  var mesaj:string;
 begin
     if not assigned(siparis_sorgu)  then siparis_sorgu  := TADOQuery.Create(nil); // siparis oku işlemleri sorgu yoksa oluştur.
     if not assigned(siparis_kaynak) then siparis_kaynak := TDataSource.Create(nil);// siparis oku işlemleri kaynak yoksa oluştur.
     try
         siparis_sorgu.Connection := Sunucu_baglan;
         if siparis_sorgu.Active then siparis_sorgu.Close; //  siparis oku işlemler sorgusu aktif ise kapat.
         siparis_sorgu.SQL.Clear;
         // memo1.Text := komut;
         //  memo1.Lines.SaveToFile('c:\sql.txt'); son çalışan komutu incelemek için ekledim.
         siparis_sorgu.sql.Add(komut);
         siparis_sorgu.Prepared := true;
         if (yaz) then siparis_sorgu.ExecSQL else siparis_sorgu.open;
         result:=true; // doğru çalıştı
         siparis_kaynak.DataSet := siparis_sorgu;
         siparis_kaynak.Enabled := true;
                    except  on E: Exception do
                     begin
                      if assigned(siparis_sorgu) then siparis_sorgu.Free;
                      if assigned(siparis_kaynak) then siparis_kaynak.Free;
                      mesaj:='Siparis Sorgu okuma başarısız. Hata mesajı : '+e.Message;
                      Application.MessageBox(PWideChar(mesaj), 'Hata', MB_OK + MB_ICONERROR);
                      result:=false; // hata oluştu
                      exit;
                      end;
     end;
 end;



sql kodu dengesiz çalışıyor - mcuyan - 07-07-2019

hocam bu satıra gerek var mı bilmiyorum..
// DMsettings.IBTransaction1.CommitRetaining;
ayrıca bir de execute ile denermisiniz.


Cvp: sql kodu dengesiz çalışıyor - sadikacar60 - 11-07-2019

Kod:
procedure dbTBL_KASA_UPDATE_yap(bid,kolon,data:string);
var
s:string;
begin
ResepsiyonDBbaglan;

s:='UPDATE TBL_KASA set '+kolon+'='''+data+''' where BID='+bid;
DMsettings.IBQuery1.Close;
DMsettings.IBQuery1.SQL.Clear;
DMsettings.IBQuery1.SQL.Add(s);
DMsettings.IBQuery1.ExecSQL;
DMsettings.IBTransaction1.CommitRetaining;
//ShowMessage('Ok');
end;
kod yukardaki şekilde stabil çalışıyor execute yaptıgımda hata veriyor 
CommitRetaining  kodunu koymadığım zaman üst üste güncelleme yapmak istediğim zaman yapmıyor 1 kere yapıyor başka güncellem yapmıyor. bu şekilde yapınca sorun olmuyor çok teknik detayını bilmiyorum forumlardan böyle çözüm bulmuştum saygılarımla


Çözüldü-sql kodu dengesiz çalışıyor - mcuyan - 11-07-2019

Hocam şu satırıda şöyle yazmanızı tavsiye edeceğim.

s:='UPDATE TBL_KASA set '+kolon+QuotedStr('=') '+data+' where BID='+bid;

Çünki '=' kısmı yanlış yazmışsınız..