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

نام تاپیک: مقایسه تاریخ در sql

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    هلند
    پست
    1,709

    مقایسه تاریخ در sql

    سلام
    من برنامه ای نوشته ام که در یکی از فرمها بر اساس یک مقایسه اطلاعات در گرید نمایش داده میشه
    کد sql ان :
     'sSql = "SELECT * FROM Facturregels WHERE CDate(FacturDatum) <=#" & Vandaag & "# AND Gefacturerd=false "

    مدتیه که این کد کار نمیکنه و شرط تاریخ رو برنمگیردونه در حالیکه قبلا خوب کار میکرد ! . نمیدانم در تنظیمات وی بی دست بردم ( که بردم اگه از اون باشه ) یا مشکل دیگری هست .
    در مثال فوق شرط تاریخ کنترل نمیشه و همه فیلدها رو برمیگردونه در حالیکه باید فلدهایی که کمتر یا مساوی با Vandaag نمایش داده شود.
    دوستان باز هم میگم قبلا کار میکرد ( منظورم اینه که از CDate و اینا نمیتونه باشه )

  2. #2
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: مقایسه تاریخ در sql

    نقل قول نوشته شده توسط Hossein Bazyan مشاهده تاپیک
    سلام
    من برنامه ای نوشته ام که در یکی از فرمها بر اساس یک مقایسه اطلاعات در گرید نمایش داده میشه
    کد sql ان :
     'sSql = "SELECT * FROM Facturregels WHERE CDate(FacturDatum) <=#" & Vandaag & "# AND Gefacturerd=false "

    مدتیه که این کد کار نمیکنه و شرط تاریخ رو برنمگیردونه در حالیکه قبلا خوب کار میکرد ! . نمیدانم در تنظیمات وی بی دست بردم ( که بردم اگه از اون باشه ) یا مشکل دیگری هست .
    در مثال فوق شرط تاریخ کنترل نمیشه و همه فیلدها رو برمیگردونه در حالیکه باید فلدهایی که کمتر یا مساوی با Vandaag نمایش داده شود.
    دوستان باز هم میگم قبلا کار میکرد ( منظورم اینه که از CDate و اینا نمیتونه باشه )
    این دستور sql? یا ویبی؟ اگر sql هست این cdate یعنی چی؟
    برای sql این دستور را باید بنویسی

    SELECT * FROM Tabale
    WHERE myDate='2008/01/01'

    علامت # برای مشخص کردن تاریخ در ویبی هست
    دستور را اینجوری اصلاح کن

    sSql = "SELECT * FROM Facturregels WHERE FacturDatum <= '" & Cdate(Vandaag) & "' AND Gefacturerd=false "

  3. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    هلند
    پست
    1,709

    نقل قول: مقایسه تاریخ در sql

    نقل قول نوشته شده توسط linux مشاهده تاپیک
    این دستور sql? یا ویبی؟ اگر sql هست این cdate یعنی چی؟
    برای sql این دستور را باید بنویسی

    SELECT * FROM Tabale
    WHERE myDate='2008/01/01'

    علامت # برای مشخص کردن تاریخ در ویبی هست
    دستور را اینجوری اصلاح کن

    sSql = "SELECT * FROM Facturregels WHERE FacturDatum <= '" & Cdate(Vandaag) & "' AND Gefacturerd=false "
    سلام
    مرسی دوست عزیز. درسته دستور sql میباشد اما من در وی بی میخوام اجرا کنم .
    اما دستور cdate . من بنا به دلایلی نوع فیلد رو رشته گرفته ام و برای مقایسه باید تبدیل به تاریخ بشه این دستور هم فیلد رو برای مقایسه به تاریخ تبدیل میکنه .
    از علامتهای ' ' هم استفاده کردم اما جواب نمیده . میگم قبلا جواب میداد. البته خودم به نتایجی رسیده ام که نمیدانم درسته یا خیر .
    من تاریخ رو به شکل ( سال - ماه - روز) در بانک خیره کرده ام - در هلند از این روش استفاده میشه اما در اجرای گام به گام به گام مقداری که به رشته Vandaag نسبت داده میشه به شکل (سال - روز- ماه) میباشد . که نمیدانم ایا خطا از این میباشد یا خیر ؟
    اگر بله باید به چه شکل تنظیمات برنامه رو برای یک کشور مشخص تنظیم نمود ؟
    در ضمن من پیغام هم نمیگیرم

  4. #4
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: مقایسه تاریخ در sql

    نقل قول نوشته شده توسط Hossein Bazyan مشاهده تاپیک
    سلام
    مرسی دوست عزیز. درسته دستور sql میباشد اما من در وی بی میخوام اجرا کنم .
    اما دستور cdate . من بنا به دلایلی نوع فیلد رو رشته گرفته ام و برای مقایسه باید تبدیل به تاریخ بشه این دستور هم فیلد رو برای مقایسه به تاریخ تبدیل میکنه .
    از علامتهای ' ' هم استفاده کردم اما جواب نمیده . میگم قبلا جواب میداد. البته خودم به نتایجی رسیده ام که نمیدانم درسته یا خیر .
    من تاریخ رو به شکل ( سال - ماه - روز) در بانک خیره کرده ام - در هلند از این روش استفاده میشه اما در اجرای گام به گام به گام مقداری که به رشته Vandaag نسبت داده میشه به شکل (سال - روز- ماه) میباشد . که نمیدانم ایا خطا از این میباشد یا خیر ؟
    اگر بله باید به چه شکل تنظیمات برنامه رو برای یک کشور مشخص تنظیم نمود ؟
    در ضمن من پیغام هم نمیگیرم
    شما تاریخ را به صورت همان datetime بگیرید.
    شما وقتی می خواهید یک دستور را به sql بفرستید فقط مجاز هستید که از دستورات sql استفاده کنید ، اصلا اهمیتی نداره که در vb یا C#‎ یا هر زبان دیگر دارید برای sql دستور می نویسید باید سنتکس sql را رعایت کنید.
    بعدش هم چرا اینجوری پارامتر را به sql می فرستید که ممکن کلی مشکل پیش بیاید با فرض اینکه شما فیلد FacturDatum از نوع datetime تعریف کردید اینطور کد بنویسید حتما از تعریف پارامتر برای ارسال پارامترها استفاده کنید

    Using cnn As New SqlConnection("Data Source=BABAKPC;Initial Catalog=Northwind;Integrated Security=True")
    cnn.Open()
    Dim cmd As New SqlCommand()
    Dim p1 As New SqlParameter
    Dim p2 As New SqlParameter
    p1.ParameterName = "@p1"
    p1.DbType = DbType.DateTime
    p1.Value = CDate("1980/01/01")
    p2.ParameterName = "@p2"
    p2.DbType = DbType.String
    p2.Value = "WA"

    cmd.CommandText = "SELECT * from employees where BirthDate <=@p1 AND Region=@p2"
    cmd.Parameters.Add(p1)
    cmd.Parameters.Add(p2)
    cmd.Connection = cnn
    Dim reader As SqlDataReader = cmd.ExecuteReader()
    While reader.Read()
    ListBox1.Items.Add(reader(0) & "" & reader(1))
    End While
    End Using


    [

    با تعریف پارامتر از بروز sqlinjection هم جلوگیری میشه

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

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