Arkadaşlar selamlar
Daha önce yazılmış olan konuları takip ederek delphi içinden procedure çağırma işlemini yapmaya çalıştım ama başarılı olmadım.
Mysql de yazılı olan procedure şu şekilde :
CREATE DEFINER=`root`@`localhost` PROCEDURE `SPHesaplama`(IN `IN_TAG_ADI` varchar(30),IN `IN_TARIH1` datetime,IN `IN_TARIH2` datetime)
BEGIN
SELECT max(deger) as maxdeger, min(deger) as mindeger, (max(deger) - min(deger)) as deger
FROM tagverileri
where tagadi= IN_TAG_ADI and (zaman between IN_TARIH1 and IN_TARIH2);
END;
Bunu mysql den çalıştırdığımda çağırma şeklim şu :
CALL SPHesaplama('ALUMINYUM_MUD_tP','2019-11-15 06:00:00','2019-11-15 17:00:00');
Delphi de normal olarak çağırdığım sql kodum şu şekilde :
dm.qrytemphesaplama.SQL.text :='SELECT max(deger) as maxdeger, min(deger) as mindeger, (max(deger) - min(deger)) as deger FROM tagverileri_detay where tagadi='''+tagadi+''' and zaman between '+tarih+'';
Bu kodu procedure den çağırma için yazmam gereken kod nasıl olmalıdır? şu şekilde yazdım olmadı.
dm.qrytemphesaplama.SQL.text :='CALL SPHesaplama(:tagadi,:tarih)';
Yardımlarınızı rica ederim.
(20-12-2019, Saat: 10:50)wiseman Adlı Kullanıcıdan Alıntı: [ -> ]Arkadaşlar selamlar
Daha önce yazılmış olan konuları takip ederek delphi içinden procedure çağırma işlemini yapmaya çalıştım ama başarılı olmadım.
Mysql de yazılı olan procedure şu şekilde :
CREATE DEFINER=`root`@`localhost` PROCEDURE `SPHesaplama`(IN `IN_TAG_ADI` varchar(30),IN `IN_TARIH1` datetime,IN `IN_TARIH2` datetime)
BEGIN
SELECT max(deger) as maxdeger, min(deger) as mindeger, (max(deger) - min(deger)) as deger
FROM tagverileri
where tagadi= IN_TAG_ADI and (zaman between IN_TARIH1 and IN_TARIH2);
END;
Bunu mysql den çalıştırdığımda çağırma şeklim şu :
CALL SPHesaplama('ALUMINYUM_MUD_tP','2019-11-15 06:00:00','2019-11-15 17:00:00');
Delphi de normal olarak çağırdığım sql kodum şu şekilde :
dm.qrytemphesaplama.SQL.text :='SELECT max(deger) as maxdeger, min(deger) as mindeger, (max(deger) - min(deger)) as deger FROM tagverileri_detay where tagadi='''+tagadi+''' and zaman between '+tarih+'';
Bu kodu procedure den çağırma için yazmam gereken kod nasıl olmalıdır? şu şekilde yazdım olmadı.
dm.qrytemphesaplama.SQL.text :='CALL SPHesaplama(:tagadi,:tarih)';
Yardımlarınızı rica ederim.
Merhabalar,
Deneme şansım şuan için yok ama aşağıdaki şekilde deneyin lütfen.
Hangi bileşen ile bağlantı sağlıyorsun.
dm.qrytemphesaplama.Close;
dm.qrytemphesaplama.SQL.text :='CALL SPHesaplama(:tagadi, :tarih1, :tarih2);';
dm.qrytemphesaplama.Params[0].DataType:=ftString;
dm.qrytemphesaplama.Params[1].DataType:=ftDateTime;
dm.qrytemphesaplama.Params[2].DataType:=ftDateTime;
dm.qrytemphesaplama.Params[0].AsString:='TAG ID GONDERİN';
dm.qrytemphesaplama.Params[1].AsDateTime:=Now-1; <<- tarih1
dm.qrytemphesaplama.Params[2].AsDateTime:=Now+1; <<- tarih2
dm.qrytemphesaplama.Open;
Kolay gelsin.
(20-12-2019, Saat: 11:13)hi_selamlar Adlı Kullanıcıdan Alıntı: [ -> ] (20-12-2019, Saat: 10:50)wiseman Adlı Kullanıcıdan Alıntı: [ -> ]Arkadaşlar selamlar
Daha önce yazılmış olan konuları takip ederek delphi içinden procedure çağırma işlemini yapmaya çalıştım ama başarılı olmadım.
Mysql de yazılı olan procedure şu şekilde :
CREATE DEFINER=`root`@`localhost` PROCEDURE `SPHesaplama`(IN `IN_TAG_ADI` varchar(30),IN `IN_TARIH1` datetime,IN `IN_TARIH2` datetime)
BEGIN
SELECT max(deger) as maxdeger, min(deger) as mindeger, (max(deger) - min(deger)) as deger
FROM tagverileri
where tagadi= IN_TAG_ADI and (zaman between IN_TARIH1 and IN_TARIH2);
END;
Bunu mysql den çalıştırdığımda çağırma şeklim şu :
CALL SPHesaplama('ALUMINYUM_MUD_tP','2019-11-15 06:00:00','2019-11-15 17:00:00');
Delphi de normal olarak çağırdığım sql kodum şu şekilde :
dm.qrytemphesaplama.SQL.text :='SELECT max(deger) as maxdeger, min(deger) as mindeger, (max(deger) - min(deger)) as deger FROM tagverileri_detay where tagadi='''+tagadi+''' and zaman between '+tarih+'';
Bu kodu procedure den çağırma için yazmam gereken kod nasıl olmalıdır? şu şekilde yazdım olmadı.
dm.qrytemphesaplama.SQL.text :='CALL SPHesaplama(:tagadi,:tarih)';
Yardımlarınızı rica ederim.
Merhabalar,
Deneme şansım şuan için yok ama aşağıdaki şekilde deneyin lütfen.
Hangi bileşen ile bağlantı sağlıyorsun.
dm.qrytemphesaplama.Close;
dm.qrytemphesaplama.SQL.text :='CALL SPHesaplama(:tagadi, :tarih1, :tarih2);';
dm.qrytemphesaplama.Params[0].DataType:=ftString;
dm.qrytemphesaplama.Params[1].DataType:=ftDateTime;
dm.qrytemphesaplama.Params[2].DataType:=ftDateTime;
dm.qrytemphesaplama.Params[0].AsString:='TAG ID GONDERİN';
dm.qrytemphesaplama.Params[1].AsDateTime:=Now-1; <<- tarih1
dm.qrytemphesaplama.Params[2].AsDateTime:=Now+1; <<- tarih2
dm.qrytemphesaplama.Open;
Kolay gelsin.
Firedac ile bağlantı sağlıyorum.
(20-12-2019, Saat: 11:34)wiseman Adlı Kullanıcıdan Alıntı: [ -> ] (20-12-2019, Saat: 11:13)hi_selamlar Adlı Kullanıcıdan Alıntı: [ -> ]Merhabalar,
Deneme şansım şuan için yok ama aşağıdaki şekilde deneyin lütfen.
Hangi bileşen ile bağlantı sağlıyorsun.
dm.qrytemphesaplama.Close;
dm.qrytemphesaplama.SQL.text :='CALL SPHesaplama(:tagadi, :tarih1, :tarih2);';
dm.qrytemphesaplama.Params[0].DataType:=ftString;
dm.qrytemphesaplama.Params[1].DataType:=ftDateTime;
dm.qrytemphesaplama.Params[2].DataType:=ftDateTime;
dm.qrytemphesaplama.Params[0].AsString:='TAG ID GONDERİN';
dm.qrytemphesaplama.Params[1].AsDateTime:=Now-1; <<- tarih1
dm.qrytemphesaplama.Params[2].AsDateTime:=Now+1; <<- tarih2
dm.qrytemphesaplama.Open;
Kolay gelsin.
Firedac ile bağlantı sağlıyorum.
Merhaba,
Yukarıda ki örneği denediniz mi?
FireDac kullanıyorsanız neden kendi bileşenini FDStoredProc kullanmıyorsunuz?
[
attachment=885]
FDStoredProc1.StoredProcName := 'MY_PROC';
FDStoredProc1.Prepare;
FDStoredProc1.Params[0].Value := 100;
FDStoredProc1.Params[1].Value := 'audi';
FDStoredProc1.ExecProc;
Kolay gelsin.
selamlar. delphide sorun oluştuğu için yeniden kuruyorum. işlemler biter bitmez haber vereceğim. ilginize çok teşekkür ederim.
tekrar selamlar
@
hi_selamlar ın yazmış olduğu çözümü uygulayarak, FDStoredProc ekledim. Parametreleri gönderdim. Ama bundan çıkan output değerini delphi içinde bir text e, nasıl alacağımı bulamadım bir türlü.
(26-12-2019, Saat: 11:54)wiseman Adlı Kullanıcıdan Alıntı: [ -> ]tekrar selamlar
@hi_selamlar ın yazmış olduğu çözümü uygulayarak, FDStoredProc ekledim. Parametreleri gönderdim. Ama bundan çıkan output değerini delphi içinde bir text e, nasıl alacağımı bulamadım bir türlü.
Merhabalar,
Deneme imkanım yok şuan, aşağıdaki gibi bir kod çalışması gerekli.
Edit1.Text:=FDStoredProc1.FieldByName('maxdeger').AsString;
Kolay gelsin.