اذهب الي المحتوي
أوفيسنا

عرض السجلات في نموذج بطريقة عرض نماذج مستمرة Ado Recordset


alsihran

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

السلام عليكم 

كنت طرحت موضوع عرض السجلات في التقرير 

ولم اجد الا اجابه من الاستاذ ابو خليل بأن اسهل طريقة هي وضع السجلات 

في جدول مؤقت 

اليوم اطرح نفس السؤال وطلب المساعده في عرض السجلات في نموذج بطريقة عرض نماذج مستمره 

بدون جداول مؤقته 

حاليا استخدم مربع القائمة لكن مع الاسف لايفي بالغرض لعدم التمكن من تنسيق القائمه واستخدام 

التنسيق الشرطي 

AdoForm.rar

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

13 ساعات مضت, kanory said:

طيب ... ايش رأيك في هذا ...... اذا كان ينفعك ...

ما فهمت المقصود 

هذا يحدد مصدر السجلات 

المطلوب عرضها بالنموذج بطريقة عرض نماذج مستمرة 

 

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

السلام عليكم 🙂

 

هذا الملف من مكتبتي وفيه طلبك ، ولكن للاسف وقتي لا يسمح لي بتعديل ملفك !!

 

image.png.9779e7c141e6df62f9509ad4c387f6ec.png

.

وهذه اكواد الطريقة:

Option Compare Database
Option Explicit

    
Private Sub Form_Open(Cancel As Integer)
On Error Resume Next

    Dim dbs As DAO.Database
    Dim rstDAO As DAO.Recordset
    Dim rstADO As ADODB.Recordset
    Dim fld As ADODB.Field
    Dim strSQL As String


    Set rstADO = New ADODB.Recordset
    With rstADO
        .Fields.Append "EmployeeID", adInteger, , adFldKeyColumn
        .Fields.Append "FirstName", adVarChar, 10, adFldMayBeNull
        .Fields.Append "LastName", adVarChar, 20, adFldMayBeNull
        .Fields.Append "Email", adVarChar, 64, adFldMayBeNull
        .Fields.Append "Include", adInteger, , adFldMayBeNull
        .Fields.Append "Selected", adBoolean, , adFldMayBeNull
        .CursorType = adOpenKeyset
        .CursorLocation = adUseClient
        .LockType = adLockPessimistic
        .Open
    End With
    
    Set dbs = CurrentDb
    strSQL = "SELECT EmployeeID, FirstName, LastName, Email " & _
             "FROM Employees ORDER BY LastName, FirstName"
    Set rstDAO = dbs.OpenRecordset(strSQL, dbOpenDynaset)

    Do Until rstDAO.EOF
        rstADO.AddNew
        rstADO.Fields(0) = rstDAO!EmployeeID
        rstADO.Fields(1) = rstDAO!FirstName
        rstADO.Fields(2) = rstDAO!LastName
        rstADO.Fields(3) = rstDAO!Email
        rstADO.Fields(4) = Null
        rstADO.Fields(5) = Null
        rstADO.Update
        
        rstDAO.MoveNext
    Loop

    Set Me.Recordset = rstADO
    Me.AllowAdditions = True

    Set rstDAO = Nothing
    Set dbs = Nothing

End Sub

Private Sub txtEmployeeID_DblClick(Cancel As Integer)

    Dim rst As New ADODB.Recordset
    
    Set rst = Me.Recordset.Clone
    
    With rst
        .AddNew
        .Fields(0) = 99
        .Fields(1) = "danny"
        .Fields(2) = "lesandrini"
        .Fields(3) = "d@l.org"
        .Fields(4) = 1
        .Fields(5) = True
        .Update
    End With
    
    Set Me.Recordset = rst

End Sub

 

جعفر

ADORST.mdb

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

41 دقائق مضت, jjafferr said:

هذا الملف من مكتبتي وفيه طلبك ، ولكن للاسف وقتي لا يسمح لي بتعديل ملفك !!

الله يعطيك العافية 

سأحاول بأذن لله تطبيق الطريقة 

لكن استفسار لوسمحت 

42 دقائق مضت, jjafferr said:
Dim dbs As DAO.Database

بالنسبة لهذا المتغير 

تم تعريفه على قاعدة البيانات الحالية 

كيف سيكون في حالة الاتصال Sql Server

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

22 دقائق مضت, د.كاف يار said:

فضل جرب هذا التعديل بدون عمل جداول مؤقته 

الله يعطيك العافية 

طريقتك تعتمد على إنشاء استعلام 

وبالتالي حفظ جملة الاتصال بالسيرفر في الاستعلام 

وهنا سيكون اسم المستخدم والرقم السري للسيرفر مكشوف 

image.png.184d2d532e9dbd6a4b1b6d04672f1617.png

امام المتعبثين 😁

طريقة الاستاذ جعفر تفي بالغرض لكن بحاجه الى تفاصيل  الاتصال بالسيرفر بدل من القاعدة الحالية 

