اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

تحديد مصدر بيانات الفورم من خلال الكود و غير مسموح بإضافة سجل جديد


الردود الموصى بها

السلام عليكم إخوتى الكرام

وكل عام و أنتم بخير

لدى نموذج غير معتمد على جدول أو استعلام

قمت بفتح recordset  عن طريق ال ado

قمت بجعل مصدر بيانات النموذج هو ال recordset   المسماة   adorec

كما قمت بإسناد مربعات النصوص لل recordset   كل مربع نص إلى حقل فى  recordset

أنشأت أزرارا للسابق و اللاحق و الأول و الأخير ...... كما ترون بالصورة

المشكلة

أنشأت زرا لإضافة سجل جديد

لكنه لم يقبل و ظهرت رسالة تفيد بأنه لا يمكننى الانتقال للسجل المحدد

جربت إضافة سجل جديد بالكود

Docmd.gotorecord,,acnewrecord

و عن طريق إضافة زر جاهز

كل هذا لم يقبله

أرجو النصيحة من خبراء المنتدى الأفاضل

هل لا يمكن إضافة سجل جديد لنموذج تم  تحميل مصدر بياناته ب الريكورد سيت من خلال الكود

هذا هو كود الفتح

Dim iBink As Integer

Dim ForeColor As Long

Dim adocon As ADODB.Connection

Dim adorec As ADODB.Recordset

Private Sub cmdcancel_Click()

Me.Undo

End Sub

 

Private Sub cmdend_Click()

DoCmd.Close acForm, (Me.Name)

End Sub

 

 

 

Dim adocon As ADODB.Connection

Dim adorec As ADODB.Recordset

Private Sub Form_Load()

Set adocon = CurrentProject.AccessConnection

 Set adorec = New ADODB.Recordset

 With adorec

 Set .ActiveConnection = adocon

 .Source = "SELECT * FROM tblmain"

 .LockType = adLockOptimistic

 .CursorType = adOpenKeyset

 .Open

 End With

هنا إسناد الريكورد سيت لتكون مصدر بيانات النموذج

 Set Me.Recordset = adorec

و هذه جمل لتحديد مصدر بيانات مربعات النصوص لتكون حقول فى recordset

txtfind.ControlSource = "=[" & adorec.Fields(0).Name & "]"

txtname.ControlSource = "=[" & adorec.Fields(5).Name & "]"

txtqawmy.ControlSource = "=[" & adorec.Fields(4).Name & "]"

txtqaydn.ControlSource = "=[" & adorec.Fields(20).Name & "]"

txtfn.ControlSource = "=[" & adorec.Fields(13).Name & "]"

txtmn.ControlSource = "=[" & adorec.Fields(16).Name & "]"

txtwn.ControlSource = "=[" & adorec.Fields(22).Name & "]"

txtmelad.ControlSource = "=[" & adorec.Fields(31).Name & "]"

 

End Sub

Set adorec = Nothing

Set adocon = Nothing

End Subrec.PNG.70b4fb48f979cd06090588f7c91771bc.PNG

 

تم تعديل بواسطه عبد الفتاح كيرة
  • Like 1
رابط هذا التعليق
شارك

وعليكم السلام

 

طبعا ما بيقبل الامر Docmd.gotorecord,,acnewrecord

لأن النموذج عندك غير مضمن (اي غير مرتبط بجدول):smile:

 

يجب عليك إضافة سجل عن طريق Recordset مباشرة:

adorec.addnew

.....
إضافة بيانات الحقول في الجدول
adorec!ID = 5
adorec!Name = "جعفر"
.....

adorec.update

.

جعفر

  • Thanks 1
رابط هذا التعليق
شارك

شكرا للأستاذ جعفر

لكن أستاذنا بعد تحديد مصدر بيانات الفورم بالكود

صار الفورم مرتبطا بجملة الاستعلام

"SELECT * FROM tblmain"

حتى أنها ظهرت فى نافذة خصائص النموذج تماما كما لو أنه معتمد على جدول

Capture33.PNG.e3784ad840a2dae70a76efe4f7d029d2.PNG

 

رابط هذا التعليق
شارك

شكرا للأستاذ جعفر

لكن أستاذنا بعد تحديد مصدر بيانات الفورم بالكود

صار الفورم مرتبطا بجملة الاستعلام

"SELECT * FROM tblmain"

حتى أنها ظهرت فى نافذة خصائص النموذج تماما كما لو أنه معتمد على جدول

أنشأت نموذج فارغ غير مضمن

وكتبت فى نافذة الخصائص مصدر البيانات نفس جملة الاستعلا

SELECT * FROM tblmain; 

وشغلت النموذج

و أضفت سجلا جديدا

 

Capture33.PNG.e3784ad840a2dae70a76efe4f7d029d2.PNG

 

رابط هذا التعليق
شارك

اها ، ما قرأت كل الكود :blink:

 

الظاهر يجب ان تعمل connection للجداول قبل خطوة إضافة السجل ، لأن الكود اعلاه يغلق الاستصال بعد الكود ،

فكل اللي تقوم فيه من بيانات وسجل سابق ولاحق ، هي موجودة في Recordset الذي جلبته من البيانات قبل اغلاق الاتصال.

 

Ado فيه اتصال وقطع اتصال ، وهذا الذي استعملته انت ، بينما Dao مافيه قطع اتصال ، 

جعفر

  • Like 1
رابط هذا التعليق
شارك

56 دقائق مضت, ابا جودى said:

ممكن الاطلاع على مثال القاعدة استاذ @عبد الفتاح كيرة

تفضلوا و أعانكم الله

هذا نموذج من القاعدة

ss18.accdb

رابط هذا التعليق
شارك

السلام عليكم

مؤقتا و حتى أجد حلا

استبدلت ال dao  ب  ال ado

الكود لمن يريده

Set db = CurrentDb
Set rs = db.OpenRecordset("select * from tblmain order by stunum")
Set Me.Recordset = rs
txtfind.ControlSource = "[" & rs.Fields(0).Name & "]"
txtname.ControlSource = "[" & rs.Fields(4).Name & "]"
txtqawmy.ControlSource = "[" & rs.Fields(3).Name & "]"
txtqaydn.ControlSource = "[" & rs.Fields(18).Name & "]"
txtfn.ControlSource = "[" & rs.Fields(12).Name & "]"
txtmn.ControlSource = "[" & rs.Fields(15).Name & "]"
txtwn.ControlSource = "[" & rs.Fields(20).Name & "]"
txtmelad.ControlSource = "[" & rs.Fields(25).Name & "]"

 

  • Like 1
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
×
×
  • اضف...

Important Information