تصفير القوائم عند بدء يوم جديد
اخوي أشرف ، واللي يرحم والديك ، عطنا معلومات كاملة علشان نقدر نساعدك في أسرع وقت ، ﻻحظ كم مشاركة بس نطلب ايضاحات :(
الصورة جدا صغيرة وما اقدر اشوف تفاصيلها ، رجاء ارفق صورة كبيرة. شكرا
جعفر
اخي أشرف ، الظاهر ان في عدم فهم في ملاحظاتي ، فاعتذر منك :(
الرجاء استخدام الكود التالي:
Private Sub Command82_Click()
On Error GoTo Err_Command82_Click
'make a Reference to Microsoft DAO x.xx Object Library
Me.Command33.Enabled = True
DoCmd.GoToRecord , , acNewRec
Dim Previous_Date As Integer
Dim myDB As Database
Dim rst As Recordset
'Get today's date
Me.INV_DATE = Date
'Do we have today's date in the table
'Previous_Date = DCount("*", "Invoice", "[INV_Date]=#" & Me.INV_DATE & "#")
Set myDB = CurrentDb
Set rst = myDB.OpenRecordset("Select COUNT(*) as Reccount From INVOICE Where INV_Date=#" & Me.INV_DATE & "#")
Previous_Date = rst!Reccount
If Previous_Date = 0 Then
'new date in the table
Me.NUM1 = 1
Else
'existing in the table
'Previous_Date = DMax("[NUM1]", "INVOICE", "[INV_Date]=#" & Me.INV_DATE & "#") + 1
'Me.NUM1 = Previous_Date
Previous_Date = rst!Reccount + 1
Me.NUM1 = Previous_Date
End If
rst.Close: Set rst = Nothing
Exit_Command82_Click:
Exit Sub
Err_Command82_Click:
If Err.Number = 3021 Then
'ignore, No Records
Resume Next
Else
MsgBox Err.Number & vbCrLf & Err.Description
Resume Exit_Command82_Click
End If
End Subاو الكود التالي:
Private Sub Command82_Click()
On Error GoTo Err_Command82_Click
'make a Reference to Microsoft DAO x.xx Object Library
Me.Command33.Enabled = True
DoCmd.GoToRecord , , acNewRec
Dim Previous_Date As Integer
Dim myDB As DAO.Database
Dim rst As DAO.Recordset
'Get today's date
Me.INV_DATE = Date
'Do we have today's date in the table
'Previous_Date = DCount("*", "Invoice", "[INV_Date]=#" & Me.INV_DATE & "#")
Set myDB = CurrentDb
Set rst = myDB.OpenRecordset("Select * From INVOICE Where INV_Date=#" & Me.INV_DATE & "#")
rst.MoveLast: rst.MoveFirst
Previous_Date = rst.RecordCount
If Previous_Date = 0 Then
'new date in the table
Me.NUM1 = 1
Else
'existing in the table
'Previous_Date = DMax("[NUM1]", "INVOICE", "[INV_Date]=#" & Me.INV_DATE & "#") + 1
'Me.NUM1 = Previous_Date
Previous_Date = rst.RecordCount + 1
Me.NUM1 = Previous_Date
End If
rst.Close: Set rst = Nothing
Exit_Command82_Click:
Exit Sub
Err_Command82_Click:
If Err.Number = 3021 Then
'ignore, No Records
Resume Next
Else
MsgBox Err.Number & vbCrLf & Err.Description
Resume Exit_Command82_Click
End If
End Subجعفر
السلام عليكم
اخي العزيز جعفر
تم تطبيق الكود لكن احصل على الخطا التالي
91
object variable or with block variable not set
يا ريت المساعدة و رحم الله والديك دنيا و اخرة
حيا الله اخوي اشرف :)
انا الليلة باستعمل الفانوس السحري اللي عندي ، ولما يطلع لي الجنّي بطلب منه يخبرني اي كود استعملته انت ، وكذلك يخبرني على اي سطر يجيك الخطأ.
:)
جعفر
و الله يا اخي جعفر
بعد ما اعرف شنو اقلك
الصورة و قد وضعتها بصيغة jpg
وواضح الخطا عند اي سطر
اذا كنت اطلعت على الصورة كان عرفت الخطا وين
و للتوضيح يظهر عند هذا السطر
Set rst = myDB.OpenRecordset("Select COUNT(*) as Reccount From INVOICE Where INV_Date=#" & Me.INV_DATE & "#")
اللي هو نفسه في الصورة الموضوعه اعلاه
فالامر لا يحناج فانوس علاء الدين
و انا شكر تعاونك
مع التقدير
حيا الله اخوي أشرف :)
انا ارفقت لك الكود مرة ثانية بعد ما عدلت عليه شوي ، لكنك الظاهر ما استعملته :( ، لهذا السبب الخطأ لا يزال يظهر لك :(
جزء من الكود اللي في الصورة هكذا:
'Dim myDB As adodb.Database Dim rst As adodb.Recordset
وانا عدلته الى:
Dim myDB As Database Dim rst As Recordset
فرجاء حذف الحدث اللي عندك في البرنامج ، وانسخ الحدث اعلاه بالكامل وجربه :) ، وانا تركت لك حدثين مختلفين ، فجرب كل واحد على حده واخبرني النتيجة :)
جعفر
وعليكم السلام :)
رجاء لا تغير شي في الكود ، وجرب المرفقين ، وان شاء الله اذا البرنامج اشتغل ، غير فيه كما تشاء :)
المرفقين يشتغلون عندي وما فيهم اي مشكلة :)
جعفر
اخي اشرف
انسى ردي السابق ، وجرب المرفق الان ،
المرفقات السابقة كلها تدور حول DAO ، بينما الاكسس adp يستعمل ADO ،
لهذا ، فالكود الان تغير قليلا ويستعمل ADO:
Private Sub Command82_Click()
On Error GoTo Err_Command82_Click
Me.Command33.Enabled = True
DoCmd.GoToRecord , , acNewRec
Dim Previous_Date As Integer
'Get today's date
Me.INV_DATE = Date
'Do we have today's date in the table
'Previous_Date = DCount("*", "Invoice", "[INV_Date]=#" & Me.INV_DATE & "#")
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "Select COUNT(*) as Reccount From INVOICE Where INV_Date=#" & Me.INV_DATE & "#", CurrentProject.Connection
'rst.MoveLast: rst.MoveFirst
Previous_Date = rst!Reccount
'Set rst = myDB.OpenRecordset("Select * From INVOICE Where INV_Date=#" & Me.INV_DATE & "#")
'rst.MoveLast: rst.MoveFirst
'Previous_Date = rst.RecordCount
If Previous_Date = 0 Then
'new date in the table
Me.NUM1 = 1
Else
'existing in the table
'Previous_Date = DMax("[NUM1]", "INVOICE", "[INV_Date]=#" & Me.INV_DATE & "#") + 1
'Me.NUM1 = Previous_Date
Previous_Date = Previous_Date + 1
Me.NUM1 = Previous_Date
End If
rst.Close: Set rst = Nothing
Exit_Command82_Click:
Exit Sub
Err_Command82_Click:
If Err.Number = 3021 Then
'ignore, No Records
Resume Next
Else
MsgBox Err.Number & vbCrLf & Err.Description
Resume Exit_Command82_Click
End If
End Subجعفر