مخصص صف مصدر مربع التحرير والسرد في شكل مستمر في الوصول

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

  •  01-07-2019
  •  | 
  •  

سؤال

لقد بحثت في جميع أنحاء ، ويبدو أن هذا هو الحد في MS Access, لذلك أنا أتساءل ما الحلول الإبداعية الأخرى وجدت أن هذا اللغز.

إذا كان لديك شكل مستمر و تريد حقل إلى مربع التحرير والسرد من الخيارات التي تخص هذا الصف ، والوصول فشل في تحقيق;مربع التحرير والسرد مصدر الصف فقط الاستعلام مرة واحدة في بداية النموذج ، ومن ثم تظهر خيارات خاطئة لبقية شكل.

الخطوة التالية ونحن نحاول جميعا ، بالطبع ، هو استخدام onCurrent الحدث إلى استعلام مربع التحرير والسرد الذي يفعل في الواقع تحد من خيارات صف معين.ومع ذلك, في هذه المرحلة, إمكانية الوصول يذهب المكسرات و إعادة كل من مربعات التحرير والسرد لكل صف ، والنتيجة في كثير من الأحيان تختفي وتعاود الظهور الخيارات في الصفوف الأخرى ، اعتمادا على ما إذا كانوا قد اختاروا الخيار الذي هو ساري المفعول لمدة السجل الحالي هو مصدر الصف.

الحل الوحيد الذي وجدته هو مجرد قائمة جميع الخيارات متاحة في كل وقت.أي الإجابات الإبداعية هناك ؟

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

في هذه الحالة بالذات ، أشكال مستمرة تجعل الكثير من معانيها, لذا أرجوك لا تقل لي انها الحل الخاطئ.أنا أطلب أي الإجابات الإبداعية.

هل كانت مفيدة؟

المحلول

أنا أيضا أكره الوصول ، ولكن يجب أن تلعب مع البطاقات التي يتم التعامل.المستمر أشكال شيء رائع في الوصول حتى قمت بتشغيل إلى أي نوع من التعقيد كما هو الشائع كما في هذا المثال.

هنا هو ما أود أن تفعل عندما تواجه مع هذا الوضع (و لقد نفذت مماثلة الحلول من قبل):

وضع مربع تحرير وسرد غير منضم في نموذج.ثم ضع مربع نص منضم لهذا الحقل الذي تريد تحريره.

تأكد من أن مربع تحرير وسرد هو مخفي وراء (غير مرئية فقط الخفية) وراء النص.

في OnCurrent الحدث تعبئة مربع القائمة مع البيانات اللازمة.والمضي قدما في "الحد إلى قائمة" أيضا.

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

في خاصية الحدث تحرير وسرد مجموعة قيمة من مربع النص يساوي قيمة مربع تحرير وسرد.

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

نصائح أخرى

استخدام أشكال مستمرة ..بالتأكيد.في الواقع يمكنك بناء تطبيقات كامل مع عظيم وبديهية واجهة المستخدم بناء على أشكال مستمرة.لا تستمع إلى نخب!

الحل الخاص بك من قائمة جميع الخيارات المتاحة هو الصحيح.في الواقع لا يوجد تنظيف الحل.ولكن كنت على خطأ عندما تقول أن Acccess يذهب المكسرات.على شكل مستمر, يمكنك أن ترى كل سطر كمثال مقطع التفاصيل ، حيث تحرير وسرد هي خاصية مشتركة بين جميع حالات مقطع التفاصيل.يمكنك تحديث هذا العقار لجميع الحالات, ولكن لا يمكن وضعه على إحدى الحالات الخاصة.هذا هو السبب يجب الوصول إلى عرض نفس البيانات في مربع تحرير وسرد جميع السجلات!

إذا كنت بحاجة إلى قبول تسجيل فقط-القيم المحددة في هذا الشهر ، يرجى استخدام الحدث beforeUpdate لإضافة التحكم الداخلي.في حالة قيمة جديدة لا يمكن قبولها ، يمكنك إلغاء تحديث البيانات ، وبذلك يعود القيمة السابقة في هذا المجال.

لا يمكنك تعيين limitToList الملكية إلى 'لا' حيث ربط البيانات (التي يتم تخزينها في التحكم) هو مخفي.هذا هو المنطقي:كيف يمكن الجهاز يقبل إدخال مجموعة جديدة من البيانات عند ربط الحقل (غير مرئية) يبقى فارغ ؟

يمكن أن تجعل أيضا قيمة مربع التحرير والسرد إلى غير قابلة للتحرير حقل النص ثم إطلاق pop-up/إطار مشروط إلى تحرير تلك القيمة.ومع ذلك ، إذا كنت تفعل ذلك, كنت قد تميل إلى تحرير كل سجل في واحدة من هذه النوافذ.

