تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طلب مساعدة في كود البحث بالتاريخ وبمربع تكست وعرض البيانات بالتكست والداتا جريد
#1
السلام عليكم ورحمة الله وبركاتة
اعمل على برنامج شخصي من اجل تعلم البرمجة
عندي فورم بحث من اجل التعديل
يحتوي على تكست بكس عدد 4
كومبو بكس عدد 1  يعرض ايام الاسبوع
داتا تايم 1
زر بحث باسم الشركة
تكست لوضع اسم الشركة
زر بحث بالتاريخ
داتا تايم للبحث بالتاريخ
زر تعديل

المشكلة بالبحث سواء باسم الشركة او بالتاريخ تتم عملية البحث 
مرة يتم تصفية النتائج بالداتا جريد ومرة ثانية لا سواء كان البحث بالتاريخ او باسم الشركة
هذا الكود المستخدم للبحث باسم الشركة
كود :
If myconn.conn.State = ConnectionState.Closed Then
           myconn.conn.Open()
       End If
       If TextCompany1.Text.Trim = "" Then
           MsgBox("ادخل قيمة البحث المطلوبة", vbMsgBoxRtlReading + vbCritical, "ادخال البيانات")
           TextCompany1.Focus()
           Exit Sub
       End If
       myconn.dt.Clear()
       myconn.da = New SqlDataAdapter("Select * from woork1 Where Name_Company like '%" & TextCompany1.Text.Trim & "%'", myconn.conn)
       myconn.da.Fill(myconn.dt)
       DgvEdit.DataSource = myconn.dv
       If myconn.dt.Rows.Count() > 0 Then

           Textrecid.Text = myconn.dt.Rows(0)(0).ToString
           TexCompany.Text = myconn.dt.Rows(0)(1).ToString
           ComboBoxDay.Text = myconn.dt.Rows(0)(2).ToString
           DateTimePicker1.Value = myconn.dt.Rows(0)(3).ToString
           TxtInformisen.Text = myconn.dt.Rows(0)(4).ToString
           TxtHouer.Text = myconn.dt.Rows(0)(5).ToString
           TxtHouer.Text = Val(TxtHouer.Text).ToString("0.0")
           TxtNotes.Text = myconn.dt.Rows(0)(6).ToString
           DgvEdit.DataSource = myconn.dv
           myconn.showposition(lbl:=LbEdit)
           summEdit()
           TexCompany.Enabled = True
           ComboBoxDay.Enabled = True
           TxtInformisen.Enabled = True
           TxtHouer.Enabled = True
           TxtNotes.Enabled = True
           BtnEdit.Enabled = True
       Else
           MsgBox("لايوجد بيانات", vbMsgBoxRtlReading + vbCritical, "خطا")
           myconn.load_data()
           DgvEdit.DataSource = myconn.dv
           myconn.cur = CType(Me.BindingContext(myconn.dv), CurrencyManager)
           myconn.showposition(lbl:=LbEdit)
       End If
وهذا الكود بالتاريخ
كود :
myconn.dt.Clear()
       myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)
       myconn.da.Fill(myconn.dt)
       DgvEdit.DataSource = myconn.dt
       If myconn.dt.Rows.Count > 0 Then
           myconn.ID = DgvEdit.CurrentRow.Cells(0).Value
           Textrecid.Text = myconn.dt.Rows(0)(0).ToString
           TexCompany.Text = myconn.dt.Rows(0)(1).ToString
           ComboBoxDay.SelectedItem = myconn.dt.Rows(0)(2).ToString
           DateTimePicker1.Value = myconn.dt.Rows(0)(3).ToString
           TxtInformisen.Text = myconn.dt.Rows(0)(4).ToString
           TxtHouer.Text = myconn.dt.Rows(0)(5).ToString
           TxtHouer.Text = Val(TxtHouer.Text).ToString("0.0")
           TxtNotes.Text = myconn.dt.Rows(0)(6).ToString
           DgvEdit.DataSource = myconn.dv
           myconn.showposition(lbl:=LbEdit)
           summEdit()
           BtnSersh.Enabled = True
           BtnEdit.Enabled = True
           TexCompany.Enabled = True
           ComboBoxDay.Enabled = True
           TxtInformisen.Enabled = True
           TxtHouer.Enabled = True
           TxtNotes.Enabled = True
       Else
           MsgBox("لايوجد بيانات", vbMsgBoxRtlReading + vbCritical, "خطا")
           myconn.load_data()
           DgvEdit.DataSource = myconn.dv
           myconn.cur = CType(Me.BindingContext(myconn.dv), CurrencyManager)
           myconn.showposition(lbl:=LbEdit)
       End If
