غير قادر على تعيين combobox.rowsource على النموذج المستمر

StackOverflow https://stackoverflow.com/questions/1678236

  •  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، هل الحيلة تماما.

على أمل أن يمنع ذلك شخص ما ضجيج رأسه على المنضدة طالما لدي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top