Kişi bilgileri gizlidir. Logo çalışanları görebilir.

Tarih formatı

  Tiger/Logo Object Designer (LOD)

Merhabalar,

LObjects üzerinden geliştirdiğimiz xml-web servis uyarlama yazılımı ile, Logo'ya Satış İrsaliyesi kaydetmekteyiz. İşler sorunsuz devam etmek iken, müşterimiz sunucusunu bulut ortamına taşıdı ve yeni sunucuyla birlikte Tarih verisi ile ilgili sorun yaşamaya başladık. Web servis, Logo'ya Satış İrsaliyesi kaydetmekte fakat irsaliye tarihinin Gün ve Ay değerleri yer değişmektedir. Bugünkü tarih itibariye örnek verecek olursak, kaydedilen irsaliyenin 12 Şubat 2018 olması gereken tarihi, Logo'da 02 Aralık 2018 olarak ortaya çıkmaktadır. 

     Uyarlama yazılımı .NET / C# ile yazıldı ve tarih verisini set ettiğimiz satırda DateTime değeri kullanmaktayız.  DateTime  türünde IrsaliyeTarihi  değişkeni ile şu şekilde set edilmektedir:

     irsaliye.FieldByName("Date").Value = IrsaliyeTarihi;


Yani herhangi bir tarih formatlama veya string'e çevirme söz konusu değildir. 

Bir fikri olan var mı acaba?  Ya da tarih değerini, Logo'nun Exchange tablosundaki DATE_ alanında tuttuğu gibi, "Integer"  formatında set etsek, window'un tarih saat ayarlarından tam bağımsız bir çalışma yapmış olur muyuz?

Herkese Hayırlı işler, iyi çalışmalar,

Mehmet


LObjects Tarih formatı


Uluç Karadeniz

Mehmet Bey,

Sanıyorum ki sorun SQL'deki dil ayarları yada DATE kolonun özellikleri ile alakalı. Örneğin ilgili STLINE tablosu altında Columns , DATE_ üzerinde properties diyerek kontrol sağlayabilirsiniz. Aşağıda olması gereken ayarları paylaşıyorum. 

Bunun dışında Logo üzerine manuel kaydettiğiniz irsaliyeyi XML olarak dışarı alıp DATE alanında ne yazıyor buna bakın. Burada yazan formatta (dd.mm.yyy gibi) içeri psot ederseniz sorun olmayacağını düşünüyorum.

SQL üzerinde bir alan normal tarih formatında tutulup , Logo tarih formatında tutulmuyorsa (int olarak) siz içeri int tipinde değer yollayamazsınız. Object bunu kabul etmeyecektir. Bu int değeri UPACKDATE() ile convert etmeniz gerekir.






16/02/18 11:02


Kişi bilgileri gizlidir. Logo çalışanları görebilir.

Cevabınız için teşekkürler Uluç Bey,

Öneriniz üzerinde STLINE üzerinden Column özelliklerine baktım. Sizin gönderdiğinizden farklı olarak, bizde "Turkish_CI_AS" yazıyor. STFICHE ve diğer bazı tabloları kontrol ettiğimde de "DATE" alanlarında hep bu değer var.  Mesele bu Collation mu , bilemedim! Bir de normal logo kullanımında bir sorun yok. Sorunu LObjects üzerinden yaşıyoruz. 

Yazılım kodları itibariye belirtirsek, Tarih değerini ay.gün.yıl veya gün.ay.yıl şeklinde bir çevrim yapmadan Logo Object nesnesinin ilgili değişkenine veriyoruz. Sanki şu soruya cevap lazım: Insert Into Sql cümlesi nerede oluşturuluyor? LObject.Exe mi yoksa SQL sunucusu üzerinden Storedproc'lar vs mi?   Bizim yapıda,  LObject.Exe ve  SQL farklı bir sunuculardalar.

Teşekkürler İyi Çalışmalar.

Mehmet




16/02/18 12:16


Uluç Karadeniz

Rica ederim. Açıkçası server değişiminden sonra bu sorun yaşandı dediğiniz için aklıma gelen ilk neden eski SQL dil kurulumları ile yeni SQL dil kurulumları farklı olması olabileceğiydi. Logo tarafından bize önerilen kurulum sırasında 1254_CI_AS seçmemiz. INSERT cümlesi kısmına gelirsek buna uyarlama ekibinin cevap vermesi daha doğru olacaktır, beni aşar :) Ancak şahsi kanaatim siz manuel girdiğiniz sorunsuz bir kaydı XML ile dışarı aldığınızda DATE kısmında ay.gün.yıl şeklinde format var ise siz tarihi içeri bu şekilde yolladığınızda sorun olmaması gerektiği. POST öncesi ufak bir convert işlemi yapmanız gerekebilir.


16/02/18 12:26


IvmeBilisimYazilim

Objede nesneye değeri date formatında gönderin yeterli.

VB kod satırı örneği

mData.DataFields.FieldByName("DATE").Value = CDate(Now())


17/02/18 11:46


IvmeBilisimYazilim

edit


17/02/18 12:02

Cevap vermek için giriş yapmanız gerekmektedir.