المشاركات : 240
المواضيع 23
الإنتساب : Mar 2014
السمعة :
20
الشكر: 831
تم شكره 299 مرات في 151 مشاركات
30-08-18, 08:02 PM
(آخر تعديل لهذه المشاركة : 30-08-18, 08:03 PM {2} بواسطة essawq.)
السلام عليكم ورحمة الله وبركاتة
اعمل على برنامج شخصي من اجل تعلم البرمجة
عندي فورم بحث من اجل التعديل
يحتوي على تكست بكس عدد 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
فضلا لا امرا اين الخطا
بارك الله فيكم
المشاركات : 3,815
المواضيع 36
الإنتساب : Mar 2014
السمعة :
724
الشكر: 7238
تم شكره 6709 مرات في 3265 مشاركات
وعليكم السلام ورحمة الله وبركاته
بخصوص البحث بالتاريخ اذا كان هو ما يحدث به المشكلة
فكل ما عليك استبدال هذا السطر
كود :
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 ان يكون التاريخ المدخل به
يوم شهر سنة أو سنة شهر يوم
أو شهر سنة وكذلك سنة شهر
تحياتى لك
وتمنياتى لك التوفيق
المشاركات : 240
المواضيع 23
الإنتساب : Mar 2014
السمعة :
20
الشكر: 831
تم شكره 299 مرات في 151 مشاركات
30-08-18, 10:53 PM
(آخر تعديل لهذه المشاركة : 30-08-18, 11:05 PM {2} بواسطة essawq.)
(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 ان يكون التاريخ المدخل به
يوم شهر سنة أو سنة شهر يوم
أو شهر سنة وكذلك سنة شهر
تحياتى لك
وتمنياتى لك التوفيق
مشكور اخي لردك
تم استبدال الكود واعطى الخطا التالي
المشكلة عند البحث بالتاريخ او اسم الشركة يظهر النتائج بالتكست
ولكن بالداتا جريد فيو لا يصفي النتائج
تحياتي لك
المشاركات : 3,815
المواضيع 36
الإنتساب : Mar 2014
السمعة :
724
الشكر: 7238
تم شكره 6709 مرات في 3265 مشاركات
30-08-18, 11:52 PM
(آخر تعديل لهذه المشاركة : 31-08-18, 12:20 AM {2} بواسطة elgokr.)
بخصوص تلك الخطاء قم بحذ علامتى #
من سطر الاستعلام وقم بتجربة الامر
واتمنى ان تكون متاكد بان نوع العمود
بقاعدة البيانات هو تاريخ وليس نص
تحياتى لك
وتمنياتى لك التوفيق
(31-08-18, 12:11 AM)عابر سبيل 2 كتب : (30-08-18, 11:52 PM)elgokr كتب : بخصوص تلك الخطاء قم بحذ علامتى #
من سطر الاستعلام وقم بتجربة الامر
واتمنى ان تكون متاكد بان نوع العمود
بقاعدة البيانات هو تاريخ وليس نص
تحياتى لك
وتمنياتى لك التوفيق
أعتقد أنه يجب استبدال علامة # بعلامة '
مع أنه الأفضل تمرير التاريخ باستخدام الباراميتر
لا بالعكس اخى عند البحث فى عمود من نوع تاريخ
يجب ان تمرر القيمة اما بين ## مثل
كود :
#" & TextBox1.Text & "#
او بدون العلامتي ## وتكون فقط
كود :
= CDate(TextBox1.Text)
دا اذا كان العمود من نوع تاريخ ووقت
لان علامتي ## هى نفسها جملة CDate
وسهو منى وضعتهم الاثنين معاً
والفكرة من كلاهما بحيث اى كانت الطريقة التى ستدخل بها التاريخ
هو سيقوم بمعالجتها لتحويلها من نوع تاريخ ووقت حسب الحالة
وبخصوص علامتي ' ' وهى تعنى ان القيمة المدخلة من نوع String
كانك تماما بتكتب
لكل علامة لها دور واختصار فى قواعد البيانات
تحياتى لك
وتمنياتى لك التوفيق
المشاركات : 50
المواضيع 1
الإنتساب : Aug 2018
السمعة :
20
الشكر: 170
تم شكره 209 مرات في 93 مشاركات
(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
كانك تماما بتكتب
لكل علامة لها دور واختصار فى قواعد البيانات
تحياتى لك
وتمنياتى لك التوفيق
أنا أتكلم عن قاعدة بيانات 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))
المشاركات : 108
المواضيع 9
الإنتساب : Jul 2018
السمعة :
20
الشكر: 815
تم شكره 246 مرات في 96 مشاركات
31-08-18, 01:16 AM
(آخر تعديل لهذه المشاركة : 31-08-18, 01:18 AM {2} بواسطة 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
كانك تماما بتكتب
لكل علامة لها دور واختصار فى قواعد البيانات
تحياتى لك
وتمنياتى لك التوفيق
السلام عليكم
بالنسبة للتاريخ
إذا كان الحقل نوعه "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
كانك تماما بتكتب
لكل علامة لها دور واختصار فى قواعد البيانات
تحياتى لك
وتمنياتى لك التوفيق
السلام عليكم
بالنسبة للتاريخ
إذا كان الحقل نوعه "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)
المشاركات : 3,815
المواضيع 36
الإنتساب : Mar 2014
السمعة :
724
الشكر: 7238
تم شكره 6709 مرات في 3265 مشاركات
(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
والعكس ان يكون السنة قبل الشهر او اليوم بعد الشهر ... الخ
وسيسبب ايضاً مشكلة اذا كان مستخدم لدى جهازه هجري والاخر ميلادى
فشخص يقوم بادخال ميلادى والاخر هجري كمثال
جيجب ان يتم بناء القاعدة على اسس حتى تتجنب المشاكل مستقبلياً
تحياتى لك
وتمنياتى لك التوفيق
المشاركات : 240
المواضيع 23
الإنتساب : Mar 2014
السمعة :
20
الشكر: 831
تم شكره 299 مرات في 151 مشاركات
31-08-18, 03:28 AM
(آخر تعديل لهذه المشاركة : 31-08-18, 03:51 AM {2} بواسطة essawq.)
(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
كانك تماما بتكتب
لكل علامة لها دور واختصار فى قواعد البيانات
تحياتى لك
وتمنياتى لك التوفيق
نوع العمود بقاعدة البيانات هو تاريخ
حذفت علامات التنصيص الكود تمااااام
هذا الكود
سلمت يداك
كود :
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
كانك تماما بتكتب
لكل علامة لها دور واختصار فى قواعد البيانات
تحياتى لك
وتمنياتى لك التوفيق
أنا أتكلم عن قاعدة بيانات 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
كانك تماما بتكتب
لكل علامة لها دور واختصار فى قواعد البيانات
تحياتى لك
وتمنياتى لك التوفيق
السلام عليكم
بالنسبة للتاريخ
إذا كان الحقل نوعه "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
كانك تماما بتكتب
لكل علامة لها دور واختصار فى قواعد البيانات
تحياتى لك
وتمنياتى لك التوفيق
السلام عليكم
بالنسبة للتاريخ
إذا كان الحقل نوعه "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
تحياتي لكم جميعا
المشاركات : 240
المواضيع 23
الإنتساب : Mar 2014
السمعة :
20
الشكر: 831
تم شكره 299 مرات في 151 مشاركات
اشكركم جميعا
تم حل مشكلة الجمع بعد البحث
المشكلة يجب كتابة دبل وليس انتجر
هذا الكود
كود :
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")
تحياتي لكم
المشاركات : 3,815
المواضيع 36
الإنتساب : Mar 2014
السمعة :
724
الشكر: 7238
تم شكره 6709 مرات في 3265 مشاركات
(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
اتمنى ان تكون الصورة وضحت لكيفية الاستخدام
تحياتى لك
وتمنياتى لك التوفيق
|