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

نام تاپیک: راهنمایی در پیدا کردن مشکل

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1385
    محل زندگی
    شیراز
    پست
    35

    Unhappy راهنمایی در پیدا کردن مشکل

    سلام
    ببخشید در کد زیر دستور cmdselect1 با وجود فیلدهایی منطبق با این شروط وجود دارد ولی dtrtodo1 مقداری ندارد و حلقه while اجرا نمی شود لطفا من را راهنمایی کنید.
    متشکرم.
    PrivateSub submit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles submit.Click
    Dim str, id, d AsString

    Dim cmdselect, cmdselect1, cmdselect2, cmdinsert1, cmdinsert2, cmdupdate As SqlCommand
    Dim dtrmember, dtrtodo1, dtr1 As SqlDataReader
    Session("user") = username.Text
    conmember.Open
    cmdselect =
    New SqlCommand("select username,user_id from member where password='" + password.Text + "' and username='" + username.Text + "'", conmember)
    dtr1 = cmdselect.ExecuteReader
    If dtr1.HasRows Then dtr1.Read()
    Session("id") = dtr1("user_id")
    dtr1.Close
    contodo.Open
    cmdselect1 =
    New SqlCommand("select * from todo1 where (sender='" + Session("user") + "' or owner_id=" & Session("id") & ") and folder<>'sucessfull' and folder<>'trash' and folder<>'trashs' and expire='0' and deadline<getdate() or folder= null", contodo)
    dtrtodo1 = cmdselect1.ExecuteReader
    Response.Write("okkkk1")
    contodo2.Open
    While dtrtodo1.Read
    Response.Write("while")
    cmdupdate =
    New SqlCommand("update todo1 set folder='unsucessfull', expire=1 where todo_id=" & dtrtodo1("todo_id") & "", contodo2)
    cmdupdate.ExecuteNonQuery
    Response.Write("cmup")
    cmdselect2 =
    New SqlCommand("select user_id from member where username='" + dtrtodo1("sender") + "'", conmember)
    id = cmdselect2.ExecuteScalar
    d = Now.Year
    If dtrtodo1("folder") <> "trashi" Then

    cmdinsert1 =
    New SqlCommand("insert into todo1 (owner_id,sender,reciever,subject,todo_date,deadli ne,priority,type,is_new,body) values(" & dtrtodo1("owner_id") & ",'کنترل کننده سیستم'," & dtrtodo1("reciever") & ",'اخطاریه',getdate(),'" + d + "','زیاد','Message',1," & dtrtodo1("body") & ",' به پایان رسیده وشما پاسخی مبتنی بر انجام آن ارسال نکرده ایدToDoمهلت این ')", contodo2)
    cmdinsert1.ExecuteNonQuery()
    cmdinsert2 =
    New SqlCommand("insert into todo1 (owner_id,sender,reciever,subject,todo_date,deadli ne,priority,type,is_new,body) values('" + id.ToString + "','کنترل کننده سیستم'," & dtrtodo1("sender") & ",'اخطاریه',getdate(),'" + d + "','زیاد','Message',1," & dtrtodo1("body") & ",' به پایان رسیده وشما پاسخی مبتنی بر انجام آن دریافت نکرده ایدToDoمهلت این ')", contodo2)
    cmdinsert2.ExecuteNonQuery
    Else

    cmdinsert2 =
    New SqlCommand("insert into todo1 (owner_id,sender,reciever,subject,todo_date,deadli ne,priority,type,is_new,body) values('" + id.ToString + "','کنترل کننده سیستم'," & dtrtodo1("sender") & ",'اخطاریه',getdate(),'" + d + "','زیاد','Message',1," & dtrtodo1("body") & ",' به پایان رسیده وشما پاسخی مبتنی بر انجام آن دریافت نکرده ایدToDoمهلت این ')", contodo2)
    cmdinsert2.ExecuteNonQuery
    EndIf

    EndWhile

    dtr1.Close
    dtrtodo1.Close
    contodo2.Close
    contodo.Close
    If Page.IsValid Then dtrmember = cmdselect.ExecuteReader
    If dtrmember.HasRows Then

    While dtrmember.Read
    If (dtrmember("username") = "addmin") Then

    Response.Redirect("admin.aspx")
    ElseIf (dtrmember("username") = username.Text) Then

    Session("user") = " " & username.Text
    Session("id") = dtrmember("user_id")
    Response.Redirect("master.aspx")
    EndIf

    EndWhile

    Else : Label.Visible = True

    EndIf

    conmember.Close
    EndSub


  2. #2
    کاربر دائمی آواتار samanes
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    106
    Session از جنس object مقدار بر میگردونه..
    مقدارشو به string تبدیل کن.

    string text = System.Convert.ToString(Session["saman"]);

  3. #3
    کاربر دائمی آواتار samanes
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    106
    و id اگه از نوع int است, session رو convert کن به integer

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1385
    محل زندگی
    شیراز
    پست
    35
    سلام
    ممنون از راهنماییتان .اما کد من خطای منطفی دارد از لحاظ syntax چک شده.

  5. #5
    پیشنهاد می کنم به جای این که این طوری همه رشته پرس و جو رو بسازید مقادیر رو به صورت پارامتر تعریف کنید و بعد مقدار دهی کنید:


    Dim cmd As New SqlCommand()
    cmd.CommandText = "SELECT * FROM [Table1] WHERE [Field1]=@x AND [Field2]=@y"
    cmd.Parameters.Add("@x", SqlDbType.Int).Value = 1
    cmd.Parameters.Add("@y", SqlDbType.NVarChar).Value = "Test"
    با این روش شاید چند خط کد بیشتر بنویسی ولی حداقل از صحت مقادیر و تبدیل آنها بین دات نت و SQL مطمئن میشی و ضمنا در هر مرحله خطا یابی خیلی راحت میشه وخطا های منطقی به حداقل میرسه و ظاهر کد هم ساده تر و واضح تر میشه !

    در ضمن برای مشکل شما هم به نظر من تنها ایراد ممکن در رشته پرس و جو می تونه باشه که من بارها خودم به اون برخورد کردم و تقریبا در اکثر موارد علت همون بود که گفتم (یک خطای کوچیک در این رشته باعث جواب نگرفتن در این مرحله میشه)

    بهترین راه تست کردن این پرس وجو در Query Analyzer و دیدن نتیجه آن است.

    در ضمن اگر نام فیلد ها و جدول ها رو بین [] قرار بدی از یک سری خطا های احتمالی دیگه هم راحت میشی!

    خطاهای احتمالی :
    1. استفاده نکردن از N قبل از رشته های فارسی
    2.استفاده نکردن از ' ' در اطراف رشته ها
    3.استفاده از نوع داده ناصحیح
    4.استفاده از کلمات رزرو شده SQL در زمان طراحی جدول ها و فیلدها (برای اصلاح آن از [] استفاده کن)
    5.وجود فاصله (Space) در سمت چپ یا راست رشته های تولید شده توسط دات نت (از توابع Trim برای اصلاح آن استفاده کنید)
    6.رعایت نکردن فاصله بین کلمات کلیدی SQL در رشته پرس وجو
    7.حتی الامکان از قرار دادن مقادیر فارسی در فیلد هایی که عمل مقایسه بر روی آنها انجام می شود خودداری کنید.


    امیدوارم با این توضیحات مشکل حل بشه.

تاپیک های مشابه

  1. تقاضایی راهنمایی و کمک در کار با Dreamweaver
    نوشته شده توسط احمد کاوه در بخش طراحی وب (Web Design)
    پاسخ: 4
    آخرین پست: پنج شنبه 29 مهر 1389, 12:41 عصر
  2. آقا چه چیزایی با javascript قابل حل هست چه چیزایی با .net
    نوشته شده توسط odiseh در بخش ASP.NET Web Forms
    پاسخ: 13
    آخرین پست: جمعه 02 فروردین 1387, 04:44 صبح
  3. دوستانی که با interbase آشنایی دارند لطفا راهنمایی کنند
    نوشته شده توسط mehdi_moosavi در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 4
    آخرین پست: شنبه 01 بهمن 1384, 14:11 عصر

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

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