Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
sql Open ve Execsql çalıştırma hakkında
#1
İyi günler

Aşağıdaki fonksiyonu 
data_form.siparis_verial('select * from Siparis order by S_IMALAT_NO');
olarak kullanınca dönen sonucu kullanabiliyorum.

 data_form.siparis_verial ( 'DELETE FROM Siparis WHERE SVK_HRK_FIS_NO = ' +  QuotedStr(trim(silinecek.Text)));

olarak kullanırsan komut çalışıyor. Silme işlemi gerçeklesiyor ama

commandtext does not return a result set hatası veriyor.  Fonksiyondaki satırı
siparis_sorgu.EXECSql;
   değiştirince hata vermeden siliyor ama bu seferde veri çekemiyorum.

Aynı fonksiyon ile veri çekme ve silmenin bir yöntemi var mı ?

Sql open ile açında değer gönderdiğini  execsql ile değer göndermeden sorguyu çalıştırdığını biliyorum.


  function Tdata_form.siparis_VeriAl(cumle:AnsiString): Boolean;
   begin
    if not assigned(siparis_sorgu)  then siparis_sorgu:= TADOQuery.Create(nil); // siparis sorgu yoksa oluştur.
    if not assigned(siparis_kaynak) then siparis_kaynak := TDataSource.Create(nil);// siparis kaynak yoksa oluştur.
    try
     Siparis_sorgu.Connection := Sunucu_baglan;
     if siparis_sorgu.Active then siparis_sorgu.Close;
     Siparis_sorgu.SQL.clear;
     siparis_sorgu.SQL.Add(cumle);
     Siparis_sorgu.Prepared:=true;
     siparis_sorgu.open;
     result:=true; // doğru çalıştı
     siparis_kaynak.DataSet := Siparis_sorgu;
      siparis_kaynak.Enabled := true;
      except
     HandleCreateException;
     Application.MessageBox('Sipariş tablosu yok veya sipariş sorgusunda hata!', 'Uyarı', MB_OK + MB_ICONWARNING);
     Result:=false; // hata oluştu
     end;
      
    
   end;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#2
Merhaba,

Daha önce oluşturmuş olduğum (FMX için) FireDac kütüphanesini kullanarak çalıştırabileceğiniz SELECT ve INSERT, UPDATE, DELETE işlemleri için 2 tane fonksiyonu paylaşıyorum. İşinize yarayacaktır.


Select işlemi için

begin
  fdQuery := TFDQuery.Create(nil);
 fdQuery.Active := false;
 fdQuery.Connection := conn;
 fdQuery.SQL.Text := query;
 fdQuery.Active := true;
 fdQuery.Open;
 Result := fdQuery;
end;



Insert, Update ve Delete işlemleri için

begin
 fdQuery := TFDQuery.Create(nil);
 fdQuery.Active := false;
 fdQuery.Connection := conn;
 fdQuery.SQL.Text := query;
 fdQuery.ExecSQL;
 Result := 1; // sonuç size bağlı.
end;
Cevapla
#3
Merhaba,
Fonksiyona bir sorgu tipi parametresi ekleyerek sorunu çözebilirsiniz.
type
 TİşlemTürü = (SQLSorgusuYap, SQLÇalıştır);
function TForm2.siparis_VeriAl(cumle: AnsiString;
  İşlemTürü: TİşlemTürü): Boolean;
begin
 case İşlemTürü of
   TİşlemTürü.SQLSorgusuYap:
     begin

     end;
   TİşlemTürü.SQLÇalıştır:
     begin

     end;
 end;
end;
Cevapla
#4
Abdullah bey , Fesih bey cevaplarınız için teşekkür ederim.

Allah c.c razı olsun.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  triger hakkında basit bir soru. Bay_Y 8 1.003 17-08-2023, Saat: 20:05
Son Yorum: Tuğrul HELVACI
  DBNETLIB Hatası hakkında adelphiforumz 5 1.759 02-06-2023, Saat: 14:18
Son Yorum: Misc-2
  Değişkendeki cümleyi çalıştırma barissagir 3 813 17-01-2023, Saat: 14:47
Son Yorum: barissagir
  MSSQl üzerinde çalışan bir sorgunun durumu hakkında bilgi almak. Bay_Y 5 2.064 21-09-2021, Saat: 11:26
Son Yorum: Bay_Y
  En yakın değeri bulmak hakkında adelphiforumz 8 4.473 25-02-2021, Saat: 22:53
Son Yorum: adelphiforumz



Konuyu Okuyanlar: 1 Ziyaretçi