أبو عبدالله الحلوانى قام بنشر نوفمبر 6, 2017 قام بنشر نوفمبر 6, 2017 السلام عليكم كما هو معلوم عند استخدام جملة ال SQl فى استدعاء والعمل على سجلات جدول ما فاننا نستخدم كود مثل هذا dim M As Recordset Set m = CurrentDb.OpenRecordset("TabelName",DBOpenDynaset) with M .AddNew !Field1 = me.Field1 !Field2 = me.Field2 .UpDate End With وسؤالى الآن هو أننى أحاول القيام باختصار هذا الكود على النحو التالى لكثرة الحقول التى سيتم ذكرها بالكود أولا وثانيا للحاجة لوضع هذه الكود بوحدة نمطية لاستدعائها عند الحاجة dim M As Recordset Set m = CurrentDb.OpenRecordset("TabelName",DBOpenDynaset) For Each control in me.controls with M .AddNew !control.name = me.control.name .Update .MoveNext End With Next ولكن للأسف يحدث خطأ لعدم قبول !!!!!!! لاسم المغير الذى بعدها فهل هنالك حيلة ما لتفادى هذه المشكلة وجزاكم الله خيرا 1
يوسف أحمد قام بنشر نوفمبر 7, 2017 قام بنشر نوفمبر 7, 2017 (معدل) و عليكم السلام اخي العزيز ابو عبد الله هناك طريقة بالكود التالي : Public Function abc(frm As Variant) As Form Dim rs As dao.Recordset Dim I As Integer Set rs = CurrentDb.OpenRecordset("tbl1") With rs .AddNew For I = 1 To 3 .Fields("Fld" & CStr(I)) = frm("txtField" & CStr(I)) Next I .Update End With rs.Close Set rs = Nothing End Function لاحظ بأن الطريقة تعتمد على توحيد اسماء الحقول ( fld ) و لكن باضافة رقم متزايد يبدأ من 1 .. و كذلك اسماء مربعات النصوص (txtField) الحلقة التكرارية تبدأ من 1 و تنتهي بعدد مربعات النصوص لديك ارجو ان يكون هو المطلوب للمعلومية : هذا الحل ليس بإستخدام sql كما ذكرت اخي ابو عبد الله و انما باستخدام DAO و ممكن الحاق البيانات باستخدام sql بالكود التالي : DoCmd.SetWarnings False DoCmd.RunSQL "INSERT INTO tbl1 ( fld1, fld2, fld3 )SELECT [forms]![frm1]![txtField1] , " & _ "[forms]![frm1]![txtField2] , [forms]![frm1]![txtField3] ;" DoCmd.SetWarnings True تفضل مثال على ذلك بالتوفيق test.rar تم تعديل نوفمبر 7, 2017 بواسطه يوسف أحمد 1
أبو عبدالله الحلوانى قام بنشر نوفمبر 7, 2017 الكاتب قام بنشر نوفمبر 7, 2017 جزاك الله خيرا أستاذى الفاضل ماذا لو أن عناصر التحكم لها نفس أسماء الحقول بالجدول
يوسف أحمد قام بنشر نوفمبر 7, 2017 قام بنشر نوفمبر 7, 2017 و اياك جزى و فيك بارك اخي العزيز ابو عبد الله تم التعديل حسب المطلوب ارجو ان يكون هو المطلوب بالتوفيق test.rar
أبو عبدالله الحلوانى قام بنشر ديسمبر 6, 2017 الكاتب قام بنشر ديسمبر 6, 2017 في 11/8/2017 at 01:32, يوسف أحمد said: تم التعديل حسب المطلوب ارجو ان يكون هو المطلوب جزاك الله خيرا وبارك الله لكم آسف جدا لتأخرى بالرد ولكن كانت لدى مشكلة فى الاتصال بالشبكة في 11/7/2017 at 23:53, أبو عبدالله الحلوانى said: ماذا لو أن عناصر التحكم لها نفس أسماء الحقول بالجدول ولكنى كنت أقصد بهذا مثلا أن الجدول مكون من حقول كهذه ID - Test - set وكذلك هى أسماء مربعات النص على الفورم.
أبو إبراهيم الغامدي قام بنشر ديسمبر 10, 2017 قام بنشر ديسمبر 10, 2017 أهلا بك أستاذي عبدالله فكرة سليمة ومنطقها صحيح.. لكن المشكلة في الإيعاز.. استخدم هذه الشفرة ملاحظة: ليس كل عناصر التحكم في النموذج تعيد بيانات ولذلك يجب وضع شرط لتقيدها Sub ADD_NEW() Dim M As DAO.Recordset Dim C As Control Set M = CurrentDb.OpenRecordset("Employees", dbOpenDynaset) M.AddNew For Each C In Detail.Controls If C.ControlType = acTextBox Then M(C.Name) = C.Value End If Next M.Update End Sub 1 1
أبو عبدالله الحلوانى قام بنشر ديسمبر 12, 2017 الكاتب قام بنشر ديسمبر 12, 2017 السلام عليكم الله الله ياسلام عليك أستاذى @أبو إبراهيم الغامدي جزاك الله خيرا وأحسن اليك وهذا تطبيق بسيط للفكرة لاثراء الموضوع (تم اضافة شفرتكم بعد تعديل بسيط فى موديل عام يمكن استدعائه من أكثر من فورم ويتعامل مع أكثر من جدول فى آن واحد ) وهذا نموذج بسيط للفكرة أضفته على مرفق أستاذنا يوسف لجمع أطراف الموضوع جميعا فى مرفق واحد test.rar في 11/7/2017 at 03:00, يوسف أحمد said: للمعلومية : هذا الحل ليس بإستخدام sql كما ذكرت اخي ابو عبد الله و انما باستخدام DAO أشكر أستاذنا يوسف أحمد على هذه المعلومة القيمة (طبعا أنا مجرد هاوى لذى مثل هذه المعلومات القيمة تغيب عنا كثيرا) أرجو من الادارة تعديل عنوان الموضوع الى هل يمكن استخدام ! مع متغير بدلا من اسم الحقل باستخدام DAO وجزاكم الله خيرا تمت الفائدة والحمد لله
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.