الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تصفير القوائم عند بدء يوم جديد

بدأه ashraf_al_ani في 25 يوليو 2014 · 35 رد · 1,811 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اخواني و اخواتي 

لدي حقل في جدول اسمه num1  المطلوب من هذا الحقل هو ان ينعاد من (1) عند بدء يوم جديد و هكذا عند بدداية كل يوم يصبح 1 و يزداد 

لكن حديث مشكلة هو ان الحقل يبدأ من تسلسل غير منطقي

يوم يبدا 763

و يوم 905

 

يا ريت التعديل على الكود المرفق في البرنامج

و رحم الله والديكم دنيا و اخرة

و جعلها في ميزان حسناتكم في هذه الايام المباركة

 

تسلسل_الارقام.rar

#2
ashraf_al_ani كتب:

بسم الله الرحمن الرحيم

اخواني و اخواتي

لدي حقل في جدول اسمه num1 المطلوب من هذا الحقل هو ان ينعاد من (1) عند بدء يوم جديد و هكذا عند بدداية كل يوم يصبح 1 و يزداد

لكن حديث مشكلة هو ان الحقل يبدأ من تسلسل غير منطقي

يوم يبدا 763

و يوم 905

يا ريت التعديل على الكود المرفق في البرنامج

و رحم الله والديكم دنيا و اخرة

و جعلها في ميزان حسناتكم في هذه الايام المباركة

#3

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

يا ريت المساعدة ورحم الله والديكم دنيا واخرة

#4

السلام عليكم اخي العزيز اشرف

انا القيت نظرة على مشروعك واريد منك الالتفات الى كلامي جيدا

اولا حاول انشاء جدول اخر لتاريخ المعاملة

ثانيا يتم ربط هذا الجدول بجدول المعاملات اي هو جدولك الاساسي

ثالثا سوف يتم انشاء تسلسل اوتماتيكي لكل معاملات يوم معين

جدولك فيه خطأ ماهو؟

قبل يوم او يومين كنت اتحدث لاحد الاخوة الاعضاء عن التطبيع ؟

ماهو التطبيع ؟

التطبيع هو بناء قاعدة البيانات في رأسك وبعدها تطبق على الورق ومن ثم تطبق على الحاسوب

التطبيع هو بصورة رئيسية عدم تكرار البيانات

في جدولك كم مئة مرة مكرر تاريخ معين ؟

كم مرة مكرر فيها نفس الزبون .

راجع صياغة بناء مشروعك من جديد واهم شي الجداول

وحاول ايضا التقليل من الالوان الصاخبة

واسف ان اطلت عليك

#5

وعليكم السلام اخي عارف :)

 

تفضل هذا الكود ، والذي هو على حدث الضغط على زر "جديد" :

Private Sub Command82_Click()
On Error GoTo Err_cmd_left_Click


    Me.Command33.Enabled = True

    DoCmd.GoToRecord , , acNewRec
   
    '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 & "#")
       
    If Previous_Date = 0 Then
        'new date in the table
        Me.NUM1 = 1
    Else
        'existing in the table
        Me.NUM1 = DMax("[NUM1]", "INVOICE", "[INV_Date]=#" & Me.INV_DATE & "#") + 1
        
    End If
    
   
Exit_cmd_left_Click:
    Exit Sub

Err_cmd_left_Click:
    MsgBox "انت في آخر قيد"
    Resume Exit_cmd_left_Click
End Sub

ولوسمحت ان تحذف السطرين التاليين من الكود :

Me.NUM1.DefaultValue = Nz(DMax("[NUM1]", "INVOICE", "day([INV_DATE])=" & Day(Forms!sale_frm_CHECK_SAFARI!INV_DATE)), 0) + 1

جعفر

1
#6

بسم الله الرحمن الرحيم

 

اخوي jjafferr

رحم الله والديك و اسف على التاخير

الكود عمل معي 100 % مضبوط و على المرام و انا شاكرا جدا لمجهودك

و اسف لتاخري على الرد

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

و قد اعترض على

previous_Date = DCount("*", "invoice", "[inv_date]=#" & Me.INV_DATE & "#")

يا ريت اذا تكمل جميلك و تعدل على الكود ليعمل في الاكسس بروجيكت

و انا ممنون و شاكر الك

و رحم الله والديك دنيا و اخرة

#7

وعليكم السلام :)

اعمل شيئين:

1. في الحدث اعلاه ادخل هذا السطر:

Dim previous_Date as string

2.

VBA 》MENU BAR

Tools 》 References

ثم اختر