لان جملة الاتصال ستكون داخل محرر الاكود ولن يتم الوصول اليها بعد تحويل الملف الى accde

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

5 ساعات مضت, alsihran said:

ما فهمت المقصود 

هذا يحدد مصدر السجلات 

المطلوب عرضها بالنموذج بطريقة عرض نماذج مستمرة 

 

طيب الكود يقوم بالازم ....

ضعه في حدث عند تحميل النموذج ...

اذا وصلت جهازي سوف ادرج لك المثال المطبق ان شاء الله تعالى واعتقد انه يفي بالغرض ولا يمكن الوصول الى بيانات السيرفر غن قبل العابثين 🤣

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

28 دقائق مضت, kanory said:

تفضل مثالك بعد التعديل ..... وهذه صورة للنتيجة وبدون استعلام ظاهر ....

الله يعطيك العافية 

طريقة هذا الاستعلام تجعل الاتصال مفتوح بين النموذج وقاعدة الجداول 

وهذا يعني ( أن الاتصال بالسيرفر سيبقى مفتوح الى ان يتم اغلاق النموذج )

image.png.30f8129c5e32fdd85a16c382d3076f31.png

والمطلوب :

استعلام يحضر البيانات ويغلق الاتصال 

كما في طريقة الاستاذ  جعفر 

والاستاذ @د.كاف يار

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

قمت بالتعديل على كود الاستاذ @jjafferr

Private Sub Form_Open(Cancel As Integer)
On Error Resume Next

    Dim dbs As ADODB.Connection
    Dim rstDAO As ADODB.Recordset
    Dim rstADO As ADODB.Recordset
    Dim fld As ADODB.Field
    Dim strSQL As String


    Set rstADO = New ADODB.Recordset
    With rstADO
        .Fields.Append "EmployeeID", adInteger, , adFldKeyColumn
        .Fields.Append "FirstName", adVarChar, 10, adFldMayBeNull
        .Fields.Append "LastName", adVarChar, 20, adFldMayBeNull
        .Fields.Append "Email", adVarChar, 64, adFldMayBeNull
        .Fields.Append "Include", adInteger, , adFldMayBeNull
        .Fields.Append "Selected", adBoolean, , adFldMayBeNull
        .CursorType = adOpenKeyset
        .CursorLocation = adUseClient
        .LockType = adLockPessimistic
        .Open
    End With
        Set dbs = CreateObject("ADODB.Connection")

dbs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Shran\Desktop\AdoForm\Adb_Dat.accdb;Persist Security Info=False;"

'    Set dbs = CurrentDb
    strSQL = "SELECT EmployeeID, FirstName, LastName, Email " & _
             "FROM Employees ORDER BY LastName, FirstName"
    Set rstDAO = dbs.OpenRecordset(strSQL, dbOpenDynaset)

    Do Until rstDAO.EOF
        rstADO.AddNew
        rstADO.Fields(0) = rstDAO!EmployeeID
        rstADO.Fields(1) = rstDAO!FirstName
        rstADO.Fields(2) = rstDAO!LastName
        rstADO.Fields(3) = rstDAO!Email
        rstADO.Fields(4) = Null
        rstADO.Fields(5) = Null
        rstADO.Update
        
        rstDAO.MoveNext
    Loop

    Set Me.Recordset = rstADO
    Me.AllowAdditions = True

    Set rstDAO = Nothing
    Set dbs = Nothing

لكي يحضر البيانات من قاعدة بيانات خارجية ( مثال تقريبي لمحاكات السيرفر )

لكن اصبح البرنامج  يعلق على ويظهر شاشة سوداء 

وبعد تتبع الكود اثناء التنفيذ وجدته يستمر في عملية Loop بدون توقف 

ما اعرف وين المشكلة ......؟

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

في 2‏/6‏/2022 at 15:27, alsihran said:

الله يعطيك العافية 

طريقة هذا الاستعلام تجعل الاتصال مفتوح بين النموذج وقاعدة الجداول 

وهذا يعني ( أن الاتصال بالسيرفر سيبقى مفتوح الى ان يتم اغلاق النموذج )

والمطلوب :

استعلام يحضر البيانات ويغلق الاتصال 

 

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

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

2 ساعات مضت, kanory said:

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

شكرا لك على تفاعلك في الموضوع 

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

في الحقيقة  ما اعرف هل المطلوب ممكن مع Ado Recordset    أم لا 

بحثت في المواقع الاجنبية لكن ما وصلت لنتيجة كل الموجود نفس طريقة الاستاذ جعفر 

يحضر البيانات من جدول في نفس قاعدة البيانات 

الهدف من المطلوب المعرفة وزيادة المعلومات ☺️

لو احد الاساتذة يعطيني اجابة جازمه بأن المطلوب ممكن او غير ممكن 

مع الشكر للجميع 

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information