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

نام تاپیک: جستجو بین دو تاریخ شمسی با فرمت استرینگ

  1. #1
    کاربر دائمی آواتار mohammad-gh
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    باغ شهر آذربايجان (مراغه)
    پست
    671

    جستجو بین دو تاریخ شمسی با فرمت استرینگ

    با سلام
    من در برنامه ای که نوشته ام نیاز به محاسبه رکوردها بین دو تاریخ شمسی را دارم.
    تاریخ را با فرمت استرینگ و به صورت شمسی در بانک ذخیره کرده ام، حال می خوام ببینم چطوری می تونم آنها را با یک دستور select یا با یک حلقه جدا و پیدا کرده و داخل یک datatable یا dataset دیگر بریزم.
    این رو هم می دونم اگه راه حلی نباشه می تونم یکی یکی اونها رو به تاریخ میلادی بر گردونم و با بازه تاریخی مقایسه کنم. اما نمی دونم در این صورت چه چطور اونها رو دوباره در datattable بریزم

  2. #2
    کاربر دائمی آواتار touraj
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    341
    ببخشید. اما راستش من اصلاً نفهمیدم مشکلت چیه! یه کمی بیشتر توضیح میدی؟

  3. #3
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    Select DDate From MyTable Where (string.Format("DDate Between '{0}' And '{1}'", ADate.Text, ADateTo.Text))

    ADate تاریخ شروع
    ADateTo تاریخ پایان
    آخرین ویرایش به وسیله Sub Zero : چهارشنبه 25 اردیبهشت 1387 در 18:31 عصر دلیل: اشکال Syntax در کلمه From

  4. #4
    کاربر دائمی آواتار touraj
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    341
    نقل قول نوشته شده توسط Sub Zero مشاهده تاپیک
    Select DDate Form MyTable Where (string.Format("DDate Between '{0}' And '{1}') ", ADate.Text, ADateTo.Text))

    ADate تاریخ شروع
    ADateTo تاریخ پایان
    آره، راست میگیا! چه گاگولی هستم من

  5. #5
    کاربر دائمی آواتار arsalansalar
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    اتاق آبی
    پست
    974
     "Select * From data Where  tdate >= " + textbox1.Text + " and tdate <= " + textbox2.Text + "  Order By id desc"

  6. #6
    کاربر دائمی آواتار mohammad-gh
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    باغ شهر آذربايجان (مراغه)
    پست
    671
    با سلام و تشکر.
    من از کد خواستم استفاده کنم ولی خطا می ده. این هم نوع استفاده ام.

    objDataAdapter.SelectCommand.CommandText =
    "Select DDate Form MyTable Where (string.Format("DDate Between '{0}' And '{1}'", ADate.Text, ADateTo.Text))"

  7. #7
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    نقل قول نوشته شده توسط mohammad-gh مشاهده تاپیک
    با سلام و تشکر.
    من از کد خواستم استفاده کنم ولی خطا می ده. این هم نوع استفاده ام.

    objDataAdapter.SelectCommand.CommandText =
    "Select DDate Form MyTable Where (string.Format("DDate Between '{0}' And '{1}'", ADate.Text, ADateTo.Text))"
    اگه دقیقا همین کد رو استفاده کردین باید بگم که Syntax مشکل داره Form رو با From تبدیل کنید.
    البته اشکال ازمن بود . معذرت!
    آخرین ویرایش به وسیله Sub Zero : چهارشنبه 25 اردیبهشت 1387 در 18:30 عصر

  8. #8
    کاربر دائمی آواتار mohammad-gh
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    باغ شهر آذربايجان (مراغه)
    پست
    671
    سلام .
    نه مشکل تو from نیست ، اصلا فرمت دستور درست در نمی آید. فکر کنم تو کوتیشن هاش یه مشکلی است . بعد هم که یه فکری به حال اون می کنی از between ایراد می گیره.
    بازهم ممنون . اگه می شه خودتون هم با coomand امتحان کنید.

  9. #9
    ببینید استفاده از نوع Text برای ذخیره تاریخ کار اشتباهیه
    من یه پیشنهاد بهتون می کنم:
    به نظر من بهترین کار این هست که شما دو فیلد در جدول ایجاد کنید
    یکی برای ذخیره تاریخ به فرمت میلادی و از نوع Date/Time
    و دیگری برای ذخیره مقدار تبدیل شده فیلد قبلی به تاریخ شمسی و نوع Text
    خب، حالا خیلی راحت می تونید برای انجام محاسبات از فیلد تاریخ میلادی، و برای نمایش به کاربر در فرم برنامه یا در گزارشات از فیلد تاریخ شمسی استفاده کنید

    حالا برای پیدا کردن رکوردهای بین دو تاریخ شما باید دو مقدار تاریخ به فرمت میلادی داشته باشید
    از تاریخ == TextBox1.Text یعنی مقدار تاریخ اول
    تا تاریخ == TextBox2.Text یعنی مقدار تاریخ دوم

    اول باید چک کنید که کاربر تاریخ دوم رو مساوی یا کمتر از تاریخ اول وارد نکرده باشه و بعد محاسبه رو انجام بدید:


    a = DateDiff(DateInterval.Day, TextBox1.Text, TextBox2.Text)

    If a > 0 Then
    objDataAdapter.SelectCommand.CommandText = " SELECT * FROM Table1 WHERE date1 >=#" & TextBox1.Text & "# AND date2<=#" & TextBox2.Text & "#"
    End If

    اگر از Access استفاده می کنید برای پیدا کردن فیلدهای نوع Date/Time باید از علامت # قبل و بعد از مقدار تاریخ استفاده کنید.

  10. #10
    کاربر دائمی آواتار mohammad-gh
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    باغ شهر آذربايجان (مراغه)
    پست
    671
    با سلام و تشکر از راهنمایی آقای morteza-s ، اما اینکه من بخواهم حدود 30 تیبل را دوباره باز نویسی کنم کمی ظلم است.
    تعجب من از این است که در زمان طراحی هیچ کس در مورد این مشکل حرفی نگقته بود.
    به هر حال امیدورام روش آقای Sub Zero درست عمل کند .

    اما با یک روش دیگر هم می شود این رکوردها را جدا کرد که من یک جای آن را بلد نیستم .
    بدین ترتیب که ما اول کل فیلدهای تاریخ جدول را یکی یکی به میلادی تبدیل وبعد با تاریخ ورودی مقایسه کنیم . اما نمی دانمم چطور دوباره در یک datatable یا dataset بریزیم.

  11. #11
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    این یکی رو امتحان کنید امیداوارم جواب بده :
    Using con As New OleDb.OleDbConnection("Your Connection")
    con.Open()
    Dim Cmd As New OleDb.OleDbCommand
    With Cmd
    .Connection = con
    .CommandText = String.Format("Select DDate From MyTable Where (DDate Between '{0}' And '{1}') ", ADate.Text, ADateTo.Text)
    Dim DT As New DataTable
    DT.Load(.ExecuteReader)
    End With
    End Using

  12. #12
    کاربر دائمی آواتار mohammad-gh
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    باغ شهر آذربايجان (مراغه)
    پست
    671
    آقا تشکر خیلی خوب هم کار کرد.

  13. #13
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181
    PrivateSub project_search()
    Dim CNN As OleDbConnection
    Dim DataReader As OleDbDataReader
    Dim Command As OleDb.OleDbCommand
    Dim cnnstr AsString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
    CNN = New OleDbConnection(cnnstr)
    Dim SQL AsString = "SELECT * FROM(Table1)WHERE (((Table1.sdate) Between [@Adate] And [@Bdate]))ORDER BY Table1.sdate"
    Command = New OleDbCommand(SQL, CNN)
    Command.CommandType = CommandType.Text
    Command.Parameters.Add(
    "@Adate", Data.OleDb.OleDbType.VarChar, 10).Value = Me.txtdatefrom.Text
    Command.Parameters.Add(
    "@Bdate", Data.OleDb.OleDbType.VarChar, 10).Value = Me.txtdateto.Text
    CNN.Open()
    DataReader = Command.ExecuteReader
    If DataReader.HasRows Then
    mytbl = New DataTable
    mytbl.Load(DataReader)
    DataGridView1.DataSource = mytbl
    Else
    MsgBox("رکوردی پیدا نشد")
    EndIf
    DataReader.Close()
    CNN.Close()
    EndSub

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

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