LOBJECTS ile TIME değeri nasıl atanır?

Başlatan tagmacunal, 01.07.2009, 16:48

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

tagmacunal

Merhaba,

ASP.NET ile LOBJECTS kullanarak "Mal Alım Faturası" oluşturmaya çalışıyorum. Ancak faturanın oluşturulma ZAMANI'nı doğru bir şekilde gönderemiyorum (Örn; "14:29:52 gibi"). UNITY veritabanına baktığımda TIME alanını 9 haneli sayısal değer (Örn; 236794973) olarak sakladığını görüyorum. Yukarıdaki gibi istenilen bir ZAMANı LOBJECTS'in istediği formata nasıl çevirebilirim??

MyData.DataFields.FieldByName("NUMBER").Value = "~"
MyData.DataFields.FieldByName("TYPE").Value = 1
MyData.DataFields.FieldByName("DATE").Value = Now.ToShortDateString
MyData.DataFields.FieldByName("TIME").Value = ?????????

ogrenci

değerlerini aşağıdaki gibi hesaplarsan saati Ftime formatına çevirmiş olursun.

(Saniye * 256) + (Dakika * 65536) + (Saat * 16777216)

tagmacunal


mdtyazilim

Merhaba,

LObjects ile kullanabileceğiniz hazır metod var zaten:

Sub PackTime (h As Long, m As Long, s As Long, tm)

Zaman bilgisi veritabanında bazı alanlarda Long integer değer olarak tutulur. Bu yöntem zaman bilgisinden kaynaklanabilecek sorunları minimize eder. Zaman bilgisini LBS Long integer formatına dönüştürmek için bu metodu kullanırız. Metoda Saat, Dakika ve Saniye bilgilerini geçeriz. Zamanın formatlanmış hali Long integer değer olarak tm parametresinde döner. Aşağıda zaman formatlama işleminde kullanılan formül anlatılmıştır.

Zaman için kullanılan yöntem aşağıdadır ;
Zaman = 2^24*Hour + 2^16*Minute + 2^8*Second + 2^0*Milisecond yani ;
Zaman = Milisaniye + 256 x Saniye + 65536 x Dakika + 16777216 x Saat



Ya da size Delphi'de hazır bir function vereyim siz syntax'i Asp.Net'e çevirirsiniz.


function GetLogoIntTime : integer;
var
  fHour, fMin,
  fSec, fMSec   : word;
begin
   DecodeTime(Time, fHour, fMin, fSec, fMSec);
   result := fMSec + (256*fSec) + (65536*fMin) + (16777216*fHour);
end;

Not: Delphi unit'te uses kısmına DateUtils eklenmeli!

www.mdt.biz.tr

ahmetk

tm parametresi nedir? Bu konuda bilgi verebilir misiniz?

Alıntı yapılan: mdtyazilim - 19.08.2009, 15:12
Merhaba,

LObjects ile kullanabileceğiniz hazır metod var zaten:

Sub PackTime (h As Long, m As Long, s As Long, tm)

Zaman bilgisi veritabanında bazı alanlarda Long integer değer olarak tutulur. Bu yöntem zaman bilgisinden kaynaklanabilecek sorunları minimize eder. Zaman bilgisini LBS Long integer formatına dönüştürmek için bu metodu kullanırız. Metoda Saat, Dakika ve Saniye bilgilerini geçeriz. Zamanın formatlanmış hali Long integer değer olarak tm parametresinde döner. Aşağıda zaman formatlama işleminde kullanılan formül anlatılmıştır.

Zaman için kullanılan yöntem aşağıdadır ;
Zaman = 2^24*Hour + 2^16*Minute + 2^8*Second + 2^0*Milisecond yani ;
Zaman = Milisaniye + 256 x Saniye + 65536 x Dakika + 16777216 x Saat



Ya da size Delphi'de hazır bir function vereyim siz syntax'i Asp.Net'e çevirirsiniz.


function GetLogoIntTime : integer;
var
  fHour, fMin,
  fSec, fMSec   : word;
begin
   DecodeTime(Time, fHour, fMin, fSec, fMSec);
   result := fMSec + (256*fSec) + (65536*fMin) + (16777216*fHour);
end;

Not: Delphi unit'te uses kısmına DateUtils eklenmeli!

www.mdt.biz.tr

ahmetk

PackTime kullanımına örnek

            object tmm = 0;
            giris.PackTime(12, 12, 12,ref tmm);
            MessageBox.Show(tmm.ToString());
            object h = 0;
            object m = 0;
            object s = 0;
            giris.UPackTime((int)tmm, ref h, ref m, ref s);
            MessageBox.Show(h.ToString() + ":" + m.ToString() + ":" + s.ToString());

blues09

#6

Teşekkürler.