وهذة الاكواد تم وضعها في كلاس
كود :
Public dt As New DataTable
   Public da As New SqlDataAdapter
     Public dv As New DataView
فضلا لا امرا اين الخطا
بارك الله فيكم
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

بخصوص البحث بالتاريخ اذا كان هو ما يحدث به المشكلة
فكل ما عليك استبدال هذا السطر
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)

بهذا السطر
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm= #" & CDate(DTP_pur1.Text) & "#", myconn.conn)

تذكر ان يكون التاريخ المدخل فى DTP_pur1 ان يكون التاريخ المدخل به
يوم شهر سنة أو سنة شهر يوم
أو شهر سنة وكذلك سنة شهر

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
#3
(30-08-18, 08:23 PM)elgokr كتب :
وعليكم السلام ورحمة الله وبركاته

بخصوص البحث بالتاريخ اذا كان هو ما يحدث به المشكلة
فكل ما عليك استبدال هذا السطر
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)

بهذا السطر
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm= #" & CDate(DTP_pur1.Text) & "#", myconn.conn)

تذكر ان يكون التاريخ المدخل فى DTP_pur1 ان يكون التاريخ المدخل به
يوم شهر سنة أو سنة شهر يوم
أو شهر سنة وكذلك سنة شهر

تحياتى لك
وتمنياتى لك التوفيق

مشكور اخي لردك 
تم استبدال الكود واعطى الخطا التالي


المشكلة عند البحث بالتاريخ او اسم الشركة يظهر النتائج بالتكست 
ولكن بالداتا جريد فيو لا يصفي النتائج
تحياتي لك
الرد }}}
تم الشكر بواسطة:
#4
بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق

(31-08-18, 12:11 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق


أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر


لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل 
كود :
#" & TextBox1.Text & "#

او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)

دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate

وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة

وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
كود :
Dim text as String
لكل علامة لها دور واختصار فى قواعد البيانات

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: عابر سبيل 2 , baha , essawq , essawq
#5
(30-08-18, 11:52 PM)elgokr كتب :
بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق

(31-08-18, 12:11 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق


أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر


لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل 
كود :
#" & TextBox1.Text & "#

او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)

دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate

وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة

وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
كود :
Dim text as String
لكل علامة لها دور واختصار فى قواعد البيانات

تحياتى لك
وتمنياتى لك التوفيق


أنا أتكلم عن قاعدة بيانات SqlServer والتي يعتمد عليها صاحب الموضوع

فقاعدة بيانات SqlServer تستخدم العلامات ' ' للتاريخ ولا تقبل علامة # مثل الأكسس

بالاضافة لو استخدم الباراميترات لكان أفضل له مثل
PHP كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm=@d "myconn.conn)
myconn.da.selectcommand.parameters.AddwithValue("@d",CDate(DTP_pur1.Text)) 
الرد }}}
#6
(30-08-18, 11:52 PM)elgokr كتب :
بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق

(31-08-18, 12:11 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق


أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر


لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل 
كود :
#" & TextBox1.Text & "#

او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)

دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate

وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة

وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
كود :
Dim text as String
لكل علامة لها دور واختصار فى قواعد البيانات

تحياتى لك
وتمنياتى لك التوفيق

السلام عليكم 
بالنسبة للتاريخ
إذا كان الحقل نوعه "Date" أو "DateTime" فإنه يعامل معاملة النص في الاستعلام لأنه يخزن التاريخ في قاعدة البيانات كنص
أي الكود التالي صحيح في حالة البحث على تاريخ يكون كما هو مخزّن في قاعدة البيانات بالتمام:

كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)

ويمكن أيضاً استخدام الكود التالي في حالة وضع جزء من التاريخ أو كامل :
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='%" & DTP_pur1.Text & "%'", myconn.conn)

(30-08-18, 11:52 PM)elgokr كتب :
بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق

(31-08-18, 12:11 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق


أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر


لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل 
كود :
#" & TextBox1.Text & "#

او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)

دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate

وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة

وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
كود :
Dim text as String
لكل علامة لها دور واختصار فى قواعد البيانات

تحياتى لك
وتمنياتى لك التوفيق

السلام عليكم 
بالنسبة للتاريخ
إذا كان الحقل نوعه "Date" أو "DateTime" فإنه يعامل معاملة النص في الاستعلام لأنه يخزن التاريخ في قاعدة البيانات كنص
أي الكود التالي صحيح في حالة البحث على تاريخ يكون كما هو مخزّن في قاعدة البيانات بالتمام:

كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)

ويمكن أيضاً استخدام الكود التالي في حالة وضع جزء من التاريخ أو كامل :
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='%" & DTP_pur1.Text & "%'", myconn.conn)
الرد }}}
تم الشكر بواسطة: essawq , essawq , عابر سبيل 2 , عابر سبيل 2
#7
(31-08-18, 01:16 AM)baha كتب : السلام عليكم 
بالنسبة للتاريخ
إذا كان الحقل نوعه "Date" أو "DateTime" فإنه يعامل معاملة النص في الاستعلام لأنه يخزن التاريخ في قاعدة البيانات كنص
أي الكود التالي صحيح في حالة البحث على تاريخ يكون كما هو مخزّن في قاعدة البيانات بالتمام:

كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)

ويمكن أيضاً استخدام الكود التالي في حالة وضع جزء من التاريخ أو كامل :
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='%" & DTP_pur1.Text & "%'", myconn.conn)

وعليكم السلام ورحمة الله وبركاته

وهنا ياتى الخطاء اذا كان يقوم بتسجيل التاريخ كا نص
لان فى كل مرة قد يقوم بادخال التاريخ باشكال ختلفة
وسيكون البحث عليها بكشل مختلف عن ما سجل

قد يسجل المستخدم عن طريق mm-yyyy
والاخر قد يسجل mm/yyyy
والعكس ان يكون السنة قبل الشهر او اليوم بعد الشهر ... الخ
وسيسبب ايضاً مشكلة اذا كان مستخدم لدى جهازه هجري والاخر ميلادى 
فشخص يقوم بادخال ميلادى والاخر هجري كمثال

جيجب ان يتم بناء القاعدة على اسس حتى تتجنب المشاكل مستقبلياً

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
#8
(30-08-18, 11:52 PM)elgokr كتب :
بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق

(31-08-18, 12:11 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق


أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر


لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل 
كود :
#" & TextBox1.Text & "#

او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)

دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate

وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة

وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
كود :
Dim text as String
لكل علامة لها دور واختصار فى قواعد البيانات

تحياتى لك
وتمنياتى لك التوفيق

نوع العمود بقاعدة البيانات هو تاريخ
حذفت علامات التنصيص الكود تمااااام
هذا الكود 
سلمت يداك
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm= '" & CDate(DTP_pur1.Text) & "'", myconn.conn)


(31-08-18, 01:01 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق

(31-08-18, 12:11 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق


أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر


لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل 
كود :
#" & TextBox1.Text & "#

او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)

دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate

وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة

وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
كود :
Dim text as String
لكل علامة لها دور واختصار فى قواعد البيانات

تحياتى لك
وتمنياتى لك التوفيق


أنا أتكلم عن قاعدة بيانات SqlServer والتي يعتمد عليها صاحب الموضوع

فقاعدة بيانات SqlServer تستخدم العلامات ' ' للتاريخ ولا تقبل علامة # مثل الأكسس

بالاضافة لو استخدم الباراميترات لكان أفضل له مثل
PHP كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm=@d "myconn.conn)
myconn.da.selectcommand.parameters.AddwithValue("@d",CDate(DTP_pur1.Text)) 
اهلا اخي ومشكور لمرورك
الكود تماااام هل استخدم هذة افضل؟
تحياتي لك

(31-08-18, 01:16 AM)baha كتب :
(30-08-18, 11:52 PM)elgokr كتب :
بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق

(31-08-18, 12:11 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق


أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر


لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل 
كود :
#" & TextBox1.Text & "#

او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)

دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate

وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة

وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
كود :
Dim text as String
لكل علامة لها دور واختصار فى قواعد البيانات

تحياتى لك
وتمنياتى لك التوفيق

السلام عليكم 
بالنسبة للتاريخ
إذا كان الحقل نوعه "Date" أو "DateTime" فإنه يعامل معاملة النص في الاستعلام لأنه يخزن التاريخ في قاعدة البيانات كنص
أي الكود التالي صحيح في حالة البحث على تاريخ يكون كما هو مخزّن في قاعدة البيانات بالتمام:

كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)

