السلام علبكم
الرجاء كود استعلام بين وقتين ويعرض على الداتا جريد
السلام علبكم
الرجاء كود استعلام بين وقتين ويعرض على الداتا جريد
أرجو التوضيح أكثر
لم أفهم المطلوب
وحبذا لو كان مع أمثلة للمطلوب بالذات
وشكرا
Try
If DataSet1.Tables("P_N").Compute("count(Date)", "Date >= '" & DateTimePicker1.Value.ToShortDateString & "' and Date <= '" & DateTimePicker2.Value.ToShortDateString & "'").ToString > 0 Then
'اول شي نبحث بهاذ الكود عن قيمة مطابقة في قاعدة البيانات
'في حال وجد قيمة اكبر من صفر يتم
'يتم الانتقال الى الفلترة لكي يظهرها في داتا جريد
'والسبب في هذه الحركة حتى لا تتم الفلترة على الفاضي في حال لم يتم العثور على نتائج
'وهذه العملية مفيدة جدا لما بكون عندك سجلات كبيةر لان الغاء الفلترة في السجلات الكبيرة بياخذ وقت شوي
'لذلك هذا هو الحل الانسب
BindingSource1.Filter = "Date >= '" & DateTimePicker1.Value.ToShortDateString & "' and Date <= '" & DateTimePicker2.Value.ToShortDateString & "'"
Else
MsgBox("لم يتم العثور على نتائج", MsgBoxStyle.Question, "P_TARGET")
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
هذ هو الكود المستخدم للبحث بين تاريخين فى عمود date
المطلوب نفس الكود لكن للبحث فى عمود Time وبين وقتين مث بين الساعة 07:00:00 وبين 13:30:00
طبعا القيمة سوف يتم تحديدها من2 تيكست بوكس
ارجو ان يكون السؤال قد تم ايضاحه
ACCESS لا يدعم حقل من نوع TIME. يدعم فقط DATETIME ولا تنخدع بالذي تراه فهذا فقط للاظهار اما القيمة المخزنة فهي جميعها من نوع DATETIME لذلك لا يمكنك البحث عن ساعة بدون تاريخ
الحقول في الجدول كلها من نوع DATETIME . انظر الصور
شكرا استاذ سمير ع التواصل
لكنك لم تعطنى الطريق الى الحل ما هى الصيغة التى ابحث بها بين الساعات لكى احسب مثلا اجمالى الوارد من الساعة 7 حتى الخامسه
اكيد هناك صيغة لذلك ............
هناك اكثر من 5 طرق للتعامل مع datetime وذلك اعتمادا على كيفية جلبك للمعلومات وماذا تستعمل. ارى هنا انك تستعمل bindingsource
ملاحظة : لقد استعملت الحقول المستعملة في جدولي الذى ارفقته في الصورة السابقة. غيره بما يناسبك
Dim date_to_search As DateTime = New Datetime(2013,09,02,00,00,00,00)
Dim dtp1_time as TimeSpan = New TimeSpan(dtp1.Value.Hour,dtp1.Value.Minute,dtp1.Value.Second)
Dim dtp2_time as TimeSpan = New TimeSpan(dtp2.Value.Hour,dtp2.Value.Minute,dtp2.Value.Second)
Dim datetime1 as DateTime = date_to_search.Add(dtp1_time)
Dim datetime2 As DateTime = date_to_search.Add(dtp2_time)
Dim filter_expression = "check_datetime >= " + Chr(39) + datetime1.ToString + Chr(39) + " AND check_datetime <= " + Chr(39) + datetime2.ToString + Chr(39)
bs_att.Filter = filter_expressionتم تعديل هذه المشاركة بواسطة samir ibrahim في 30 سبتمبر 2013 في 22:10
استاذ سمير شعلة المنتدى الف شكر وجارى التجربة
ولا ادرى لماذا لم تكون مشرف فى المنتدى حتى الان وانت اكثر الناس تواصلا
لك تحياتى وجزاك الله خيرا
شكرا عال الكلام الطيب.
المنتدي جميل بالموجدين. والشباب المشرفين ما قصروا
خلي المناصب العليا لغيرنا. شو بدى بوجعة الراس ;)
استاذى الاستاذ سمير
اليك مرفق يبحث بين تاريخين وقد اعدتته كما شرحت حضرتك للبحث بين زمنين ولكنى لم اوفق
ارجو التعديل على المرفق ومعرفة الغلط التى ارتكبنه فى صياغة الكود
بارك الله لنا فيكمبحث بين زمنين.rar
لقد نبهتك ولم تنتبه :)
الاكسس لا يحفظ الوقت لوحد. بل يحفظ تاريخ+وقت
عندما تدخل وقت فقط فان الاكسس يضيف التاريخ الافتراضي وهو 30/12/1899
اذا اردت استعماله بهذه الطريقة فانك ستضطر لاستعمال حقلان للتاكد من وجود الوقت بين تاريخين (حقل التاريخ وحقل الوقت)
لقد وضعت شرح بالمكان الذي عملت فيه اخطاء
Imports System
Imports System.Data.OleDb
Imports System.Data.OleDb.OleDbCommand
Imports System.Data
Public Class Form1
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source =data.mdb")
Dim da As New OleDbDataAdapter
Dim dt As New DataTable
Dim bs As New BindingSource ' هكذا تعرف وليس ك sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
da = New OleDbDataAdapter("select * from Table1 ", cn)
da.Fill(dt)
bs.DataSource = dt
Me.DataGridView1.DataSource = bs
Me.DataGridView1.Columns(3).DefaultCellStyle.Format = "hh:mm:ss tt" ' show only the time
Me.DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells) ' display the grid in
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As Date = DateTimePicker1.Value
Dim y As Date = DateTimePicker2.Value
dt.Clear()
da = New OleDbDataAdapter("select * from Table1 where datt betwean " & x & " and " & y & "", cn)
da.Fill(dt)
Me.DataGridView1.DataSource = dt
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim date_to_search As DateTime = New DateTime(1899, 12, 30, 0, 0, 0) ' create the default access datetime 30/12/1899
Dim dtp1_time As TimeSpan = New TimeSpan(dtp1.Value.Hour, dtp1.Value.Minute, dtp1.Value.Second)
Dim dtp2_time As TimeSpan = New TimeSpan(dtp2.Value.Hour, dtp2.Value.Minute, dtp2.Value.Second)
Dim datetime1 As DateTime = date_to_search.Add(dtp1_time)
Dim datetime2 As DateTime = date_to_search.Add(dtp2_time)
' filter the data by date only
Dim date_filter = " datt = " + Chr(39) + dtp3.Value.Date.ToString + Chr(39)
' Filter the data by time only
Dim time_filter = "Time >= " + Chr(39) + datetime1.ToString + Chr(39) + " AND Time <= " + Chr(39) + datetime2.ToString + Chr(39)
' combine filter date+time
Dim filter_expression = date_filter + " AND " + time_filter
bs.Filter = filter_expression
End Sub
Private Sub Button3_Click( sender As Object, e As EventArgs) Handles Button3.Click
bs.Filter = ""
End Sub
End Classتم تعديل هذه المشاركة بواسطة samir ibrahim في 3 أكتوبر 2013 في 00:35
الله عليك استاذ سمير
استاذ ورئيس قسم والله جزاك الله خير
وارجو ان تقبلنى تلميذ من تلاميذك
تحياتى
استاذ سمير
فى استفسار
ليه لما بنقل الكود لمشروع اخر فى فورم اخر بنفس قاعدة البيانات
تظهر مشكلة فى كود bs.Filter = filter_expression
expression باالتحديد
مع العلم انى اضفت كل الادوات الازمة واخذت الاكواد كاملة
اهناك شى لابد من اضافته
مع العلم ان الملف الذى ارفقته حضرتك يعمل جيد بدون مشاكل