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

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

قام بنشر

الإخوة الكرام .. في الملف المرفق المطلوب كود (Update_takhrij) لتعبئة البيانات في جدول (TAB_takhrij_X) من الجدول الذي يتم كتابة اسمه في (1txt)

ومجال العمل في الصفوف التي لا يكون فيها مربع (MNO) فارغا

والمطلوب نقل رقم (bookID) وما يقابله من (MNO) إلى جدول (TAB_takhrij_X)، مع نقل رقم (TableNo)

وكذلك الحال في الحقول (2MNO – 3MNO – 4MNO - 5MNO - MNO7 - MNO6)  إذا لم تكن فارغة

وذلك لأن الجدول (TAB_takhrij_X) هو جدول الربط الذي سيربط بين الجداول المتعددة (book_1 & book_2 .. .. ..) وبين الجدول الرئيسي في قاعدة البيانات، لأن هذه الأرقام تم تعبئتها قديما في جداول الكتب بهذه الطريقة

* أما الكود الثاني (Update_MNOX) فهو يقوم بالتعبئة بشكل عكسي

يعني يقوم بنقل أرقام (MNO) من جدول (TAB_takhrij_X) إلى حقل (MNOX) من الجدول المطلوب، بدلالة (TableNo) ثم (bookID)

وإذا كان للحديث أكثر من رقم (MNO) فيوضع الرقم التالي بعد السابق بفاصل &

مثل هذه الصورة

 image.png.a8ffff5a9944f7c1067cde7143070ab2.png

والغرض منه هو الاحتفاظ بهذه الأرقام في أماكنها في جداول الكتب من باب الاحتياط، لأن الحقول المتعددة (Mno 1 2 3 4 5 6 7) سوف تحذف من الجداول بعد تعبئة (TAB_takhrij_X)

أرجو أن أكون قد وفقت في توضيح المطلوب 😊

takhrij.accdb

قام بنشر

وعليكم السلام ورحمة الله وبركاته ،،

دعنا أولاً نركز على المطلب الأول في الزر Update_takhrij ..

هل المطلوب كهذه النتيجة :-

 

TAB_takhrij_X
ID TableNo BookID MNO
1 1 1_10 18056
2 1 1_11 18058
3 1 1_12 3101
4 1 1_13 7336
5 1 1_14 7432
6 1 1_15 5548
7 1 1_20 7609
8 1 1_23 13701
9 1 1_25 8845
10 1 1_27 9323
11 1 1_29 8844
12 1 1_31 287
13 1 1_33 13686
14 1 1_34 285&652
15 1 1_36 268
16 1 1_38 1518
17 1 1_39 5927
18 1 1_41 4886
19 1 1_44 18077
20 1 1_46 266&50321&6603
21 1 1_48 5044
22 1 1_49 4947
23 1 1_9 11389

من الجدول الأول طبعاً !!!

إذا لا ، اشرحه شرحاً أدق إذا سمحت ..

قام بنشر

حياك الله أخي الكريم

المطلوب قريب من هذه النتيجة ..  إلا أنه إذا كان هناك أكثر من رقم (MNO) فيوضع كل رقم في سطر جديد

لأن حقل (MNO) في جدول (TAB_takhrij_X) حقل رقمي وليس نص

وهذه صورة توضح النتيجة المطلوبة عند وجود أكثر من رقم (MNO) للحديث الواحد

image.png.df2d6fc959c42fc0a0e5caed877c4c77.png

أما إدراج جمع الأرقام في حقل واحد مع الفصل بينها بعلام & فهي في الكود الثاني

 

قام بنشر
36 دقائق مضت, nssj said:

المطلوب قريب من هذه النتيجة ..  إلا أنه إذا كان هناك أكثر من رقم (MNO) فيوضع كل رقم في سطر جديد

 

ممتاز ، جرب هذا التعديل الآن من خلال الكود التالي للزر :-

Private Sub Update_takhrij_Click()
    Dim db As DAO.Database
    Dim rsSource As DAO.Recordset
    Dim rsTarget As DAO.Recordset
    Dim sourceTable As String
    Dim mnoFields As Variant
    Dim i As Integer
    Dim currentMNO As String

    On Error GoTo ErrHandler

    Set db = CurrentDb
    sourceTable = Me.txt1.Value

    mnoFields = Array("MNO", "MNO2", "MNO3", "MNO4", "MNO5", "MNO6", "MNO7")

    Set rsSource = db.OpenRecordset("SELECT * FROM [" & sourceTable & "]", dbOpenSnapshot)
    Set rsTarget = db.OpenRecordset("TAB_takhrij_X", dbOpenDynaset)

    Do While Not rsSource.EOF
        For i = 0 To UBound(mnoFields)
            currentMNO = Trim(Nz(rsSource(mnoFields(i)), ""))
            If currentMNO <> "" Then
                rsTarget.AddNew
                rsTarget!bookID = CStr(rsSource!bookID)
                rsTarget!TableNo = CLng(rsSource!TableNo)
                rsTarget!MNO = currentMNO
                rsTarget.Update
            End If
        Next i
        rsSource.MoveNext
    Loop

    rsSource.Close
    rsTarget.Close
    Set rsSource = Nothing
    Set rsTarget = Nothing
    Set db = Nothing

    MsgBox "تم حفظ الأحاديث بنجاح", vbInformation + vbMsgBoxRight, ""
    Exit Sub