Microsoft DAO3.6 Object Reference

سواء 3.6 او اقل منه سيؤدي الغرض :)

جعفر

#8

عزيزي السلام عليكم

جربت الملاحظتين اعلاه

لكن للاسف نفس المشكلة كما في الصورة التالية حيث رقم الerror

يا ريت المساعدة و رحم الله والديكم دنيا و اخرة

 

post-96316-0-66155000-1407059044_thumb.j

#9

اسف الصورة صغيرة

الصورة اعلاه اوضح

 

post-96316-0-84967800-1407059477_thumb.j

#10

متاسف لكن الصورة التالية اكبر و اوضح للمشكلة التي تظهر لي

 

post-96316-0-69074900-1407059872_thumb.j

#11

أخي أشرف

شو BE اللي تستعمله ، Access او SQL Server

جعغر

#12

اخى العزيز اشرف وجعفر تمت تجربة القاعدة تعمل بكفاءة جزاك الله خيرا اخى جعفر

#13

be اللي استعمله

هو sql serer

و احصل على الerror الذي يظهر في الصورة التي وضعتها

و عند عمل debug

يؤشر على

Previous_Date = DCount("*", "Invoice", "[iNV_Date]=#" & Me.INV_DATE & "#")

على الرغم غيرت

previous_date الى string

و تاكدت من وجود

Microsoft DAO3.6 Object library

يا ريت المساعدة و رحم الله والديكم دنيا و اخرة

#14

اخي اشرف

 

شكرا على المعلومة ، ورجاء كلما اشتغلت على برنامجك هذا وكان عندك سؤال فيه ، فرجاء توضح انك تستخدم SQL Server كجداول للـ Back End ،

وذلك لأن هناك بعض اوامر الاكسس اللي ما تشتغل على SQL Server  ، منها Dcount , DSum , Dlookup ....

 

سأعمل لك حل آخر إن شاء الله تعالى :)

 

جعفر

#15

رحم الله والديك

و انا ساكون بانتظار حلولك الرائعة باحر من الجمر يا اخي

تحياتي

#16

لوسمحت تحذف كود الحدث السابق واستبدله بهذا ، مع مراعاة انك تكتب قيمة myDB اللي هي اسم قاعدة بياناتك اذا كان اسمها غير:

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

جعفر

#17

السلام عليكم

اشكرك اخي على الرد السريع و اسف لاني اثقلت عليك

اسم قاعدة البيانات في sql server هي ashraf

وكيف استطيع ربط الكود مع اسم قاعدة البيانات

يا ريت المساعدة و رحم الله والديكم دنيا و اخرة

#18

آسف ما عندي فكرة :(

جرب الكود مثل ما هو ، يمكن ما يحتاج تعمل شئ آخر.

جعغر

#19

ويمكنك انك تجرب هذا الكود كذلك:

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 adodb.Database
    Dim rst As adodb.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

جعفر

#20

السلام عليكم قد جربت الكود الجديد

لكن احصل على الرسالة التالية

 

 

compile error:

user-defined type not defind

 

و يعترض عند

Dim myDB As ADODB.Database

 

يا ريت المساعدة و رحم الله والديك دنيا و اخرة

#21

آسف يا أشرف ، كان ﻻزم أحذف

ADODB والنقطة اللي وراها :(

و جرب الكود اللي قبله كذلك :)

جعفر

#22

للاسف

اخوي جعفر

المشكلة لا تزال مستمرة و ما اعرف شنو الحل

يا ريت خبرتك

و لو زحمتك

لكي نحل هذه المعضلة

و رحم الله والديك دنيا و اخرة

#23

أي مشكلة فيهم اللي ﻻ تزال موجودة ؟

#24

نفس رسالة الخطا التي تظهر

و استاذ جعفر الفاضل

جربت هذا الكود

=DMax("num1","invoice")+1

الذي يكتب في الdefault value للحقل

و قد عمل معي الا انه لا يتصفر و يبدا من واحد عند بدا يوم جديد

هل بالامكان الاستفادة منه؟؟؟

 

يا ريت المساعدة و رحم الله والديك دنيا و اخرة

#25

الله ان شاء الله يطول في عمرك اخي اشرف ، اي رسالة خطأ ، لوسمحت اكتبها وعلى اي سطر ؟

لانه في الموضوع هذا اكثر من رسالة خطأ :(

 

واترك DMax ، لانه مجرد جزء من الموضوع ، لما الاصل يُحل ، فالجزء الآخر سيُحل ايضاً.

 

جعفر

مواضيع مشابهة