منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
هل هناك خطأ فى هذا الكود - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : هل هناك خطأ فى هذا الكود (/showthread.php?tid=31471)

الصفحات: 1 2


RE: هل هناك خطأ فى هذا الكود - خالد كامل1 - 24-09-19

(24-09-19, 04:39 AM)baha كتب : هل جملة sql شغالة في قاعدة البيانات؟

نعم


RE: هل هناك خطأ فى هذا الكود - حريف برمجة - 24-09-19

ضع اسم العميل بعد where مباشرة ثم التاريخ


RE: هل هناك خطأ فى هذا الكود - خالد كامل1 - 24-09-19

(24-09-19, 05:15 AM)حريف برمجة كتب : ضع اسم العميل بعد where مباشرة ثم التاريخ

انا استخدمت هذا الكود فى الصب


كود :
Public Sub SEARCH2DATE(ByVal order_date As DateTime, ByVal order_date2 As DateTime, ByVal mo_name As String)
       DT_SEARCH.Clear()
       Dim CMDSEARCH As New OleDbCommand(" SELECT * FROM ORDERS WHERE mo_name = '" & mo_name & "'and  order_date >= @order_date AND order_date <= @order_date2   ", con)
       CMDSEARCH.Parameters.Clear()
       CMDSEARCH.Parameters.Add("@mo_name", OleDbType.VarChar).Value = mo_name
       CMDSEARCH.Parameters.Add("@order_date", OleDbType.Date).Value = "#" & order_date & "#"
       CMDSEARCH.Parameters.Add("@order_date2", OleDbType.Date).Value = "#" & order_date2 & "#"

       Try
           If con.State = 1 Then con.Close()
           con.Open()
           DT_SEARCH.Load(CMDSEARCH.ExecuteReader)
           con.Close()
           CMDSEARCH = Nothing
       Catch ex As Exception
           con.Close()
           MsgBox(Err.Description, MsgBoxStyle.Information)
       Finally
           If con.State = ConnectionState.Open Then con.Close()
       End Try

   End Sub

وهذا الكود عند حدث الكليك فى زر البحث 

كود :
  SEARCH2DATE(DateTimePicker1.Value, DateTimePicker2.Value, mo_name.Text)
       DGV_ORDERSM.DataSource = DT_SEARCH
ولم اجد فائده


RE: هل هناك خطأ فى هذا الكود - حريف برمجة - 24-09-19

تأكد من الديت تايم بيكر انها تاريخ فقط وليس تاريخ ووقت .


RE: هل هناك خطأ فى هذا الكود - خالد كامل1 - 24-09-19

حضراتكم سيبكم من الكود ده خلاص
انا معايا تاريخبن
datetimepaker1 وdatetimepaker2 و اسم العميل mo_name فى جدول واحد اسمه orders
اريد البحث باسم العميل عن الفواتير بين التاريخين دول ولكم منى جزيل الشكر


RE: هل هناك خطأ فى هذا الكود - حريف برمجة - 24-09-19

(24-09-19, 05:34 AM)خالد كامل1 كتب : حضراتكم سيبكم من الكود ده خلاص
انا معايا تاريخبن
datetimepaker1 وdatetimepaker2 و اسم العميل mo_name فى جدول واحد اسمه orders
اريد البحث باسم العميل عن الفواتير بين التاريخين دول ولكم منى جزيل الشكر

الأول اعمل مسج يظهر لك محتوى الديت تايم بيكر وشوف نفس تنسيق البيانات الموجوده في حقل التاريخ .


RE: هل هناك خطأ فى هذا الكود - baha - 24-09-19

أعتذر منك أخي خالد كامل1  لقد كانت هناك أخطاء إملائية في بعض الأكواد السابقة

جرب الكود التالي
كود :
Public Sub SEARCH2DATE(ByVal order_date As Date, ByVal order_date2 As Date, ByVal mo_name As String)
       Try
           DT_SEARCH = New DataTable
           DT_SEARCH.Clear()
           Dim da As New OledbDataAdapter(" SELECT * FROM ORDERS WHERE mo_name = '" & mo_name & "' and  order_date >='" & order_date & "' AND order_date <= '" & order_date2 & "'", con)

           da.Fill(DT_SEARCH)
           '
           DataGridView1.DataSource = DT_SEARCH

       Catch ex As Exception
           MsgBox(Err.Description, MsgBoxStyle.Information)
       Finally
           con.Close()
       End Try

   End Sub


مثلاً الخطأ في الكود الأول:

كود :
Public Sub SEARCH2DATE(ByVal order_date As DateTime, ByVal order_date2 As DateTime, ByVal mo_name As String)
      DT_SEARCH.Clear()
      Dim CMDSEARCH As New OleDbCommand(" SELECT * FROM ORDERS WHERE order_date >= @order_date AND order_date <= @order_date2 and  mo_name = @mo_name ", con)
      CMDSEARCH.Parameters.Clear()
      CMDSEARCH.Parameters.Add("@mo_name", OleDbType.VarChar).Value = mo_name
      CMDSEARCH.Parameters.Add("@order_date", OleDbType.Date).Value = "#" & order_date & "#"
      CMDSEARCH.Parameters.Add("@order_date2", OleDbType.Date).Value = "#" & order_date2 & "#"
      CMDSEARCH.Parameters.Add("@mo_name", OleDbType.VarChar).Value = mo_name
      Try
          If con.State = 1 Then con.Close()
          con.Open()
          DT_SEARCH.Load(CMDSEARCH.ExecuteReader)
          con.Close()
          CMDSEARCH = Nothing
      Catch ex As Exception
          con.Close()
          MsgBox(Err.Description, MsgBoxStyle.Information)
      Finally
          If con.State = ConnectionState.Open Then con.Close()
      End Try

  End Sub

الخطأ الأول هو 

      CMDSEARCH.Parameters.Add("@mo_name", OleDbType.VarChar).Value = mo_name
      CMDSEARCH.Parameters.Add("@order_date", OleDbType.Date).Value = "#" & order_date & "#"
      CMDSEARCH.Parameters.Add("@order_date2", OleDbType.Date).Value = "#" & order_date2 & "#"
      CMDSEARCH.Parameters.Add("@mo_name", OleDbType.VarChar).Value = mo_name

الجملة مكررة


يظهر أيضاً في الكود التالي اعطاء قيمة للاسم مباشرة


Public Sub SEARCH2DATE(ByVal order_date As DateTime, ByVal order_date2 As DateTime, ByVal mo_name As String)
       DT_SEARCH.Clear()
       Dim CMDSEARCH As New OleDbCommand(" SELECT * FROM ORDERS WHERE mo_name = '" & mo_name & "'and  order_date >= @order_date AND order_date <= @order_date2   ", con)
       CMDSEARCH.Parameters.Clear()

اسناد قيمة لباراميتر غير موجود في جملة sql
       CMDSEARCH.Parameters.Add("@mo_name", OleDbType.VarChar).Value = mo_name
       CMDSEARCH.Parameters.Add("@order_date", OleDbType.Date).Value = "#" & order_date & "#"
       CMDSEARCH.Parameters.Add("@order_date2", OleDbType.Date).Value = "#" & order_date2 & "#"

       Try
           If con.State = 1 Then con.Close()
           con.Open()
           DT_SEARCH.Load(CMDSEARCH.ExecuteReader)
           con.Close()
           CMDSEARCH = Nothing
       Catch ex As Exception
           con.Close()
           MsgBox(Err.Description, MsgBoxStyle.Information)
       Finally
           If con.State = ConnectionState.Open Then con.Close()
       End Try

   End Sub