ويمكن أيضاً استخدام الكود التالي في حالة وضع جزء من التاريخ أو كامل :
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='%" & DTP_pur1.Text & "%'", myconn.conn)

(30-08-18, 11:52 PM)elgokr كتب :
بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق

(31-08-18, 12:11 AM)عابر سبيل 2 كتب :
(30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى # 
من سطر الاستعلام وقم بتجربة الامر

واتمنى ان تكون متاكد بان نوع العمود 
بقاعدة البيانات هو تاريخ وليس نص

تحياتى لك
وتمنياتى لك التوفيق


أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر


لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل 
كود :
#" & TextBox1.Text & "#

او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)

دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate

وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة

وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
كود :
Dim text as String
لكل علامة لها دور واختصار فى قواعد البيانات

تحياتى لك
وتمنياتى لك التوفيق

السلام عليكم 
بالنسبة للتاريخ
إذا كان الحقل نوعه "Date" أو "DateTime" فإنه يعامل معاملة النص في الاستعلام لأنه يخزن التاريخ في قاعدة البيانات كنص
أي الكود التالي صحيح في حالة البحث على تاريخ يكون كما هو مخزّن في قاعدة البيانات بالتمام:

كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)

ويمكن أيضاً استخدام الكود التالي في حالة وضع جزء من التاريخ أو كامل :
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='%" & DTP_pur1.Text & "%'", myconn.conn)
اخي هذا الكود يعمل 
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)
كود جزء من التاريخ لا يعمل
انا استخدم للبحث داتا تايم بيكر
تحياتي لك

(31-08-18, 02:33 AM)elgokr كتب :
(31-08-18, 01:16 AM)baha كتب : السلام عليكم 
بالنسبة للتاريخ
إذا كان الحقل نوعه "Date" أو "DateTime" فإنه يعامل معاملة النص في الاستعلام لأنه يخزن التاريخ في قاعدة البيانات كنص
أي الكود التالي صحيح في حالة البحث على تاريخ يكون كما هو مخزّن في قاعدة البيانات بالتمام:

كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='" & DTP_pur1.Text & "'", myconn.conn)

ويمكن أيضاً استخدام الكود التالي في حالة وضع جزء من التاريخ أو كامل :
كود :
myconn.da = New SqlDataAdapter("Select * from woork1 Where alyowm='%" & DTP_pur1.Text & "%'", myconn.conn)

وعليكم السلام ورحمة الله وبركاته

وهنا ياتى الخطاء اذا كان يقوم بتسجيل التاريخ كا نص
لان فى كل مرة قد يقوم بادخال التاريخ باشكال ختلفة
وسيكون البحث عليها بكشل مختلف عن ما سجل

قد يسجل المستخدم عن طريق mm-yyyy
والاخر قد يسجل mm/yyyy
والعكس ان يكون السنة قبل الشهر او اليوم بعد الشهر ... الخ
وسيسبب ايضاً مشكلة اذا كان مستخدم لدى جهازه هجري والاخر ميلادى 
فشخص يقوم بادخال ميلادى والاخر هجري كمثال

جيجب ان يتم بناء القاعدة على اسس حتى تتجنب المشاكل مستقبلياً

تحياتى لك
وتمنياتى لك التوفيق

ما اردت ان انوة عنة انني استخدم اداة داتا تايم بيكر وليس تكست
يعني ما اقصدة التاريخ يدخل بطريقة واحدة
مشكور اخي

حلت مشكلة البحث 
 اشكركم جميعا
لكن يا اخواني انتبهت لمشكلة في جمع عامود في الداتا جريد واظهار الناتج بتكست بكس بنفس فورم البحث
يتم الجمع لكن لنفرض عندي مجموعة صفوف مجموع الارقام مثلا 10.5 تظهر النتيجة  في التكست 11 يزيد النصف 
انا استخدم  الكود التالي داخل الكلاس واستدعية
كود :
dgv.DataSource = dt
       Dim summ As Integer = 0
       For i As Integer = 0 To dgv.RowCount - 1
           summ += dgv.Rows(i).Cells(5).Value
       Next
       txt.Text = summ.ToString
لا يظهر النصف يقرب الجمع بزيادة نصف
يعني لو المجموع 95.5  يظهر الناتج 96
تحياتي لكم جميعا
الرد }}}
تم الشكر بواسطة: عابر سبيل 2 , عابر سبيل 2
#9
اشكركم جميعا
تم حل مشكلة الجمع بعد البحث
المشكلة يجب كتابة دبل وليس انتجر
هذا الكود 
كود :
dgv.DataSource = dt
       Dim summ As Double = 0
       For i As Integer = 0 To dgv.RowCount - 1
           summ += dgv.Rows(i).Cells(5).Value
       Next

       txt.Text = Format(summ, "00.00")
تحياتي لكم
الرد }}}
تم الشكر بواسطة: عابر سبيل 2 , عابر سبيل 2 , elgokr , elgokr
#10
(31-08-18, 04:40 AM)essawq كتب :
اشكركم جميعا
تم حل مشكلة الجمع بعد البحث
المشكلة يجب كتابة دبل وليس انتجر
هذا الكود 
كود :
dgv.DataSource = dt
       Dim summ As Double = 0
       For i As Integer = 0 To dgv.RowCount - 1
           summ += dgv.Rows(i).Cells(5).Value
       Next

       txt.Text = Format(summ, "00.00")
تحياتي لكم


احسنت رداً اخى essawq

فى توضيح لما تم ايجاده من رد

وهذا هو الحل الفعلى من تحويل نوع استقبال القيمة من Integer الى Double 
فالبعض قد يعلم الحل ولا يضع رد بذلك فاتمنى الجميع ان يبادر بالمثل 

حتى يعم الفائدة اكثر لطريقة استخراج الناتج
ما اشير اليه فى السطر التالى
كود :
txt.Text = Format(summ, "00.00")
فيمكنك ان تستخدمه بهذه الطريقة
كود :
txt.Text = summ.ToString("N2")
أو
كود :
txt.Text = Format(summ, "N2")
وتقوم بتغيير رقم 2 الى عدد الارقام العشرية المطلوب ظهورها وتقريب اقرب رقم لها
بحيث حرف N تعنى الارقام الصحيحة فاى كان الرقم الصحية احاد عشرات .... الخ يبقي القيمة كاملاً
والرقم ما بعد الحرف يشير الى الارقام العشرية 0 يعنى بدون 1 يعنى فقط رقم واحد 
فمثلاً لو القيمة 1.19 وانت جعلت الكتابة N1 تصبح القيمة 1.2

اتمنى ان تكون الصورة وضحت لكيفية الاستخدام

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] مساعدة في تقرير mrfenix93 1 41 24-03-24, 10:29 PM
آخر رد: mrfenix93
  مساعدة jalaltech 1 96 07-03-24, 07:38 PM
آخر رد: قناص المدينة
  مشكلة فى جمع عمود فى داتا جريد فيو احمد خطاب 3 152 06-03-24, 07:49 PM
آخر رد: احمد خطاب
  حذف الاسطر الفارغه من الداتا جريد فيو اليوم السابع 3 2,357 03-03-24, 12:57 AM
آخر رد: مصمم هاوي
  [VB.NET] مساعدة فى كود فاتورة اللكترونية asdfar1977 2 194 02-03-24, 02:00 AM
آخر رد: asdfar1977
  مساعدة فى كود فاتورة الكترونية asdfar1977 0 80 29-02-24, 07:14 PM
آخر رد: asdfar1977
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 223 25-02-24, 11:26 PM
آخر رد: heem1986
  [VB.NET] حل مشكلة الاتصال بقواعد البيانات access loay775 2 158 25-02-24, 06:29 AM
آخر رد: loay775
  كيفية تنفيذ امر عند التعليم على checkbox بالداتا جريد فيو heem1986 2 158 21-02-24, 01:37 AM
آخر رد: heem1986
  [VB.NET] البحث باستخدام CheckedListBox لتكون نتيجة التحديد شرط لجملة الاستعلام ahmedramzyaish 0 116 19-02-24, 03:44 AM
آخر رد: ahmedramzyaish

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم