نمایش نتایج 1 تا 14 از 14

نام تاپیک: ثبت تاریخ شمسی از طریق سرور در بانک

  1. #1
    کاربر تازه وارد آواتار MBeigy
    تاریخ عضویت
    فروردین 1382
    پست
    79

    ثبت تاریخ شمسی از طریق سرور در بانک

    سلام
    اگر بخواهیم تاریخ و زمان سرور را گرفته و در دیتابیس ذخیره کنیم (یعنی برای هر کلاینت مثلا زمان ثبت رکوردهایش را هم ثبت کنیم اما این تاریخ و زمان از دستگاه کلاینت گرفته نشود بلکه از سرور گرفته شود) و در ضمن این تاریخ شمسی هم باشد چکار میتوانیم بکنیم؟
    :reading: آیا تابعی به زبان sql هست که این کار تبدیل به شمسی را انجام دهد؟

  2. #2
    کاربر دائمی آواتار esi022
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    علم چال
    پست
    338
    سلام دوست گرامی
    2 راه داری
    یکی اینکه میلادی ذخیره کنی و موقع خوندن تاریخ شمسی رو نشون بدی
    چون نمیتونی تو فیلد date/time شمسی ذخیره کنی

    راه دیگه هم اینه که با برنامت تاریخ شمسی رو مثلا با فرمت 13830203 که سوم اردیبهشت 83 رو نشون میده یا با هر فرمتی که میخوای ذخیره کنی

    چون تو تاریخ شمسی تاریخهایی وجود داره که sql قبول نمیکنه ( چون تو میلادی وجود نداره )
    در ضمن نگفتی که با چه برنامه ای داری به sql کانکت میشی

  3. #3
    کاربر تازه وارد آواتار MBeigy
    تاریخ عضویت
    فروردین 1382
    پست
    79
    سلام
    ممنون که جواب دادید. باید بگم که من با وی بی کانکت میشم اما فکر نمیکنم این مهم باشه چون همونطور که گفتم نمیخوام تاریخ از کامپیوتر کلاینت خونده بشه. اینکه میلادی ذخیره کنم و موقع نمایش شمسی نشون بدم خوبه اما موقع نشان دادن توی گزارشها مثلا با DataReport معمولا نمیشه تبدیل کرد و مشکل ساز میشه(یا شاید من بلد نیستم).
    در مورد راه دیگه هم مستلزم اینه که اس کیو ال بتونه تبدیل تاریخ رو انجام بده چون همونطور که گفتم میخوام که تاریخ رو از سرور بگیرم نه از کلاینت ها
    از دوستان میخوام که اگر تجربه‌ای دارن یا راهی به ذهنشون میرسه یا اون تابع تبدیل تاریخ رو با زبان T SQL دارن کمک کنند.
    باز هم ممنون :sunglass:

  4. #4
    دوست عزیز سلام

    در وی بی وقتی از تا بع now استفاده می کنی، این تابع اگر روی سرور اجرا شود، بتبع تاریخ سرور را بر می گرداند پس فقط کافی است این تاریخ رو به شمسی تبدیل کنی.
    من از این روش استفاده کردم و جواب گرفتم.

  5. #5
    کاربر تازه وارد آواتار MBeigy
    تاریخ عضویت
    فروردین 1382
    پست
    79
    سلام به همگی
    بله دوست عزیز من هم دقیقا همین روش تبدیل تاریخ را در TSQL میخوام یعنی یک فانکشن در دیتابیس بنویسم چون من برنامه اجرایی در داخل سرور ندارم که بخوام بوسیله اون تبدیل رو انجام بدم.
    اگر هم بخوام در کامپیوتر کلاینت این کار رو انجام بدم و به سرور برگردونم یعنی برای هر رکورد باید یک رفت و برگشت اضافی درست کنم و چون تعداد update هام و همینطور کلاینت هام زیاده بیخودی ترافیک شبکه رو بالا بردم. لذا این کار در این مورد خاص درست نیست.
    به هر حال از کمکتون متشکرم :wink: لطفا اگر چیز دیگه‌ای به ذهنتون میرسه یا اون فانکشن تبدیل در SQL رو دارید کمک کنید.

  6. #6
    سلام من این کد رو نوشتم .. ببین کارت رو راه میندازه یا نه
    در ضمن مارو مطلع کن( اینکه درست کار میکنه یا نه)

    CREATE proc GetTodayDate AS
    begin
    declare @YR int, @DY int
    SET @YR = Year(GetDate())
    SET @DY = DATEDIFF(day, CAST(Year(GetDate())AS Char(4) )+'-01-01',Getdate() )
    SELECT dbo.GetHijriDate(@YR,@DY +1)
    end


    GO
    --------------------------------------------------------------------------------------------------------

    CREATE Function GetHijriDate(@YR int,@DY int) Returns char(10) AS
    Begin
    Declare @monthDays char(36),@KabiseDayes char(36),@monthNames char(39)
    declare @s int,@days int,@i int, @Base int
    declare @Sal char(4),@mah char(2),@roz char(2)
    SET @monthDays=',30,30,29,31,31,31,31,31,31,30,30,30'
    SET @KabiseDayes=',30,30,30,31,31,31,31,31,31,30,30,30 '
    SET @monthNames=',10,11,12,01,02,03,04,05,06,07,08,09, 10'
    SET @Base = 10
    SET @S= @YR-622
    IF @YR % 4 = 1 SET @Base= @Base +1
    IF @S % 4 = 3 SET @monthDays= @KabiseDayes
    SET @Days= @DY+@Base
    Set @i=1
    While @i<=12
    begin
    IF @Days <= Cast(SUBSTRING(@monthDays, 3*@i-1, 2) as int) break;
    SET @Days =@Days-Cast(SUBSTRING(@monthDays, 3*@i-1, 2) as int);
    SET @i =@i +1
    end
    SET @mah = SUBSTRING(@monthNames, 3*@i-1, 2)
    SET @roz = Cast( @Days as char(2) )
    IF LEN(@roz)=1 SET @roz ='0'+ @roz
    IF @i >3 SET @S=@s+1
    SET @sal = Cast(@s as char(4))
    Return @sal+'/'+@mah+'/'+@roz
    End

    GO

  7. #7
    کاربر تازه وارد آواتار MBeigy
    تاریخ عضویت
    فروردین 1382
    پست
    79
    سلام به همه دوستان
    دست شما درد نکنه من الان اونو برمیدارم و تست میکنم. ان شاالله درست کار میکنه.
    باز هم ممنون :wink:

  8. #8
    متاسفم دوست من که نمیتونم کمکت کنم.
    چون من یک دلفی کارم که از VB متنفرم(net. نه).
    من تموم برنامه های دیتا بیسم بجز اولیاش یعنی اونهایی که یکسال پیش مینوشتم تماما مولتی تایر اندو با لایه طرف سرور کار مورد نظر شما رو انجام میدم.
    ببین اگه میتونی با وی بی دات نت مولتی تایر بنویسی مولتی تایر کار کن که خیلی حرفه ایه.
    ام میتونی از یک تریگر هم توی MSSQL بهره ببری.

  9. #9
    کاربر دائمی آواتار M.GhanaatPisheh
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    ----------
    پست
    1,267
    با لایه طرف سرور کار مورد نظر شما رو انجام میدم
    ببخشید مولتی تایر چیه میشه تعریفش کنید؟



    MBeigy عزیز متدهای تبدیل تاریخ رو خودتون به T-SQL تبدیل کنید
    مشکل چیه دوست عزیز
    فکر می کنم راه عاقلانه همینه.

  10. #10
    ببخشید مولتی تایر چیه میشه تعریفش کنید؟
    dot_net_lover عزیز مولتی تایر یک تکنولوزی نسبتا جدید دزر ساختار های بانک اطلاعاتی است که در ان هر کلاینت مستقیما با بانک ارتباط نمی یابد بلکه ابتدا یک مازول داده یا برنامه طرف سرور را اجرا کرده و برنامه طرف سرور که روی سرور نصب است وظیفه ارتباط با بانک را به عهده دارد مزیت این روش این است که به ازای هر ارتباط با سرور یک Tread از برنامه سرور اجرا شده و می توان تا چند میلیون کلاینت را با بانک مرتبط کرد بدون اینکه هیچ تداخلی بین درخواست ها از سرور روی دهد، در حالی که در معماری خادم/مخدوم یا دو لایه درخوست ها از سرور امکان تداخل دارند و از طرف دیگر میتوان بسته های داده را هم رد گیری کرد.در دلفی به این روش MIDAS می گویند.
    برای اطلاعات بیشتر به کتاب های زیر مراجعه کنید:
    1 -اراکل انتشارات ناقوس
    2 -برنامه نویسی بانک اطلاعاتی در دلفی - مهندس مولانا پور-انتشارات تخت سلیمان
    3-ذلفی 6 انتشارات کانون نشر علوم
    موفق باشید.

  11. #11
    کاربر دائمی آواتار M.GhanaatPisheh
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    ----------
    پست
    1,267
    این از کدوم کتاب بود؟--> خادم / مخدوم !!!!
    من می خواستم تصور شما رو بدونم.

  12. #12
    کاربر تازه وارد آواتار MBeigy
    تاریخ عضویت
    فروردین 1382
    پست
    79
    سلام
    ببخشید دیر شد داشتم جواب میدادم که کارتم تموم شد. دیگه وقت نکردم تا امروز.
    آقای صمدیان با همان وی بی 6 هم میشه برنامه های مولتی تیر نوشت. اما متاسفانه این برنامه دو لایه (کلاینت سرور) است لذا باید مشکل به همین نحوی که توضیح دادم حل شود.
    البته امیدوارم که معماری چندلایه شما مثل خیلی ها این نباشد که فقط یک سری کامپوننت رو در سرور قرار میدهند و به اونها وصل میشند و نه از com+ و نه object pooling و نه بقیه مزایای چندلایگی استفاده نمیکنند.
    به هر حال از توجه شما متشکرم. موفق باشید. :)

  13. #13
    کاربر تازه وارد آواتار MBeigy
    تاریخ عضویت
    فروردین 1382
    پست
    79
    سلام به همه دوستان
    دست شما درد نکند من کد شما رو در کنار یک ماجول تبدیل تاریخ در وی بی که تقریبا از صحت کارش اطمینان دارم (به دلیل کثرت استفاده توسط برنامه نویسان و عدم برخورد با خطا تا بحال) امتحان کردم و تا سال 2025 میلادی اختلافی ندیدم اما در سال 2025 روز 20 مارچ رو 30 اسفند 10403 تشخیص میده ولی در اون ماجول 1 فروردین تشخیص میده. البته من شنیده بودم که غیر از 4 سال یکبار عامل دیگه ای هم در وجود سال کبیسه دخالت داره ولی دقیقا نمیدونم چی بود و چند سال یکبار تکرار میشد.
    به هر حال فکر نمیکنم این برنامه من تا سال 2025 کار کنه !!! ولی اگه کار کرد و من هم زنده بودم حتما تا اون موقع مشکلشو حل میکنم. بنابراین دست شما درد نکنه چون کار منو راه انداختی و واقعا لطف کردی. :wink:

  14. #14
    :flower:
    البته امیدوارم که معماری چندلایه شما مثل خیلی ها این نباشد که فقط یک سری کامپوننت رو در سرور قرار میدهند و به اونها وصل میشند و نه از com+ و نه object pooling و نه بقیه مزایای چندلایگی استفاده نمیکنند.
    :flower:

    از توجه تون متشکرم من معمولا از +COM و SOAP استفاده می کنم و معمولا ار تباطم با استفاده از پروتکل HTTP برقرار میشه :sunglass:

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •