اذهب الي المحتوي
أوفيسنا

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


Alhaithm

الردود الموصى بها

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

لدي قاعدة بيانات مصممة على الأكسيس 2000

من ضمن محتويات قاعدة البيانات نموذج رئيس باسم S

وبداخله نموذج فرعي باسم SextendedDetails

يحتوي النموذج الفرعي SextendedDetails على عدة حقول منها :

كمبو بوكس باسم ProductID يتضمن الكثير من الأصناف وهو مرتبط بجدول ومن خصائص الكمبيو بوكس الالتزام بالقائمة كما يحتوي على وحدة نمطية تقوم بوضع السعر في حقل سعر الوحدة لكل الأصناف ماعدا خمسة أصناف

وحقل يحتوي على الكمية

Sqty

وحقل يحتوي على سعر الوحدة

SalesPrice

في حقل ProductID العديد من الأصناف ومنها 5 أصناف هي موضوع السؤال والطلب

هذه الأصناف الخمسة بأرقام ثابتة وهى

90001 و 80001 و70001 و 60001 و 50001

يتم قراءة وإدخال جميع الأصناف بواسطة قارئ الباركود من ملصق الباركود إلى الكومبو ProductID

ويتم حفظ رمز الصنف في نفس الكومبو ProductID بالكامل وبواسطة الوحدة النمطية يتم وضع السعر تلقائيا في حقل سعر الوحدة.

لكن ملصق باركود الأصناف الخمسة يأتي محتويا على رمز الصنف مضافا إليه الكمية والسعر مثاله

9000100100120 أو 8000101212910

حيث الخانات الخمس الأولى تعني رمز الصنف وهو موجود أصلا في قاعدة البيانات في الكومبو ProductID والخانات الثلاث التالية تعني الكمية والخانات الخمس التالية تعني السعر درهم وفلس.

المطلوب إنشاء وحدة نمطية تقوم بالأتي:

تقسيم رمز الصنف حسب ما هو موجود في ملصق الباركود و توزيعه وحفظه في ثلاثة حقول

الخمسة الأرقام الأولى في الكمبو بوكس ProductID وهي فعلا موجودة في القائمة

الثلاثة الأرقام التالية في حقل Sqty وهذه في الملصق فقط وهي تتبدل كل مرة

الخمسة الأرقام التالية في حقل SalesPrice وهذه أيضا في الملصق فقط وهي تتبدل كل مرة

مرفق مثال مع قاعدة البيانات على الرابط

http://www.alhaithm.com/exam.rar

http://alhaithm.com/BarCodeLable.jpg

تحياتي لكم

ومبارك علينا وعليكم الشهر الفضيل

تم تعديل بواسطه Alhaithm
رابط هذا التعليق
شارك

ضع هذه الاسطر مكان الوحدة النمطية


Dim x, xx

x = Mid([ProductID], 6, 3)

xx = Mid([ProductID], 9, 5)

SQty = x

SalesPrice = xx

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

اظن الكود واضح ولا يحتاج تفسير

رابط هذا التعليق
شارك

أشكرك على اهتمامك ومحاولتك

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

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

رابط هذا التعليق
شارك

المطلوب باختصار إنشاء كود بالمعني التالي

إذا كان النص المدخل في مربع السرد والتحرير ProductId لا يبدأ بالنص 90001 أو النص 80001 أو 70001 أو 60001 أو 50001 فتجاهل الأوامر التالية

الأوامر:

إذا كان النص المدخل في مربع السرد والتحرير يبدأ بالنص 90001 أو النص 80001 أو 70001 أو 60001 أو 50001 فنفذ الأمر التالي:

ضع الأرقام الخمسة الأول في مربع السرد والتحرير ProductId

ضع الأرقام الثلاثة التالية في حقل SQty

ضع الأرقام الخمسة التالية في حقل SalesPrice بصيغة 000.00

رابط هذا التعليق
شارك

أشكرك على اهتمامك ومحاولتك

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

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

رفقا اخي ... كل عام وانت بخير

بالعكس فأنا اعطيتك مجمل الحل

يتبقى فقط تنسيق رقم وتطبيق الشروط

اما تفصيلك الاخير فالواجب انك بينته في البداية حتى تتضح الرؤية

تفضل وحدة نمطية كاملة حسب رغبتك بالتمام

فاذا لم يتحقق الشرط يأخذ القيمة من الوحدة النمطية القديمة




Private Sub ProductID_AfterUpdate()

 Dim x1, x2, x3

x1 = Mid([ProductID], 1, 5)

x2 = Mid([ProductID], 6, 3)

x3 = Mid([ProductID], 9, 3) & "." & Mid([ProductID], 12, 13)

If x1 = 50001 Or x1 = 60001 Or x1 = 70001 Or x1 = 80001 Or x1 = 90001 Then

ProductID = x1

SQty = x2

SalesPrice = x3

Else

With CodeContextObject

    .SalesPrice = DLookup("[SalesPrice]", "[ProductsOthers]", "[ProductID] = forms!S![SExtendedDetails].form![ProductID]")

    End With

End If

End Sub

رابط هذا التعليق
شارك

الأخ/ أبوخليل المراقب العام

تحية طيبة وبعد

أعتذر عن عبارة أدنى حاجة ، حيث قلتها ليس تقليللا من شأنك ولكن الكود لم يشتغل نهائيا

الوحدة النمطية الثانية لم تشتغل نهائيا ، مما دعاني للبحث عن السبب ، ووجدت أنه يجب إزالة خاصية الالتزام بالفائمة نعم في مربع السرد والتحرير Product ID

وعليه اشتغل الكود وبالتالي تسنى لي إجراء التعديل عليه

بأدناه الكود بعد التعديل وهو محتاج للمسة منك أيضا حيث أريد أن يتم تحويل الخانة رقم 13 من الباركود إلى قيمة صفر على الدوام

Private Sub ProductID_AfterUpdate()

Dim x1, x2, x3

x1 = Mid([ProductID], 1, 7)

' x2 = Mid([ProductID], 6, 3)

x3 = Mid([ProductID], 8, 3) & "." & Mid([ProductID], 11, 12)

If x1 = 50001 Or x1 = 9900060 Or x1 = 9900051 Or x1 = 9900010 Or x1 = 9900000 Then

ProductID = x1

' SQty = x2

SalesPrice = x3

Call UpdatePole

Else

UpdatePole

With CodeContextObject

.SalesPrice = DLookup("[salesPrice]", "[ProductsOthers]", "[ProductID] = forms!S![sExtendedDetails].form![ProductID]")

.SalesCostPrice = DLookup("[PurchasePrice]", "[LastPurchasePrice]", "[ProductID] = forms!S![sExtendedDetails].form![ProductID]")

Call UpdatePole

End With

UpdatePole

End If

End Sub

تم تعديل بواسطه Alhaithm
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information