ErrHandler:
    MsgBox "حدث خطأ", vbCritical + vbMsgBoxRight, ""
End Sub

 

الملف :-

 

takhrij.zip

  • Thanks 1
قام بنشر

تم المطلوب من المطلب الأول في الزر Update_takhrij ..

بعد تعديل بسيط

    'Set rsSource = db.OpenRecordset("SELECT * FROM [" & sourceTable & "]", dbOpenSnapshot)
    Set rsSource = db.OpenRecordset("SELECT * FROM [" & sourceTable & "] ORDER BY [" & sourceTable & "].[Tno]")

 

قام بنشر
5 دقائق مضت, nssj said:

بعد تعديل بسيط

 

جميل جداً ، الآن المطلوب الثاني يحتاج لشرح منك 😅

الأول فهمته بالعافية في الوقت الحالي في هذه الساعة 😁

  • Like 1
قام بنشر

طيب .. الوقت متأخر .. خليها لبكرة إن شاء الله .. حتى أكون مصحصح وأحاول أشرح بالتفصيل 😁

  • Like 1
قام بنشر

أخي الكريم .. لتوضيح المطلوب من الكود الثاني، لنترك الملف المرفق سابقا ونعتمد المرفق هنا

ستجد فيه أن جداول الكتب (book_1 - book_2) ليس فيها حقول (MNO MNO2 3 4 5 6 7) وإنما فقط حقل (MNOX) فارغا

بينما جدول الربط (TAB_takhrij_X) معبأ بالبيانات

والمطلوب هو نقل أرقام (MNO) من جدول الربط إلى ما يناسبها من (bookID) في حقل (MNOX)  من جداول الكتب

فعند إرادة نقل الأرقام لحقل (MNOX) من جدول (book_2)

يأخذ الكود اسم الجدول المراد تعبئته من مربع (txt1)

أما مربع (txt2) ففيه رقم الجدول (2)

image.png.d541cb3f0ca504cfe4edb55657591bf5.png

وعندها فمجال عمل الكود هي الصفوف التي يكون فيها حقل (TableNo) من جدول (TAB_takhrij_X) = (2)

ويقوم بنقل أرقام (MNO) إلى مواضعها بدلالة (bookID)

وإذا كان للحديث الواحد أكثر من رقم (MNO) فيوضع الرقم التالي بعد السابق بفاصل & ، لأن حقل ((MNOX) حقل نصي

والنتيجة المطلوب الوصول لها في جدول (boo_2) هي:

image.png.e44e4744a0c3fabe78af9af90b926a07.png

takhrij2.accdb

  • Like 1
قام بنشر

لمسة جميلة أخي الكريم

لكن هل يمكن أن تعرض القائمة الجداول التي تبدأ بكلمة معينة ،و في حالتنا هذه: الجداول التي تبدأ أسماؤها بـ (Book)

قام بنشر

أحسن الله إليك أخي الكريم .. هذه اللمسة الجميلة ستفيدني في أكواد أخرى

  • Thanks 1
قام بنشر
1 دقيقه مضت, nssj said:

أحسن الله إليك أخي الكريم .. هذه اللمسة الجميلة ستفيدني في أكواد أخرى

سعيد بمشاركتي معكم .:fff:

  • Like 2
قام بنشر
5 ساعات مضت, kkhalifa1960 said:

بعد الاذن منكم اساتذتي ممكن اكمل لما توصلتم اليه مع بعض لمساتي .:fff:

 

بالعكس ، يسعدنا مشاركتكم وباقي الأساتذة والخبراء في أي موضوع .

الساحة لكم لضيق الوقت ، وأنتم جديرين بالثقة دون أي شك أستاذ خليفة :fff:

  • Like 1
  • Thanks 1
قام بنشر
12 ساعات مضت, kkhalifa1960 said:

بعد الاذن منكم اساتذتي ممكن اكمل لما توصلتم اليه مع بعض لمساتي

اعذرني أخي الكريم .. لم أنتبه إلى أنك قد تفضلت بعمل الكود الثاني (Update_MNOX) إلا قبل قليل

والنتيجة صحيحة في الجدول الثاني (book_2) أما في الجدول الأول فيوجد تكرار في الأرقام !!

 

image.png.4655bb847299c2a734af90c6ba759f3c.png

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

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

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

Important Information