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

نام تاپیک: مشکل در PersianDateSupport.dll

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    بندر عباس
    پست
    250

    مشکل در PersianDateSupport.dll

    سلام.
    من 3 تا برنامه داشتم که توشون از PersianDateSupport.dll استفاده کردم اونم برای تبدیل تاریخ سیستم به شمسی.


     Dim PDC As New PersianDateSupport.PersianDate()
    Dim dd As Date
    dd = PDC.DateToPersian(Now)



    حدود 4 ماه این برنامه ها درس کار میکرد.
    از امروز هر 3 تا این پیغام رو میده.

    cast from string "1384/02/31 " to type Date is invalid



    با تغییر متغیر dd به string به جای date مشکل حل شد و dll دوباره درست کار کرد.
    من این dll رو از همین سایت برداشتم.
    نمیدونم الان مشکلش چیه .یعنی باید برم تمام جاها type رو عوض کنم.
    اگه ممکنه من رو راهنمایی کنید/

  2. #2
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    این برنامه را من نوشتم برای استفاده در ویژوال بیسیک 6 و برای .نت هم بازنویسی کردم اگر برای .نت استفاده می کنید بهتر هست که از نسخه .نت استفاده کنید و آخرین نسخه را هم بزودی با تغیرات بسیار زیاد ارائه خواهم داد.
    شما یک اشتباه در برنامه نویسی کردید کد را باید بصورت زیر بنویسید اگر دقت کردخ باشید خروجی DateToPersian یک string هست نه date پس برنامه خودتان را به دقت اصلاح کنید.



    Dim PDC As New PersianDateSupport.PersianDate
    Dim farsiDate As String
    Dim miladiDate As Date
    farsiDate = PDC.DateToPersian(Now)
    miladiDate = PDC.PersianToDate(farsiDate)
    MsgBox(farsiDate & " = " & miladiDate)

  3. #3
    کاربر دائمی آواتار hadi2345
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    تبریز
    سن
    46
    پست
    595
    اگر از نوع date برای ذخیره تاریخ شمسی استفاده کنید این مشکل رو خواهید داشت و ایراد رو هم به روز 31 اون ماه میده و مثلا در تاریخ 84/06/31 و 84/04/31 هم این ایرادو خواهی دید . تمام نوع های date رو به string تبدیل کن . ولی اگه بخوای تو database ذخیره کنی و بعدا بخوای جستجو انجام بدی(بین دو تاریخ ) مشکل خواهی داشت . که اون مشکل هم راه حل داره ....

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    بندر عباس
    پست
    250
    از راهنماییتون ممنونم.من تاریخ رو از نوع date ذخیره نمیکنم.
    از نوع nvarchar ذخیره میکنم.
    این dll رو برای پاس کردن تاریخ شمسی به کریستال استفاده میکنم.یعنی برای تبدیل تاریخ سیستم به شمسی.
    حسابی گیج شده بودم مشکل چیه.چون دقیقا روز 31 اردیبهشت از کار افتاد و امروز درست کار میکنه.
    از راهنماییتون خیلی خیلی ممنونم. :flower: :flower: :flower:
    :موفق:

  5. #5
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    اگر این dll را من درست کردم! منظورم این بوده که تاریخ میلادی در متغیر date ذخیره بشه و هر وقت احتیاج بود به صورت تاریخ شمسی تبدیل شده و بصورت string نمایش داده بشه.
    وقتی شما 1384/02/31 را در متغیر date قرار می دهید این تاریخ به عنوان تاریخ میلادی در نظر گرفته میشه
    یعنی 1384 میلادی یعنی 700 سال پیش و دومین ماه میلادی 31 روز نیست. و این باعث بروز این اشکال میشه.
    به هر حال منظور از این dll و توابع این بوده است که شما تاریخ میلادی را در متغیر date ذخیره کنید و هر وقت احتیاج شد تاریخ را بصورت شمسی بر گردونید یا تاریخ را از کاربر به صورت شمسی بگیرید و معادل میلادی اون تاریخ را در متغیر date ثبت کنید مثال زیر را نگاه کنید

    Dim PDC As New PersianDateSupport.PersianDate
    Dim miladiDate As Date
    Dim shamsidate As String
    shamsidate = InputBox("shamsi Date")
    miladiDate = PDC.PersianToDate(shamsidate)
    MsgBox(PDC.DateToPersian(miladiDate.AddDay s(150)) & " تاریخ ورودی شما به اضافه 150 روز دیگر")

    امیدوارم منظور من را متوجه شده باشی که برای چی این dll را درست کردم
    گرفتن تاریخ بصورت شمسی تبدیل به معادل آن تاریخ بصورت میلادی برای ذخیره در دیتابیس ، محاسبات روی این مقدار مانند اضافه کردن روز و ماه و سال و ...
    به هر حال تاریخ شمسی را در متغیر date ذخیره نکنید

    Dim PDC As New PersianDateSupport.PersianDate
    Dim miladiDate As Date
    Dim shamsidate As String
    shamsidate = InputBox("shamsi Date")
    miladiDate = PDC.PersianToDate(shamsidate)
    MsgBox(PDC.DateToPersian(miladiDate.AddDay s(150)) & " تاریخ ورودی شما به اضافه 150 روز دیگر")

    Dim d1 As String
    Dim d2 As String
    Dim d3 As Date
    Dim d4 As Date

    d1 = InputBox("shamsi Date1")
    d2 = InputBox("shamsi Date2")
    d3 = PDC.PersianToDate(d1)
    d4 = PDC.PersianToDate(d2)
    MsgBox(DateDiff(DateInterval.Day, d3, d4) & "اختلاف بین این دو تاریخ ")

    این کد ها را خوب مطالعه کنید

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    بندر عباس
    پست
    250
    Dear linux
    از کمکتون ممنونم.

  7. #7
    کاربر دائمی آواتار Microsoft.net
    تاریخ عضویت
    آبان 1382
    محل زندگی
    مشهد
    پست
    584
    اقا من به همه یه توصیه برادرانه می کنم و اون اینکه از این dll استفاده نکنین چون بد جوری پدر برنامه مارو دراورد به خاطرش مجبور شدیم روی 40-50 تا station برنامه رو تغییر بدیم . بعد از هر چند وقتی یه باگهای عجیبی از توش در میاد !!! من که از سایت یاهو تاریخ برگردان شمسی به روش علمی رو دان کردم به همراه سورس خیلی هم راضیم پیشنهاد می کنم شما هم همینکارو بکننین تا به سرنوشت من دچار نشین

  8. #8
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    این dll را وقتی توی این فروم گذاشتم خواهش کردم از همه که اگر استفاده کردند و باگ داشت حتما اطلاع بدهند
    اگر شما هم باگهایی پیدا کردید و خاطرتان هست به من هم اطلاع بدهید در ضمن این نسخه برای vb بود برای
    .نت هم اصلاح کرده بودم که در سایت گذاشتم.
    سورس برنامه هم در سایت بود می گشتید پیدا می کردید.
    اگر زحمتی نیست این سورسی که از یاهم دانلود کردید اینجا بگذارید ما هم استفاده کنیم.

  9. #9
    کاربر دائمی آواتار hadi2345
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    تبریز
    سن
    46
    پست
    595
    با سلام .
    من هم دارم از این dll استفاده میکنم و از اون تو یکی از برنامه هام استفاده کردم ولی تا حالا ایرادی نداده .
    اگه ممکنه توضیح بیشتری بدید. و اون سورس رو هم که download کردید لطفا اینجا بذارید تا همه استفاده کنند .
    موفق باشید.

  10. #10
    کاربر دائمی
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    بندر عباس
    پست
    250
    من با این dll مشکل داشتم چون خروجی شمسی رو تو date میریختم .اگه مشکل دیگه ای داره به منم بگید .چون چند جا ازش استفاده کردم.

  11. #11
    آخرین نسخه را هم بزودی با تغیرات بسیار زیاد ارائه خواهم داد.
    :flower: کی انشالله

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

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