غير قادر على تعيين combobox.rowsource على النموذج المستمر
-
16-09-2019 - |
سؤال
أواجه مشكلة في تحديد مصدر الصف لمربع التحرير والسرد معين على النموذج الخاص بي (ينظر إلى شكل مستمر، على الرغم من أنني أيضا يبدو أن لديك بعض المشاكل في وضع النموذج الفردي).
يحمل مربع التحرير والسرد إلى حقل يسمى supplierID
, ، ويهدف إلى تقديم المستخدم مع قائمة بجميع الموردين المحتملين لعنصر. مصدر الصف الذي أستخدمه لمربع التحرير والسرد هو:
SELECT DISTINCT Suppliers.name, Suppliers.supplierID
FROM Suppliers
INNER JOIN PartsSuppliers ON Suppliers.supplierID=PartsSuppliers.supplierID
WHERE PartsSuppliers.partID = partID;
عندما أرى هذا الاستعلام في مصمم الاستعلام (مع مشفرة بجد)، فإنه يعمل بشكل جيد - فهو يختار جميع الموردين المحتملين للعنصر المختار، ولا يظهر أي عناصر أخرى. ولكن عندما أنظر إلى العناصر الموجودة في مربع التحرير والسرد، فإنها تظهر الكل الموردين الموجود في PartsSuppliers
الجدول (الذي يحتوي على عمودين فقط، ورسم الخرائط الأجزاء إلى الموردين المحتملين لهم).
لقد حاولت أيضا تعيين مصدر_الشرب في صندوق التحرير والسرد باستخدام بعض VBA في حدث OnFocus (فادح قيمة PartIC)، لكنه لا يبدو أنه لا يغير مصدر_الصف. رمز VBA الذي أستخدمه هو:
Private Sub supplierID_GotFocus()
Dim query As String
query = "SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID "
query = query & "FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID "
query = query & "WHERE (((PartsSuppliers.partID)=" & partID & "));"
supplierDropDown.RowSource = query
supplierDropDown.Requery
End Sub
لقد حاولت أيضا فتح هذا الاستعلام في مجموعة سجلات، ثم استخدام إعداد مجموعة السجلات التي تعمل كجلسة سجلات COMBO، ولكن ذلك لم يعمل أيضا.
ما الذي أفعله خطأ، أم أن هناك طريقة أخرى يجب أن أبحث فيها لجعل المنسدلة الصحيحة؟
ملحوظة رأيت مصدر صف مخصص لمربع التحرير والسرد في شكل مستمر في الوصول, ، ولكن هذا الحل المقبول لم يعمل بالنسبة لي أيضا.
المحلول
استخدم ال OnEnter
و OnExit
الأحداث لتغيير الخاص بك RowSource
.
Private Sub supplierID_Enter()
supplierDropDown.RowSource = _
"SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID " & _
"FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID " & _
"WHERE PartsSuppliers.partID = " & partID & ";"
End Sub
Private Sub supplierID_Exit()
supplierDropDown.RowSource = _
"SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID " & _
"FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID;"
End Sub
نصائح أخرى
لقد كنت تكافح مع كيفية تجنب "الفراغات" المتبقية في ورقة بيانات بمجرد تقييد بنود التحرير والسرد ولم تتمكن من العثور على أي خيار مستقيم للأمام لفترة طويلة .... حتى الآن!
ترك جميع الخيارات المتاحة في مربع التحرير والسرد ولكن إضافة قاعدة التحقق من الصحة مؤقتة، باستخدام OnCurrent، هل الحيلة تماما.
على أمل أن يمنع ذلك شخص ما ضجيج رأسه على المنضدة طالما لدي.