لا أعتقد أن الوصول المستمر أشكال يجب أن يدان في كل شيء ، ولكن بالتأكيد نعتقد أنه ينبغي تجنبها من أجل تحرير البيانات.أنها عمل عظيم بالنسبة قوائم وتعطيك أكثر بكثير تنسيق قدرات من مجرد listbox (و هي أسهل بكثير للعمل مع ، أيضا ، على الرغم من أنها لا تسمح متعدد حدد بالطبع).

إذا كنت ترغب في استخدام نموذج مستمر من أجل التنقل إلى سجلات التحرير ، استخدام نموذج فرعي عرض بيانات مفصلة من أجل التحرير ، واستخدام PK القيمة من النموذج الفرعي للارتباط المجال.هذا يمكن القيام به مع شكل مستمر حيث يمكنك وضع التفاصيل فرعي في رأس أو تذييل الصفحة مرتبطة على PK من وراء الطاولة في شكل مستمر.

أو إذا كنت تستخدم نموذج مستمر لعرض الطفل البيانات في النموذج الأصلي ، يمكنك ربط التفاصيل فرعي مع الإشارة إلى PK في استمرار فرعي شيئا مثل:

[MySubForm].[Form]!MyID

سيكون هذا الرابط سيد الملكية ، MyID سيكون الرابط الملكية الطفل.

كما تواجه هذا الكثير في applicatins.ما وجدناه أن يكون حلا جيدا:فقط إظهار كل الصفوف في comboboxes.ثم بمجرد أن يقوم المستخدم بإدخال compobox في صف معين ، وضبط مصدر_الصف (مع فلتر لهذا الصف).عند تحرير وسرد يفقد التركيز ، يمكنك إعادة تعيين خاصية مصدر_الصف إلى عرض كل شيء.

عندي طريقة أسهل للذهاب من جيليجان.يبدو مثل الكثير من العمل ولكنها ليست حقا.الحل يتطلب وجود بلدي شكل مستمر باعتباره النموذج الفرعي ورقة البيانات.على بلدي فرعي لدي بحث comboboxes وغيرها من المجالات ، ودعا المعدات المصنعة.ببساطة كل عقد صحيح طويل الرئيسية في مصدر البيانات.الشركة المصنعة يجب أن تكون تصفيتها حسب ما تم تحديده في المعدات.إن تصفية الشركة المصنعة.مصدر_الصف في Manufacturer_GotFocus الحدث.

Private Sub Manufacturer_GotFocus()

If Nz(Me.Equipment, 0) > 0 Then
    Me.Manufacturer.RowSource = GetMfrSQL()  '- gets filtered query based on Equipment
Else
    Me.Manufacturer.RowSource = "SELECT MfgrID, MfgrName FROM tblManufacturers ORDER BY MfgrName"
End If

End Sub

في Manufacturer_LostFocus أنا إعادة تعيين مصنع.مصدر_الصف إلى جميع الشركات المصنعة أيضا.تحتاج إلى القيام بذلك لأنه عند أول نقرة في النموذج الفرعي GotFocus أحداث إطلاق النار على جميع الضوابط بما في ذلك الشركة المصنعة ، حتى ولو لم تكن في الواقع أي تحديث الحقول.

Private Sub Manufacturer_LostFocus()

Me.Manufacturer.RowSource = "SELECT MfgrID, MfgrName FROM tblManufacturers ORDER BY MfgrName"

End Sub

في إدخال حالة المصنعة لديك للتحقق مما إذا معدات المحدد, إذا لم يتم تعيين التركيز إلى المعدات.

Private Sub Manufacturer_Enter()

If Nz(Me.EquipmentID, 0) = 0 Then
    '-- Must select Equipment first, before selecting Manufacturer
    Me.Equipment.SetFocus
End If

End Sub

تحتاج أيضا إلى استعلام الشركة المصنعة مربع تحرير وسرد في Form_Current الحدث (أيلي.الشركة المصنعة.استعلام) ، يجب تعيين العقارات دورة هذا النموذج الفرعي إلى "السجل الحالي".

يبدو بسيطا بما فيه الكفاية ، ولكن أنت لم تفعل حتى الآن.عليك أيضا إعادة تعيين مصنع.مصدر_الصف إلى جميع الشركات المصنعة في SubForm_Exit الحدث في النموذج الأصلي في حال كان المستخدم يذهب إلى الصانع تحرير وسرد ولكن لا تجعل اختيار النقرات في مكان ما على النموذج الأصلي.نموذج التعليمات البرمجية (في الأصل شكل):

Private Sub sFrmEquip_Exit(Cancel As Integer)

Me.sFrmEquip.Controls("Manufacturer").RowSource = "SELECT MfgrID, MfgrName FROM tblManufacturers ORDER BY MfgrName"

End Sub

لا يزال هناك قطعة واحدة من هذه التي ليست نظيفة.عند النقر على الصانع متعددة الصفوف في ورقة بيانات الشبكة, الصانع المجال سوف تذهب فارغة في الصفوف الأخرى (البيانات تحت comboboxes لا تزال سليمة) بينما أنت تغير المصنعة في الصف الحالي.مرة واحدة يمكنك الانتقال خارج هذا الحقل نص في مصنع آخر الحقول سوف تعود الى الظهور.

ويبدو أن تعمل بشكل جيد.CBOsfrmTouchpoint8 هو تحرير وسرد تقصير فقط المنسدلة مربع.CBOsfrmTouchpoint14 هو النص أن يجعل ما تبقى من الفضاء.ألا تقول لا أبدا:

  Private Sub CBOsfrmTouchpoint8_Enter()  

  If Me.CBOsfrmTouchpoint8.Tag = "Yes" Then  
  CBOsfrmTouchpoint14.SetFocus  
  Me.CBOsfrmTouchpoint8.Tag = "No"  
  Exit Sub  
  End If  

  Me.CBOsfrmTouchpoint8.Tag = "No"  
  Me.CBOsfrmTouchpoint8.RowSource = "XXX"  
  Me.CBOsfrmTouchpoint8.Requery  
  Me.CBOsfrmTouchpoint8.SetFocus  
  End Sub 

  Private Sub CBOsfrmTouchpoint8_GotFocus()  
  Me.CBOsfrmTouchpoint14.Width = 0  
  Me.CBOsfrmTouchpoint8.Width = 3420  
  Me.CBOsfrmTouchpoint8.Left = 8580  
  Me.CBOsfrmTouchpoint8.Dropdown  
  End Sub

  Private Sub CBOsfrmTouchpoint8_LostFocus()  
  Me.CBOsfrmTouchpoint8.RowSource = "XXX"  
  Me.CBOsfrmTouchpoint8.Requery  
  End Sub 

  Private Sub CBOsfrmTouchpoint8_Exit(Cancel As Integer)  
  Me.CBOsfrmTouchpoint14.Width = 3180  
  Me.CBOsfrmTouchpoint8.Width = 240  
  Me.CBOsfrmTouchpoint8.Left = 11760  
  Me.CBOsfrmTouchpoint8.Tag = "Yes"  
  End Sub

ماذا لو قمت بإيقاف تشغيل "الحد إلى قائمة" الخيار ، والقيام ببعض التحقق من صحة قبل التحديث للتأكد من أن ما كان المستخدم قد كتبته في المباريات شيء في القائمة التي قدمت لهم ؟

أفضل...

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

بالنسبة لي أعتقد أن أفضل طريقة وأسهل طريقة إنشاء جدول مؤقت الذي يحتوي على كافة الخاص بك لا بد من المجالات بالإضافة إلى مبلغ إضافي الحقل الذي هو عمري/أي مجال.

ثم يمكنك استخدام هذا الجدول كمصدر بيانات المستمر على.يمكنك استخدام onLoad لملء الجدول المؤقت مع البيانات التي تريدها.

أعتقد أنه من السهل بعد ذلك إلى حلقة الخيارات, مجرد حلقة صغيرة من قراءة عمري/لا مجال شكل الجدول المؤقت.

آمل أن يكون هذا سوف يساعد

استخدام OnEnter الحدث لملء مربع التحرير والسرد لا تستخدم ثابت rowsource.

لقد فعل مماثلة.الحل هو استخدام ثابت مصدر الصف لا بد أن الاستعلام.الاستعلام WHERE الشروط المرجعية شكل سيطرة أي Client=Forms!frmMain!ClientTextBox.هذا وحده سوف تملأ مربعات التحرير والسرد مع الصف الأول من البيانات.خدعة ثم هو تعيين 'On Enter'الحدث الذي ببساطة لا إعادة الاستعلام في مربع التحرير والسرد على سبيل المثال ComboBox1.Requery, هذا سوف إعادة استعلام مربع التحرير والسرد وحده فقط قم بسحب البيانات ذات الصلة إلى أن سجل التوالي.

نأمل أن يعمل بالنسبة لك أيضا!

تنويه:أنا أكره الوصول مع العاطفة.

لا تستخدم أشكال مستمرة.إنهم ذر الرماد في العيون عن ما تريد تحقيقه.أشكال مستمرة هو نفس النموذج يتكرر مرارا وتكرارا مع البيانات المختلفة.هو بالفعل الهمجية من الوصول العادي طريقة عمل كما لا يمكن أن يكون نفس شكل فتح عدة مرات.سلوك ترونه هو "مصممة" في Access.كل تلك تحرير وسرد يتحكم هو في الواقع نفس التحكم.لا يمكن أن تؤثر على واحد دون التأثير على الآخرين.

أساسا, ما عليك القيام به هنا هو المدى في المنطقة حيث لم تعد مناسبة للمشروع الخاص بك (ولكن لا يمكن التخلص لأنه يمثل كمية كبيرة من العمل بالفعل).

ما يبدو على الأرجح مسار العمل هنا هو أن تتظاهر بشكل جيد حقا.تشغيل استعلام مقابل البيانات ثم قم بإنشاء شكل العناصر برمجيا على أساس النتائج.هذا هو قدر لا بأس به من العمل كما سوف يتم تكرار قليلا جيدة من الوصول إلى البيانات التعامل مع وظائف نفسك.

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

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