Forum
Merhaba, InfoPath'de tasarladığım bir form var. Formda kullanıcının tarih seçiciden girdiği iki tarih var. Bu tarihler arasındaki farkı aynı formdaki metin kutusuna yazdırmak istiyorum. Nasıl yapabilirim?
Merhabalar,
Asagidaki linklerden ornek uygulama ve kodlarla ilgili bilgi alabilirsiniz:
http://www.bizsupportonline.net/infopath2007/calculate-date-difference-infopath-rules-formulas.htm
Mesut ALADAĞ.
Ben Infopath 2010 kullnıyorum. Sizin gönderdikleriniz 2007 için. Msdn'de =DATEDIF([Start Date],[End Date],"ym") şeklinde bir formul buldum ama formülü kabul etmiyo hata var diyo 🙁
Makaleler bölümünde yazdığım makale var. Aşağıdaki linkten ulaşabilir excel servicesa bu hesaplamayı yaptırabilirsiniz.
Diğer seçenecekte, iş akışların da eylemler de en altta tarih aralığı fonksiyonu var. Bunu da kullanabilirsiniz. Ama tarihler seçildiğinde iş akışının çalışıp sonucun getirilmesini sağlamak için buton koyarak 2 kere hesaplama yaptırmak gerekir. Çünkü ilk işlemde akış çalışcak ancak sonucu getirecek vakti olmuyacaktır. Buton ile tetiklendiğinde çıkan sonuç gelecektir.
Bunun dışında tarihi parçalayarak ( alt dize gibi fx lerle) işlem yapılabilir.
Datedif excel fonksiyonu,direkt olarak infopath de çalışmaz, siz xpath lere bakmalısınız. Önerim excel services üzerinden işlem yaptırmanızdır. ( orada yaptıracağınız işlem sınırları excel kabiliyetleri ile sınırlıdır ki bu da çok geniş bir alan sağlar.)
Bu arada Mesut Hocam' ın vermiş olduğu linklerden
http://www.bizsupportonline.net/infopath2007/calculate-date-difference-infopath-rules-formulas.htm
Çalışıyor... Infopath' in versiyonu önemsiz burada 2010 da da çalışıyor.
Makalenizdeki örneğe bakarak excel services ile bu hesaplamayı yapmaya çalıştım fakat yeni veri bağlantısı eklerken hata alıyorum. Bağlantı:
Infopath belirtilen Web hizmeti açıklamasını bulamıyor ya da hizmete erişemiyor hatası alıyorum. Tarih formatım tarih + saat şeklinde. Hata bundan kaynaklanıyor olabilir mi?
Evet sorun odur. Ancak excel services dan önce yukarıdaki postta linktekini deneyin daha hızlı çözüm alırsınız. Excel services üzerinden hesaplamanızı daha komplike hesaplamalarda kullanabilirsiniz.
Izin talep formunda Tarih farki bulma:
Ben excel üzerinden =nettoworksday(Tarih1,Tarih2) kullandim. Excel dosyasini sharepoint kitabligina yükledim.
sonucumun infopath eklemeden önce ilk web üzerinden calistirdim:
bana sonuc olarak örnekde 3 getiriyor buda dogru.
sonrasinda infopath forma 3 tane field ekledim: Tarih1 - Tarih2 ve Sonuc
Rest Web service ekledim: http://xxx/_vti_bin/ExcelRest.aspx/xxx/xxx.xlsx/Model/Ranges ('Datumdiff')?$format=atom?Ranges('Tarih1')=09.03.2012&Ranges('Tarih2')=13.03.2012
Tarih1 field (baslangic tarih): yeni kural REST URL degistir:
concat(" http://xxx/_vti_bin/ExcelRest.aspx/xxx/xxx.xlsx/Model/Ranges ('Datumdiff')?$format=atom&Ranges('Tarih1')="; substring-before(Tarih1; "T00:00:00"); "&Ranges('Tarih2')="; substring-before(Tarih2; "T00:00:00"))
Tarih2 field (bitis tarih): 1. Kural Rest URL degistirdim. 2. Kural Rest Webservice sorgula 3. Kural Sonuc field yazdirmak. Standard olan fv functionu ekledim.
Simdi iki tarih arasinda ne secersem seceyim bana sonuc olarak ya 1 yada 0 getiriyor.
Hatami bulamiyorum. Yardimlarinizi bekliyorum simdiden cok tesekkür ederim.