Delphi Can

Orjinalini görmek için tıklayınız: [ÇÖZÜLDÜ] delphiden procedure çağırma
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
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.
Merhaba,

Kod:
Select * from SPHesaplama(:tagadi,:tarih)

bu sekilde dener misiniz
(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ü. Sad
(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ü. Sad

Merhabalar,

Deneme imkanım yok şuan, aşağıdaki gibi bir kod çalışması gerekli.

Edit1.Text:=FDStoredProc1.FieldByName('maxdeger').AsString;

Kolay gelsin.