السلام عليكم ورحمة الله وبركاته
عند كتابة جملة إضافة للـSQL
والترقم تلقائي لرقم الفاتورة
كيف يمكنني الحصول أومعرفة الرقم مع إضافة السجل
تحياتي
السلام عليكم ورحمة الله وبركاته
عند كتابة جملة إضافة للـSQL
والترقم تلقائي لرقم الفاتورة
كيف يمكنني الحصول أومعرفة الرقم مع إضافة السجل
تحياتي
<< CLICK TO START>>

ليس أن تجد حلا بل أن تجد الافضل
أن تصـــنع الخـيال هذا هوا الأفضل</span>
قومى بانشاء Trigger لاحضار رقم السجل الحالى
Create Trigger RowNumber
/*Replace MyTable With Your Table Name*/ on MyTable
for Insert
as select ident_current('MyTable')
goايضاً يمكنك مراجعة نفس الفكره على هذا الرابط
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
السلام عليكم ورحمه الله وبركاته
بالنسبه للكود انا استخدم قاعده البيانات اكسس
<_< لا اعتقد انه يمكن لي كتابه Trigger فجمل SQL الخاصه بها
اما أخر سجل فلا ينفع لأن البرنامج يعمل على شبكة وحدوث الخطأ في هذه الحال وارد
فيجب احضار رقم السجل الحالي
أرجوا المساعدة
وشكرا أستاذي طارق إبراهيم
<< CLICK TO START>>

ليس أن تجد حلا بل أن تجد الافضل
أن تصـــنع الخـيال هذا هوا الأفضل</span>
الموضوع يخص منتدى الاكسيس
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
بل جمل SQL فانا استخدم V.6 كتطبيق
ولكن ان كنت ترى هذا فأرجوا نقل الموضوع
تحياتي
تم تعديل هذه المشاركة بواسطة POWER _GIRL في 8 أبريل 2005 في 01:32
<< CLICK TO START>>

ليس أن تجد حلا بل أن تجد الافضل
أن تصـــنع الخـيال هذا هوا الأفضل</span>
لمعرفة آخر رقم
;SELECT Max(Nvc.NvcNo) AS LastNumber FROM Nvc
لمعرفة الرقم الذي يليه بدون أن يتم تسجيله بعد
;SELECT Max(Nvc.NvcNo)+1 AS NextLast FROM Nvc
شكرا على الرد
ولكن البرنامج شغال على شبكة وعدد المحاسبين 4
يعني ممكن يقع خطأ بأن يأخذ اكبر قيمه + 1 ويكون المحاسب الاخر فنفس اللحظه قام بأخذ نفس الرقم الجديد
احتمال الخطأ وارد
ما رأيك!
<< CLICK TO START>>

ليس أن تجد حلا بل أن تجد الافضل
أن تصـــنع الخـيال هذا هوا الأفضل</span>
كلامك صحيح و دقيق ، و لكن هذه مسؤولية مدير قاعدة البيانات الذي يتوجب عليه وضع استراتيجية إغلاق و تحرير السجلات ، على العموم يمكنك استخدام إمكانيات أكسس في هذا المجال
في قائمة Tools > Options > Advanced
هناك مجموعة خيارات Default Record Locking و هي أمر لا أحبذ استخدامه لأنه سيعم جميع الكائنات من جداول و نماذج و تقارير و استعلامات بدون استثناء و لكن الأكثر إفادة تلك الخيارات المجاورة
:(Refresh Interval (sec
وهي عبارة عن توقيت دورات التحديث التي ينبغي على أكسس القيام بها لفك إغلاق الجداول و السجلات (بالثانية)
Number of Update Retries
و هي عبارة عن عدد المحاولات التي ينبغي لأكسس أن يعيدها لفك الإغلاق عندما تتعثر محاولاته خاصة ضد الإغلاق من All Records و هي أكثرها صرامة
و هي بالمناسبة ميزة موجودة في خصائص الجداول و التقارير و النماذج و الاستعلامات و يمكن التحكم يها برمجياً أيضاً
على سبيل المثال Forms("Invoices").RecordLocks = 0
حيث
صفر = فك الإغلاق و تحرير الجدول أو السجلات
1 = إغلاق جميع السجلات
2 = إغلاق السجلات الواقعة تحت التعديل فقط
ففي الحالة التي حاولت فهمها منك يفضل إغلاق جميع السجلات أي المستوى 1 فحتى الوحدات النمطية تعجز عن تحريره
لذلك يمكنك استخدامه داخل أمر ما بحيث يكون الإغلاق ثم فتح الإستعلام و القيام بالتعديلات المطلوبة من حذف أو إضافة أو تعديل ثم تحرير السجلات و فك الإغلاق .
و إذا أردت الخروج من هذه المتاهة يمكنك اللجوء إلى أساليب أخرى كأن تجعلي في النموذج المعني مربع نص يكون مصدر بياناته كالتالي
(()Control Source = DMax("[invoiceNumber]", "Invoices","[invoiceDate]" <=Now
بهذه الطريقة ستحصلين على قيمة في حقل رقم الفاتورة من جدول الفواتير و الأحدث زمنياً ، فإذا أضفت ماكرو أو كود Requery على مربع النص أو Refresh في Timer على مستوى النموذج ستحصلين ضمان التحديث أولاً بأول .
( بهذه الطريقة ستحصلين على قيمة في حقل رقم الفاتورة )
أقصد ستحصلين على أعلى قيمة في حقل رقم الفاتورة .
:blink: يعطيك ربي الف عافيه
معلومات ........فعلا تشكر عليها :lol:
سؤطبق كلامك واعلمك بالنتائج بإذن الله تعالى
وشكرا على مساعدتي
والله يوفق دايما يارب
تحياتي لك-----------------------------------
<< CLICK TO START>>

ليس أن تجد حلا بل أن تجد الافضل
أن تصـــنع الخـيال هذا هوا الأفضل</span>
هذا الموضوع مغلق.