Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Çözüldü sql sorgu 1 kere çalışıyor ikincide hata veriyor
#1
arkadaşlar lazarusda aşağıdaki kod ilk çalıştığında hata vermiyor ama ikinci kez data geldiğinde hata veriyor neyi eksik yapıyorum acaba

not. veritabanına create eventinde bir kere bağlanıyorum hep bağlı kalıyıor.

saygılarımla

//*****************************************************************
function FEN_Dogru_Yanlis_Kontrolu(KID:string;soru:string): string;
var
sonuc:string;
begin
try
 DMvt.SQLQuery1.SQL.Clear;
 DMvt.SQLQuery1.SQL.Add('select * from TBL_FEN where KID='+KID );
 DMvt.SQLQuery1.Open;
   sonuc:=DMvt.SQLQuery1.fieldbyname(soru).value;

   Result :=sonuc;
except//**
begin
end;
end; //**
end;
//***************************************************************** 
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#2
(23-06-2019, Saat: 16:40)sadikacar60 Adlı Kullanıcıdan Alıntı: arkadaşlar lazarusda aşağıdaki kod ilk çalıştığında hata vermiyor ama ikinci kez data geldiğinde hata veriyor neyi eksik yapıyorum acaba

not. veritabanına create eventinde bir kere bağlanıyorum hep bağlı kalıyıor.

saygılarımla

//*****************************************************************
function FEN_Dogru_Yanlis_Kontrolu(KID:string;soru:string): string;
var
sonuc:string;
begin
try
 DMvt.SQLQuery1.SQL.Clear;
 DMvt.SQLQuery1.SQL.Add('select * from TBL_FEN where KID='+KID );
 DMvt.SQLQuery1.Open;
   sonuc:=DMvt.SQLQuery1.fieldbyname(soru).value;

   Result :=sonuc;
except//**
begin
end;
end; //**
end;
//*****************************************************************  
Merhaba,

SQLQuery1.Open ile ilk döngüde açıyorsunuz nesneyi. Sonrasında tekrar açmaya çalışınca muhtemelen nesnenin açık olduğunu söylüyor. Kodunuzu şu şekilde güncellerseniz çözüme ulaşırsınız;


function FEN_Dogru_Yanlis_Kontrolu(KID:string;soru:string): string;
var
  sonuc:string;
begin

 DMvt.SQLQuery1.Close; ///--- Kapatıyoruz
 DMvt.SQLQuery1.SQL.Clear;
 DMvt.SQLQuery1.SQL.Add('select * from TBL_FEN where KID='+KID );
 DMvt.SQLQuery1.Open;

   sonuc:=DMvt.SQLQuery1.fieldbyname(soru).value;

   Result :=sonuc;
end;

İyi çalışmalar.
kisisel_logo_dark.png
WWW
Cevapla
#3
Hocam Add yerine Text:= kullansanız belki sorun olmayacak.. Ama ADd ile her seferinde ilk sorguya diğer sorguları ekleyerek devam ediyorsunuz.. yani 2. sorgunuzun içeriği:
select * from TBL_FEN where KID='+KID select * from TBL_FEN where KID='+KID
oluyor.

Her select den önce mutalaka
DMvt.SQLQuery1.SQL.Close;
DMvt.SQLQuery1.SQL.Clear;
....
..
..
DMvt.SQLQuery1.SQL.Open;
yapınız tıpkı Halil Arkadaşımızın bahsettiği gibi.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#4
(23-06-2019, Saat: 18:09)mcuyan Adlı Kullanıcıdan Alıntı: Hocam Add yerine Text:= kullansanız belki sorun olmayacak.. Ama ADd ile her seferinde ilk sorguya diğer sorguları ekleyerek devam ediyorsunuz.. yani 2. sorgunuzun içeriği:
select * from TBL_FEN where KID='+KID select * from TBL_FEN where KID='+KID
oluyor.

Her select den önce mutalaka
DMvt.SQLQuery1.SQL.Close;
DMvt.SQLQuery1.SQL.Clear;
....
..
..
DMvt.SQLQuery1.SQL.Open;
yapınız tıpkı Halil Arkadaşımızın bahsettiği gibi.
Add'den önce Clear mevcut.
kisisel_logo_dark.png
WWW
Cevapla
#5
@Halil Han BADEM Genel kullanım açısından standart'ı belirttim Smile
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#6
Hatanın ne olduğunu yazabilir misin ?
WWW
Cevapla
#7
öncelikle zaman ayırıp cevap yazdığınız için teşekkür ederim.
DMvt.SQLQuery1.SQL.Close;  //hata veriyor
DMvt.SQLQuery1.SQL.Text('select * from TBL_FEN where KID='+KID );  //hata veriyor
saygılarımla

Derleme Projesi, Hedef: LGS_MAT_VIDEO.exe: Çıkış kodu 1, Hatalar: 1, İpuçları: 1
udmvt.pas(301,22) Error: identifier idents no member "Close"
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#8
(23-06-2019, Saat: 21:21)sadikacar60 Adlı Kullanıcıdan Alıntı: öncelikle zaman ayırıp cevap yazdığınız için teşekkür ederim.


 DMvt.SQLQuery1.SQL.Close;  //hata veriyor
 DMvt.SQLQuery1.SQL.Text('select * from TBL_FEN where KID='+KID );  //hata veriyor

saygılarımla

Derleme Projesi, Hedef: LGS_MAT_VIDEO.exe: Çıkış kodu 1, Hatalar: 1, İpuçları: 1
udmvt.pas(301,22) Error: identifier idents no member "Close"

Düzeltme yapayım hemen SQL.Close değil Close olacak. SQL.Text() şeklinde değilde SQL.Text := ''; şeklinde olmalıdır.

Yani;
 DMvt.SQLQuery1.Close; //hata vermez
 DMvt.SQLQuery1.SQL.Text := 'select * from TBL_FEN where KID='+KID;
kisisel_logo_dark.png
WWW
Cevapla
#9
DMvt.SQLQuery1.Close;

EKLEYİNCE DÜZELDİ arkadaşlar çok teşekkür ederim. kafa çok şisince bazı basit şeyleri gözden kaçırıyorum

saygılarımla
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#10
Bir de bende bir şey yazayım.

DMvt.SQLQuery1.SQL.Text := 'select * from TBL_FEN where KID='+KID;

Bu şekilde olan sorgularda bu kısa tabiki daha uzun ve daha çok parametreli olduğu için tarih mi şu mu bu mu bazen problem yaşayabiliyoruz o yüzden ben genel olarak parametre geçerim yani bu şekilde

DMvt.SQLQuery1.SQL.Text := 'select * from TBL_FEN where KID=:KID';
DMvt.SQLQuery1.Parambyname('KID').asinteger:=Neyse gelen değer;

En azından bir sorun yaşanmiyor.

Kolay gelsin
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  IdIcmpClient1 lazarusda hata veriyor sadikacar60 2 1.952 02-11-2021, Saat: 08:45
Son Yorum: sadikacar60
  lazarusda bir anda böyle bir hata aldım sadikacar60 3 2.585 01-04-2021, Saat: 22:44
Son Yorum: boreas
  ÇÖZÜLDÜ-IdTCPClient1 ve IdTCPServer1 kompenantları HK. sadikacar60 1 2.437 21-02-2020, Saat: 22:24
Son Yorum: sadikacar60
  ÇÖZÜLDÜ-zoom yapınca resim pixel rengi beyaz oluyor. sadikacar60 1 2.481 06-02-2020, Saat: 20:40
Son Yorum: sadikacar60
  ÇÖZÜLDÜ-çalışan exeleri listeleme hk. sadikacar60 1 2.527 05-11-2019, Saat: 22:40
Son Yorum: SimaWB



Konuyu Okuyanlar: 1 Ziyaretçi