حافظ التونسي قام بنشر منذ 6 ساعات قام بنشر منذ 6 ساعات السلام عليكم و رحمة الله و بركاته طلبت سابقا من يعينني في العداد للفواتير والتي يبدا من رقم واحد كل بداية سنة جديدة و مشكور جدا لمن تدخل و اعاني الان وجدت مشكلة التي تتمثل في ان العداد لما يصل الى رقم 2025000099 من المفروض في الفاتورة التي تاتي بعدها يصير 2025000100 لكن تخرج نافذة خطا سارفق صور حتى تتضح المشكلة لطلب المساعدة لحل هذا الاشكال و لكم الشكر Module numero date.doc
kkhalifa1960 قام بنشر منذ 4 ساعات قام بنشر منذ 4 ساعات (معدل) المشكلة واضحة تمامًا: الخطأ "Overflow" يحدث لأن الرقم 2025000100 يتجاوز الحد الأقصى لنوع البيانات Long في VBA، والذي هو: (Long∈[−2,147,483,648 إلى 2,147,483,647]) لكن الرقم الذي تحاول توليده هو عشرة أرقام، أي يتجاوز هذا الحد. ✅ الحل المقترح: استخدام Double بدلًا من Long غير نوع الإرجاع والمتغيرات من Long إلى Double لتسمح بالأرقام الأكبر: Public Function GenerateID(TableName As String, fieldName As String) As Double Dim currentYear As Integer Dim yearPrefix As String Dim maxID As Double Dim serialPart As Long currentYear = Year(Date) yearPrefix = CStr(currentYear) maxID = Nz(DMax(fieldName, TableName, fieldName & " LIKE '" & yearPrefix & "*'"), yearPrefix & "00") serialPart = CLng(Mid(CStr(maxID), Len(yearPrefix) + 1)) GenerateID = CDbl(yearPrefix & Format(serialPart + 1, "0000")) End Function ✨ ملاحظات إضافية: استخدمت Format(..., "0000") لضمان أن الجزء التسلسلي يبقى دائمًا بأربعة أرقام. تأكد أن الحقل في الجدول (fieldName) من نوع Double أو Text وليس Long. إذا كنت تستخدم هذا الرقم كمفتاح أساسي (Primary Key)، ففكر في استخدام Text بدلًا من رقم لتجنب مشاكل مستقبلية. هل تحب أن نضيف تحققًا إضافيًا لتفادي التكرار أو نربط هذا التوليد بحدث معين في النموذج؟ تم تعديل منذ 4 ساعات بواسطه kkhalifa1960
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان