Ahmed Fahmy 2022 قام بنشر أبريل 30, 2021 قام بنشر أبريل 30, 2021 عاوز يعمل استبدال اتوماتيك عن الاستعلام عن صنف جديد كما بالصورة انا باستخدام قارئ الباركود والنموذج دا للاستعلام فقط عن اسعار الاصنف المتوفرة بالمحل عاوز لما الزبوب على الشاشة يضرب الصنف بالبركود ويجي يستعلم عن صنف اخر يتمسح رقم الباركود للصنف الاول وياتى رقم الباركود للصنف الجديد شكرا مقدما
د.كاف يار قام بنشر أبريل 30, 2021 قام بنشر أبريل 30, 2021 (معدل) اذا كان النموذج مرتبط مباشرة بالجدول استخدم التالي DoCmd.GoToRecord , , acNewRec لكن اذا لم يكن مرتبط بجدول استخدم التالي قبل استدعاء البيانات [اسم عنصر التحكم أو مربع النص]=Null تم تعديل أبريل 30, 2021 بواسطه د.كاف يار 1
Ahmed Fahmy 2022 قام بنشر أبريل 30, 2021 الكاتب قام بنشر أبريل 30, 2021 (معدل) اشكرك على اهتمامك اولا ثانيا جربت هذة الطرق لم تنفعى معى تم تعديل أبريل 30, 2021 بواسطه 200200ahmed
د.كاف يار قام بنشر أبريل 30, 2021 قام بنشر أبريل 30, 2021 اذا ما هي طريقتك في جلب بيانات المنتج ؟ هل النموذج مرتبط مباشرة بالجدول ؟
Ahmed Fahmy 2022 قام بنشر أبريل 30, 2021 الكاتب قام بنشر أبريل 30, 2021 نعم مرتبط مباشرة هل هناك طريقة افضل من الربط المباشر حتى نستفيد من الاكواد التى ارسالتها الينا
د.كاف يار قام بنشر مايو 1, 2021 قام بنشر مايو 1, 2021 14 دقائق مضت, 200200ahmed said: نعم مرتبط مباشرة هل هناك طريقة افضل من الربط المباشر حتى نستفيد من الاكواد التى ارسالتها الينا نعم استعمل الكود التالي On Error Resume Next ' افراغ الحقول قبل الاستعلام [Text1]=Null [Text2]=Null [Text3]=Null ' جلب البيانات Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("اسم جدول المنتجات هنا") If Not rs.BOF And Not rs.EOF Then rs.MoveFirst While (Not rs.EOF) [Text1]=rs.Fields("الباركود") [Text2]=rs.Fields("اسم المنتج") [Text3]=rs.Fields("السعر") rs.MoveNext Wend End If rs.Close Set rs = Nothing
Ahmed Fahmy 2022 قام بنشر مايو 1, 2021 الكاتب قام بنشر مايو 1, 2021 اين اضع الكود لنتفادى الخطا اخي العزيز
د.كاف يار قام بنشر مايو 1, 2021 قام بنشر مايو 1, 2021 14 دقائق مضت, 200200ahmed said: اين اضع الكود لنتفادى الخطا اخي العزيز ضغه في حدث بعد التحديث قبل البدء نفذي التالي - قم بإزالة مصدر السجلات - قم بإزالة مصدر عنصر التحكم لكل عنصر مرفق لك مثال لذلك استدعاء بيانات المنتج.zip 1 1
Ahmed Fahmy 2022 قام بنشر مايو 1, 2021 الكاتب قام بنشر مايو 1, 2021 شكرا 100 100 شكرا على تعاونك معى اخي الغالي
Hawiii قام بنشر مايو 1, 2021 قام بنشر مايو 1, 2021 (معدل) شكرا للدكتور على المثال وزيادة في الإثراء ، هذه طريقتي في الوصول للبيانات Private Sub Product_NO_AfterUpdate() Dim rst As DAO.Recordset On Error Resume Next Set rst = CurrentDb.OpenRecordset("Products", dbOpenSnapshot) With rst .FindFirst "Product_NO=" & Me.Product_NO If Not .NoMatch Then Me.Product_Name = .Fields("Product_Name") Me.Product_price = .Fields("Product_price") Me.Product_Image.Picture = "" Me.Product_Image.Picture = CurrentProject.Path & "\Images\" & .Fields("Product_Image") Else Me.Product_Name = Null Me.Product_price = Null Me.Product_Image.Picture = "" MsgBox "منتج غير مسجل", vbCritical + vbMsgBoxRight, "تنبيه" End If End With rst.Close 'Set rst = Nothing End Sub تم تعديل مايو 1, 2021 بواسطه Hawiii 2
Hawiii قام بنشر مايو 1, 2021 قام بنشر مايو 1, 2021 (معدل) ولاني نسيت أزيل .Fields حيث لا داعي لها هنا ، هنا أرفق لكم التعديل: Private Sub Product_NO_AfterUpdate() Dim rst As DAO.Recordset On Error Resume Next Set rst = CurrentDb.OpenRecordset("Products", dbOpenSnapshot) With rst .FindFirst "Product_NO=" & Me.Product_NO If Not .NoMatch Then Me.Product_Name = !Product_Name Me.Product_price = !Product_price Me.Product_Image.Picture = "" Me.Product_Image.Picture = CurrentProject.Path & "\Images\" & !Product_Image Else Me.Product_Name = Null Me.Product_price = Null Me.Product_Image.Picture = "" MsgBox "منتج غير مسجل", vbCritical + vbMsgBoxRight, "تنبيه" End If End With rst.Close 'Set rst = Nothing End Sub تم تعديل مايو 1, 2021 بواسطه Hawiii 1
kha9009lid قام بنشر مايو 2, 2021 قام بنشر مايو 2, 2021 مشاركة بسيطة مع الاساتذه الكرام ولكون المطلوب مجرد استعلام عن سعر الصنف ومعلوماته برقم الباركود في نموذج غير مرتبط فيمكن عملها باستخدم حقل مخصص لقراءة الباركود يتم افراغة مباشرة بعد تنفيذ الكود ليكون جاهز لقراءة باركود اخر واستخدم دالة DLookup مع تحميل الحقول المطلوبة في الامر ويمكن اضافة حقول اخرى الى عدد 10 حقول ليكون الكود On Error GoTo err Dim x() As String A = DLookup("[Product_id] & '|' & [Product_Name] & '|' & [Product_price]", "tbl_2", "[n_w]='" & [tx1] & "'") x = Split(A, "|") [tx2] = x(1) [tx4] = x(0) [tx3] = x(2) Me.tx1 = Null Exit Sub err: MsgBox "رقم الباركود غير صحيح", vbInformation, "تنبيه" [tx1] = Null [tx2] = Null [tx4] = Null [tx3] = Null الاستعلام في الصورة 👇 باستخدام جهاز الباركود 2 1
Hawiii قام بنشر مايو 2, 2021 قام بنشر مايو 2, 2021 (معدل) جميل الأخ خالد ، معلومة جديدة لي ، ولأول مرة أتعرف على هذه الطريقة في استخدام دالة DLookup ، لعلها مستجدة في الإصدارات الجديدة. ليتك استخدمت نفس أسماء الحقول لتكون المقارنة أسهل وأكثر فائدة للمبتدئين. تم تعديل مايو 2, 2021 بواسطه Hawiii تصحيح أخطاء مطبعية 2
kha9009lid قام بنشر مايو 2, 2021 قام بنشر مايو 2, 2021 ياهلا باستاذنا الغالي هاوي هذه الطريقة تعمل من الاصدار 2003 وسبق ان اشار لها الاستاذ جعفر عام 2015 اقتباس 41 دقائق مضت, Hawiii said: ليتك استخدمت نفي أسماء الحقول لتكون المقارنة أسهل وأكثر فائدة للمبتدئين هي نفس الاسماء A = DLookup("[Product_id] & '|' & [Product_Name] & '|' & [Product_price]", "tbl_2", "[n_w]='" & [tx1] & "'") x = Split(A, "|") لو تلاحظ قسمنا نتيجة اي حسب موقعها من "|" Product_id = x(0) Product_Name = x(1) Product_price = x(2) تقريبا نفس فكرة القائمة المنسدلة عندما نحملها بقيمة عدة حقول ونستدعيها في النموذج مع فارق ان القائمة مبنية على استعلام وهنا تم استخدام متغير لتحميل الحقول بواسطة DLookup ثم استخدام الحقول المحملة وفقا لموقع كل منها من "|" Me.tx1 = Me.c_2.Column(0) Me.tx2 = Me.c_2.Column(1) Me.tx3 = Me.c_2.Column(2) تحياتي لك 1 1
Hawiii قام بنشر مايو 2, 2021 قام بنشر مايو 2, 2021 شكرا لك أخ خالد ، أكيد شرحك مو لي 😃 ملخص الفكرة للمبتدئين : هو تجميع لعدة قيم حقول في متغير نصي واحد وهو هنا باسم (A) عن طريق البحث بدالة DLookup ثم نجري عملية عكسية بتفكيك قيمة المتغير النصي إلى عدة قيم وتخزينها في مصفوفة وهي هنا باسم (x) عن طريق دالة Split 1
kha9009lid قام بنشر مايو 2, 2021 قام بنشر مايو 2, 2021 14 دقائق مضت, Hawiii said: شكرا لك أخ خالد ، أكيد شرحك مو لي 😃 ههههههه اكيد استاذنا الفاضل الشرح للمبتدئين وكنت بكتبها في الرد السابق ولكني نسيت والله 1
Hawiii قام بنشر مايو 2, 2021 قام بنشر مايو 2, 2021 (معدل) المثال نفسه جمعت فيه ثلاث الطرق السابقة وأضفت عليه رابعة بعد الإستفادة من الطريقة الثالثة طريقة الأستاذ خالد يعني المثال فيه أربع طرق الآن Private Sub Product_NO_AfterUpdate() 'Hawiii Dim rst As DAO.Recordset Dim flds As Variant Dim fldsArray Dim fld As Field Dim count As Integer On Error Resume Next '------------------------------------- Const tableName As String = "Products" Const fldsKey As String = "Product_NO" '------------------------------------- Set rst = CurrentDb.OpenRecordset(tableName, dbOpenSnapshot) With rst For Each fld In .Fields If fld.Name <> fldsKey Then count = count + 1 flds = flds & IIf(count > 1, "] & '|' & [", "[") & fld.Name 'If count = 10 Then Exit For End If Next fld flds = flds & "]" '-------------------------- flds = DLookup(flds, tableName, fldsKey & "=" & Me(fldsKey)) If IsNull(flds) Then GoTo fldsClear fldsArray = Split(flds, "|") '-------------------------- count = -1 For Each fld In .Fields If fld.Name <> fldsKey Then count = count + 1 Me(fld.Name) = fldsArray(count) Me(fld.Name).Picture = "" Me(fld.Name).Picture = CurrentProject.Path & "\Images\" & fldsArray(count) 'If count = UBound(fldsArray) Then Exit For End If Next fld End With rst.Close Exit Sub '-------------------------- fldsClear: For Each fld In rst.Fields If fld.Name <> fldsKey Then Me(fld.Name) = Null Me(fld.Name).Picture = "" End If Next fld rst.Close MsgBox "منتج غير مسجل", vbCritical + vbMsgBoxRight, "تنبيه" End Sub استدعاء بيانات المنتج_3.rar تم تعديل مايو 2, 2021 بواسطه Hawiii 1
Hawiii قام بنشر مايو 2, 2021 قام بنشر مايو 2, 2021 (معدل) 4 ساعات مضت, kha9009lid said: ويمكن اضافة حقول اخرى الى عدد 10 حقول الحقيقة لم أجد أي مرجع يذكر موضوع هذا العدد وأنا أضفت حقول أكثر من عشرة للتجربة ولم أجد أي رسالة خطأ في الكود. تم تعديل مايو 2, 2021 بواسطه Hawiii 1
Ahmed Fahmy 2022 قام بنشر مايو 2, 2021 الكاتب قام بنشر مايو 2, 2021 اخي خالد واخي هاوى شكرا لكم ايضا علي الاهتمام والمشاركة واتمنى من اخى خالد التطبيق علي مثال ورفعة واكون شاكر لك
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان