(27-12-16, 05:27 PM)مساعدة كتب : [ -> ]السلام عليكم
جرب التعديل التالي في المرفق الذي بداية الموضوع
فهو لا يتأثر بتنسيق النظام
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
dt.Clear()
da = New OleDbDataAdapter("select * from جدول1 where تاريخ between @d1 and @d2 ", cn)
da.SelectCommand.Parameters.AddWithValue("@d1", DateTimePicker1.Value.Date)
da.SelectCommand.Parameters.AddWithValue("@d2", DateTimePicker2.Value.Date)
da.Fill(dt)
Me.DataGridView1.DataSource = dt
End Sub
نعم اخى الفاضل هو كود بسيط جدا و قام بالمطلوب انا اضفت كومبوبوكس جديد لبحث عن اسم عميل ( ناتج بحث عميل بين تاريخين ) ممكن تضيف هذا السطر و شكرا جزيلا لك و لكل المشاركين
لم أجد كومبوبوكس في المشروع لكن اعتمد نفس الطريقة مع البارامترات مع ما تفضل به أستاذ محمود بكرى إذا كان اسم الجدول او العمود يوجد فيه مسافة
فإذا كان يوجد مسافة فأمامك حلين
الأول أن تعدل الاسم في قاعدة البيانات وتستبدل المسابقة بالخط السفلي _
الثاني أن تضع الاسم بين أقواس [ ] تريد الوضع كما هو بالمسافة
وهذا مثال
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
dt.Clear()
da = New OleDbDataAdapter("SELECT * FROM [جدول1] WHERE [اسم العميل] = @cn AND [تاريخ] BETWEEN @dt1 AND @dt2 ", cn)
da.SelectCommand.Parameters.AddWithValue("@cn", ComboBox1.Text)
da.SelectCommand.Parameters.AddWithValue("@dt1", DateTimePicker1.Value.Date)
da.SelectCommand.Parameters.AddWithValue("@dt2", DateTimePicker2.Value.Date)
da.Fill(dt)
Me.DataGridView1.DataSource = dt
End Sub
كما تلاحظ كل الاسماء وضعتها بين اقواس احتياطات سواء بها مسافات أم لا وأيضا كما تلاحظ كلمات SQL جعلتها بالأحرف الكبير ومثل ما تلاحظ أوضح عند النظر للكود
(27-12-16, 06:08 PM)مساعدة كتب : [ -> ]لم أجد كومبوبوكس في المشروع لكن اعتمد نفس الطريقة مع البارامترات مع ما تفضل به أستاذ محمود بكرى إذا كان اسم الجدول او العمود يوجد فيه مسافة
فإذا كان يوجد مسافة فأمامك حلين
الأول أن تعدل الاسم في قاعدة البيانات وتستبدل المسابقة بالخط السفلي _
الثاني أن تضع الاسم بين أقواس [ ] تريد الوضع كما هو بالمسافة
وهذا مثال
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
dt.Clear()
da = New OleDbDataAdapter("SELECT * FROM [جدول1] WHERE [اسم العميل] = @cn AND [تاريخ] BETWEEN @dt1 AND @dt2 ", cn)
da.SelectCommand.Parameters.AddWithValue("@dt1", DateTimePicker1.Value.Date)
da.SelectCommand.Parameters.AddWithValue("@dt2", DateTimePicker2.Value.Date)
da.SelectCommand.Parameters.AddWithValue("@cn", ComboBox1.Text)
da.Fill(dt)
Me.DataGridView1.DataSource = dt
End Sub
كما تلاحظ كل الاسماء وضعتها بين اقواس احتياطات سواء بها مسافات أم لا وأيضا كما تلاحظ كلمات SQL جعلتها بالأحرف الكبير ومثل ما تلاحظ أوضح عند النظر للكود
اخى وضعط لك مثال للتعديل علية فى المرفقات
تفضل التعديل
لم تقم بعمل dt.Clear كما في الكود السابق لهذا قد لا ترى تغييرات في النتيجة
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
dt.Clear()
da = New OleDbDataAdapter("SELECT * FROM [جدول1] WHERE ([اسم_العميل] = @cn) AND ([تاريخ] BETWEEN @dt1 AND @dt2) ", cn)
da.SelectCommand.Parameters.AddWithValue("@cn", ComboBox1.Text)
da.SelectCommand.Parameters.AddWithValue("@dt1", DateTimePicker1.Value.Date)
da.SelectCommand.Parameters.AddWithValue("@dt2", DateTimePicker2.Value.Date)
da.Fill(dt)
Me.DataGridView1.DataSource = dt
End Sub
الخطأ كان في ترتيب البارامترات يجب أن تتوافق مع مكانها في نص الاستعلام، أعتذر
تم تعديل الخطأ في المشاركة السابقة في ترتيب البارامترات
ملاحظة: جميع مشاريعك لم تعمل لدي لاختلاف الاصدار ولكن اعتمدت على النظر في الكود بعد سحبه لمشروع شكلي في الفجوال فقط، فالخطأ وارد،
(27-12-16, 07:30 PM)مساعدة كتب : [ -> ]تفضل التعديل
لم تقم بعمل dt.Clear كما في الكود السابق لهذا قد لا ترى تغييرات في النتيجة
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
dt.Clear()
da = New OleDbDataAdapter("SELECT * FROM [جدول1] WHERE ([اسم_العميل] = @cn) AND ([تاريخ] BETWEEN @dt1 AND @dt2) ", cn)
da.SelectCommand.Parameters.AddWithValue("@cn", ComboBox1.Text)
da.SelectCommand.Parameters.AddWithValue("@dt1", DateTimePicker1.Value.Date)
da.SelectCommand.Parameters.AddWithValue("@dt2", DateTimePicker2.Value.Date)
da.Fill(dt)
Me.DataGridView1.DataSource = dt
End Sub
الخطأ كان في ترتيب البارامترات يجب أن تتوافق مع مكانها في نص الاستعلام، أعتذر
تم تعديل الخطأ في المشاركة السابقة في ترتيب البارامترات
ملاحظة: جميع مشاريعك لم تعمل لدي لاختلاف الاصدار ولكن اعتمدت على النظر في الكود بعد سحبه لمشروع شكلي في الفجوال فقط، فالخطأ وارد،
اخى الفاضل انت مشكور على مجهودك و جزاكم الله خيرا الكود يعمل جيدا .
و 50 % من فكرتي تفضلتم بمساعدتى لاتمامها مشكور اخى و مشكور جميع الاساتذة الكرام على مجهوداتهم .
فى عرض البيانات على تقرير كريستال ريبورت انا اعتمد على استدعاء البيانات من خلال الداتا ست و للاسف هذه الطريقة و جميع طرق المشاركة للاساتذا الافاضل ليس لها علاقة بالداتا ست .
فامامنا طريقين
1- اما ان نعتمد على الداتا سيت فى البحث و فى حالة استدعاء البيانات على التقرير سوف يتم رفع ما ظهر على الداتا جريد فيو
2 - او طريقة اخرى لا اعلمها لعرض بيانات الداتا جريد فيو على كريستال ريبورت .
و انا افضل الطريقة الاولى لانى تعودة على استخدام التقارير و عرضها من خلال الداتا ست .
فرجاء لو لديك طريقة للبحث عن عميل محدد بين تاريخين داخل داتا ست فقد اتممت جميلك اخى
مشكورين اخوتى
تفضل هذه المحاولة
لاحظت انك تعتمد على الاستعلام (جدول1_استعلام)
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim query As IEnumerable(Of adxDataSet.جدول1_استعلامRow) =
AdxDataSet.جدول1_استعلام.
Where(Function(x As adxDataSet.جدول1_استعلامRow) x.اسم_العميل.Equals(ComboBox1.Text) And
x.تاريخ >= DateTimePicker1.Value.Date And x.تاريخ <= DateTimePicker2.Value.Date)
If query.Count > 0 Then
Me.DataGridView1.DataSource = query.CopyToDataTable
End If
End Sub
بالنسبة للتقارير كل ما عليك ربط ناتج الاستعلام query بالتقرير مثل ما تم ربطه هنا مع الداتاجريدفيو
(27-12-16, 10:54 PM)مساعدة كتب : [ -> ]تفضل هذه المحاولة
لاحظت انك تعتمد على الاستعلام (جدول1_استعلام)
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim query As IEnumerable(Of adxDataSet.جدول1_استعلامRow) =
AdxDataSet.جدول1_استعلام.
Where(Function(x As adxDataSet.جدول1_استعلامRow) x.اسم_العميل.Equals(ComboBox1.Text) And
x.تاريخ >= DateTimePicker1.Value.Date And x.تاريخ <= DateTimePicker2.Value.Date)
If query.Count > 0 Then
Me.DataGridView1.DataSource = query.CopyToDataTable
End If
End Sub
بالنسبة للتقارير كل ما عليك ربط ناتج الاستعلام query بالتقرير مثل ما تم ربطه هنا مع الداتاجريدفيو
اخى الفاضل الكود يعمل و بسم الله ما شاء الله هذه المشاركة بها اكثر من طريقة للبحث بين تاريخين ..
انا استخدمة هذا الكود لعرض التقرير ولكن يرفع البيانات بالكامل الفرز يتم على داتا جريد فيو ولا يتم على التقرير
Dim report As New CrystalReport1
report.SetDataSource(AdxDataSet)
Form2.CrystalReportViewer1.ReportSource = report
Form2.Show()
حسنا، كما أخبرتك ان تربط ناتج اللاستعلام بالتقرير
نفس الكود السابق ولكن جزء If سيكون هكذا
كود :
If query.Count > 0 Then
Dim report As New CrystalReport1
report.SetDataSource(query.CopyToDataTable)
Form2.CrystalReportViewer1.ReportSource = report
Form2.Show()
End If
(28-12-16, 02:15 AM)مساعدة كتب : [ -> ]حسنا، كما أخبرتك ان تربط ناتج اللاستعلام بالتقرير
نفس الكود السابق ولكن جزء If سيكون هكذا
كود :
If query.Count > 0 Then
Dim report As New CrystalReport1
report.SetDataSource(query.CopyToDataTable)
Form2.CrystalReportViewer1.ReportSource = report
Form2.Show()
End If
السلام عليكم اخى كود التقرير اعطانى هذا الخطاء انظر الصورة