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

كيف افتح نموذج بناء على قيمة الرقم من نموذج اخر واذا لم تكن موجودة يفتح سجل جديد شرط ان تكون القيمة تلقائيا لحقل الرقم


إذهب إلى أفضل إجابة Solved by Foksh,

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

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

لدي سؤال مهم يخص النظام الذي اعمل عليه

لا اريد الاطـاله بالكلام

لدي نموذجين form1 و form2

كل نموذج يحتوي عدة حقول

ولدي حقل student_id في كلا النموذجين

المطلوب هو

1- قيمة حقل student_id في form2 اريدها ان تكون نفسها الموجودة بـ form1

2 اريد عندما اضغط ع زر فتح form2 يفتح لي السجل المرتبط برقم الطالب student_id واذا لم يكن هناك سجل بـ form2

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

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

اذا لم يكن موجود او مخزن فانه يفتح لي سجل جديد لكل الحقول ماعدا رقم الطالب فانه تلقائيا يكتب استانداً الى رقم الطالب في form1

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

  • محمد العراقي العراقي changed the title to كيف افتح نموذج بناء على قيمة الرقم من نموذج اخر واذا لم تكن موجودة يفتح سجل جديد شرط ان تكون القيمة تلقائيا لحقل الرقم

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

Private Sub btnOpenForm2_Click()
    Dim stLinkCriteria As String
    Dim stDocName As String
    Dim stStudentID As String

    ' تخزين قيمة student_id في متغير
    stStudentID = Me.student_id

    ' تحديد الشكل الذي سنفتحه
    stDocName = "Form2"

    ' تحقق مما إذا كان هناك سجل موجود في Form2 يحمل نفس قيمة student_id
    stLinkCriteria = "[student_id] = '" & stStudentID & "'"

    If DCount("*", "Form2", stLinkCriteria) > 0 Then
        ' إذا وجد السجل، افتحه وعرض السجل الموجود
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    Else
        ' إذا لم يجد السجل، أضف سجل جديد واملأ باقي الحقول
        DoCmd.OpenForm stDocName, , , , acFormAdd, , stStudentID
    End If
End Sub

 

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

18 دقائق مضت, Foksh said:

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

Private Sub btnOpenForm2_Click()
    Dim stLinkCriteria As String
    Dim stDocName As String
    Dim stStudentID As String

    ' تخزين قيمة student_id في متغير
    stStudentID = Me.student_id

    ' تحديد الشكل الذي سنفتحه
    stDocName = "Form2"

    ' تحقق مما إذا كان هناك سجل موجود في Form2 يحمل نفس قيمة student_id
    stLinkCriteria = "[student_id] = '" & stStudentID & "'"

    If DCount("*", "Form2", stLinkCriteria) > 0 Then
        ' إذا وجد السجل، افتحه وعرض السجل الموجود
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    Else
        ' إذا لم يجد السجل، أضف سجل جديد واملأ باقي الحقول
        DoCmd.OpenForm stDocName, , , , acFormAdd, , stStudentID
    End If
End Sub

 

مرحبا اخي لقد ظهر لي خطاء بالكود عنوان الخطاء (sub or function not defined)

IMG-20240324-WA0001.jpg

تم تعديل بواسطه محمد العراقي العراقي
رابط هذا التعليق
شارك

13 دقائق مضت, محمد العراقي العراقي said:

مرحبا اخي لقد ظهر لي خطاء بالكود عنوان الخطاء (sub or function not defined)

 

أسعدك الله في الدنيا والآخرة أخي الكريم ، بما أنك عضو جديد في منتدانا ، فأهلا وسهلا بك ..

ارسال مرفق في الطلبات يسهل عليك وعلينا ايجاد الحل لأي مشكلة أو سؤال أو طلب .. 

فارسل الملف الذي تعمل عليه :fff:

تم تعديل بواسطه Foksh
رابط هذا التعليق
شارك

21 دقائق مضت, Foksh said:

أسعدك الله في الدنيا والآخرة أخي الكريم ، بما أنك عضو جديد في منتدانا ، فأهلا وسهلا بك ..

ارسال مرفق في الطلبات يسهل عليك وعلينا ايجاد الحل لأي مشكلة أو سؤال أو طلب .. 

فارسل الملف الذي تعمل عليه :fff:

لقد ارفقته لكن يضهر لي ان حجم الملف كبير وهو 4.98ميغا وتعذر رفعه هنا 

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

10 دقائق مضت, محمد العراقي العراقي said:

لقد ارفقته لكن يضهر لي ان حجم الملف كبير وهو 4.98ميغا وتعذر رفعه هنا 

اضغط الملف اخي الكريم ، أو ارفق النموذجين فقط ان أمكن .

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

42 دقائق مضت, Foksh said:

أسعدك الله في الدنيا والآخرة أخي الكريم ، بما أنك عضو جديد في منتدانا ، فأهلا وسهلا بك ..

ارسال مرفق في الطلبات يسهل عليك وعلينا ايجاد الحل لأي مشكلة أو سؤال أو طلب .. 

فارسل الملف الذي تعمل عليه :fff:

تفضل اخي 

system1.7z

9 دقائق مضت, Foksh said:

اضغط الملف اخي الكريم ، أو ارفق النموذجين فقط ان أمكن .

 

system1.7z

تم تعديل بواسطه محمد العراقي العراقي
رابط هذا التعليق
شارك

  • أفضل إجابة

تفضل أخي الكريم ..

جرب هذا الكود في الزر الموجود في Form1 ، وأعلمني بالنتيجة .

انا بالنسبة لي اعتمدت على مصدر سجلات النموذج Form2 مع إجراء شرط إضافي ليتم المطلوب ، وقد يكون هناك أساليب أخرى عند الأساتذة :yes:

    Dim strSQL As String
    strSQL = "SELECT grades.id, grades.student_id, grades.material_symbol, grades.average_course1, grades.failing_materials1, grades.passed_materials, grades.course_result123, grades.failling_course2, grades.second_course1_2, grades.another_rate1_2, grades.improve_rate1, grades.improve_rate2, grades.improve_rate3, grades.improve_rate4, grades.final_rate, grades.mark_student, grades.are_agraduate, grades.note, [mateials studies].Sum, [mateials studies].sum2 " & _
             "FROM [mateials studies] INNER JOIN grades ON [mateials studies].material_symbol = grades.material_symbol " & _
             "WHERE (((grades.student_id)=" & Forms!Form1!student_id & "));"
    If DCount("*", "grades", "student_id=" & Forms!Form1!student_id) > 0 Then
        DoCmd.OpenForm "Form2"
        Forms!Form2.RecordSource = strSQL
    Else
        DoCmd.OpenForm "Form2", , , , acFormAdd
        Forms!Form2!student_id = Forms!Form1!student_id
    End If

 

وهذا المرفق بعد التعديل :-

system1.zip

تم تعديل بواسطه Foksh
إضافة المرفق
  • Thanks 1
رابط هذا التعليق
شارك

25 دقائق مضت, Foksh said:

وهذا المرفق بعد التعديل :-

 

لماذا لم يفتح عندى ويقول ان الاوفيس المستخدم احدث من الاوفيس الحالى

فانا كما تعلم استاذى العزيز انا استخدم اوفيس 2010 فاذا كان المرفق احدث لماذا لايفتح فى اوفيس 2010

جزاك الله خير

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

16 دقائق مضت, الحلبي said:

فانا كما تعلم استاذى العزيز انا استخدم اوفيس 2010 فاذا كان المرفق احدث لماذا لايفتح فى اوفيس 2010

 

لا اعلم اخي الكريم النسخة التي عندك اي إصدار 32 أو 64 ؟؟

على العموم انا عندي 2016 / 64 بت ، انسخ الكود وضعه في الزر وجرب بدون فتح القاعدة اذا لم تفتح معك

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

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

تفضل أخي الكريم ..

جرب هذا الكود في الزر الموجود في Form1 ، وأعلمني بالنتيجة .

انا بالنسبة لي اعتمدت على مصدر سجلات النموذج Form2 مع إجراء شرط إضافي ليتم المطلوب ، وقد يكون هناك أساليب أخرى عند الأساتذة :yes:

    Dim strSQL As String
    strSQL = "SELECT grades.id, grades.student_id, grades.material_symbol, grades.average_course1, grades.failing_materials1, grades.passed_materials, grades.course_result123, grades.failling_course2, grades.second_course1_2, grades.another_rate1_2, grades.improve_rate1, grades.improve_rate2, grades.improve_rate3, grades.improve_rate4, grades.final_rate, grades.mark_student, grades.are_agraduate, grades.note, [mateials studies].Sum, [mateials studies].sum2 " & _
             "FROM [mateials studies] INNER JOIN grades ON [mateials studies].material_symbol = grades.material_symbol " & _
             "WHERE (((grades.student_id)=" & Forms!Form1!student_id & "));"
    If DCount("*", "grades", "student_id=" & Forms!Form1!student_id) > 0 Then
        DoCmd.OpenForm "Form2"
        Forms!Form2.RecordSource = strSQL
    Else
        DoCmd.OpenForm "Form2", , , , acFormAdd
        Forms!Form2!student_id = Forms!Form1!student_id
    End If

 

وهذا المرفق بعد التعديل :-

system1.zip 221.79 kB · 4 downloads

اشكرك جداً وبارك الله فيك اخي عمل الملف ونجح وحصلت ع المطلوب اشكرك جزيل الشكر 

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

14 ساعات مضت, Foksh said:

تفضل أخي الكريم ..

جرب هذا الكود في الزر الموجود في Form1 ، وأعلمني بالنتيجة .

انا بالنسبة لي اعتمدت على مصدر سجلات النموذج Form2 مع إجراء شرط إضافي ليتم المطلوب ، وقد يكون هناك أساليب أخرى عند الأساتذة :yes:

    Dim strSQL As String
    strSQL = "SELECT grades.id, grades.student_id, grades.material_symbol, grades.average_course1, grades.failing_materials1, grades.passed_materials, grades.course_result123, grades.failling_course2, grades.second_course1_2, grades.another_rate1_2, grades.improve_rate1, grades.improve_rate2, grades.improve_rate3, grades.improve_rate4, grades.final_rate, grades.mark_student, grades.are_agraduate, grades.note, [mateials studies].Sum, [mateials studies].sum2 " & _
             "FROM [mateials studies] INNER JOIN grades ON [mateials studies].material_symbol = grades.material_symbol " & _
             "WHERE (((grades.student_id)=" & Forms!Form1!student_id & "));"
    If DCount("*", "grades", "student_id=" & Forms!Form1!student_id) > 0 Then
        DoCmd.OpenForm "Form2"
        Forms!Form2.RecordSource = strSQL
    Else
        DoCmd.OpenForm "Form2", , , , acFormAdd
        Forms!Form2!student_id = Forms!Form1!student_id
    End If

 

وهذا المرفق بعد التعديل :-

system1.zip 221.79 kB · 4 downloads

لدي طلب اخر اذا امكن اخي الكريم

اريد من نموذج 1 افتح نموذج 3

بصراحة اردت تعديل الكود ونسخه وتكراره لكن لم افهم شيئ ولهذا لم استطع التعديل

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

20 ساعات مضت, Foksh said:

تفضل أخي الكريم ..

جرب هذا الكود في الزر الموجود في Form1 ، وأعلمني بالنتيجة .

انا بالنسبة لي اعتمدت على مصدر سجلات النموذج Form2 مع إجراء شرط إضافي ليتم المطلوب ، وقد يكون هناك أساليب أخرى عند الأساتذة :yes:

    Dim strSQL As String
    strSQL = "SELECT grades.id, grades.student_id, grades.material_symbol, grades.average_course1, grades.failing_materials1, grades.passed_materials, grades.course_result123, grades.failling_course2, grades.second_course1_2, grades.another_rate1_2, grades.improve_rate1, grades.improve_rate2, grades.improve_rate3, grades.improve_rate4, grades.final_rate, grades.mark_student, grades.are_agraduate, grades.note, [mateials studies].Sum, [mateials studies].sum2 " & _
             "FROM [mateials studies] INNER JOIN grades ON [mateials studies].material_symbol = grades.material_symbol " & _
             "WHERE (((grades.student_id)=" & Forms!Form1!student_id & "));"
    If DCount("*", "grades", "student_id=" & Forms!Form1!student_id) > 0 Then
        DoCmd.OpenForm "Form2"
        Forms!Form2.RecordSource = strSQL
    Else
        DoCmd.OpenForm "Form2", , , , acFormAdd
        Forms!Form2!student_id = Forms!Form1!student_id
    End If

 

وهذا المرفق بعد التعديل :-

system1.zip 221.79 kB · 5 downloads

هذا الكود حورته للفورم3 وولكن يضهر سطر select باللون الاحمر

Dim strSQL As String

strSQL = "SELECT these and dissertations.student_id, these and dissertations.data_commencement, these and dissertations. written_exam, these and dissertations. oral_exam, these and dissertations.Supervisor name , these and dissertations. council_number, these and dissertations. adminis_matter,these and disserations.end_courses, these and dissertations.end_study, these and dissertations.remainder,these and dissertations.extension_reguest, these and dissertations. extension1, these and dissertations.extension_number1,these and dissertations.extension_letter1,these and dissertations.end_extension1,these and dissertations.remainder1,these and dissertations. extension_reguest1,these and dissertations.Extension2,these and dissertations.extension_number2,these and dissertations.extension_letter2,these and dissertations.end_extension2,these and dissertations.Remainder2,these and dissertations.extension_reguest2,these and dissertations.Extension3,these and dissertations.extension_number3,these and dissertations.extension_letter3,these and dissertations.end_extension3,these and dissertations.Remainder3,these and dissertations.extension_reguest3,these and dissertations.message_deliver,these and dissertations.number_rectifier,these and dissertations.history_rectifier,these and dissertations. complete_rectifier, these and dissertations. name_rectifier1, these and dissertations. the_unversity1, these and dissertations. books_number1, these and dissertations. history_book1, these and dissertations. receiving_rectifier1,these and dissertations. name_rectifier2, these and dissertations. the_unversity2, these and dissertations. books_number2, these and dissertations. history_book2, these and dissertations. receiving_rectifier2, these and dissertations. discussion_committee, these and dissertations. discussion_date, these and dissertations. course_rate, these and dissertations. first_search, these and dissertations.second_search, these and dissertations. discussion_panel1,

these and dissertations. the_second, these and dissertations. final_rate, these and dissertations. Note, " & _

         "FROM these and dissertations " & _

         "WHERE (((these and dissertations.student_id)=" & Forms!Form1!student_id & "));"

If DCount("*", "these and dissertations", "student_id=" & Forms!Form1!student_id) > 0 Then

    DoCmd.OpenForm "Form3"

    Forms!Form3.RecordSource = strSQL

Else

    DoCmd.OpenForm "Form3", , , , acFormAdd

    Forms!Form3!student_id = Forms!Form1!student_id

End If

 

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

الخطأ بداية في اسم الجدول أخي الكريم ،، لاحظ أن الاسم يحتوي على مسافات بين الكلمات . فإما أن تغير اسم الجدول بدون مسافات أو تستخدم علامات الإقتباص [] 

أيضاً لاحظت أن أسطر الكود طويلة جداً ولم يتم تقسيمها بشكل صحيح ، فتم اعادة تقسيمها لأسطر تسمح بقراءة وتعديل الاستعلام بسلاسة .

 

* ولإدراج أي كود في المشاركة ، حاول استخدام هذه الإشارة Code.png.02b644684ff909cca6e040fc3243830a.png. جرب هذا الكود بعد التعديل

Dim strSQL As String

strSQL = "SELECT [these and dissertations].student_id, [these and dissertations].data_commencement, [these and dissertations].written_exam, [these and dissertations].oral_exam, " & _
         "[these and dissertations].[Supervisor name], [these and dissertations].council_number, [these and dissertations].adminis_matter, [these and dissertations].end_courses, " & _
         "[these and dissertations].end_study, [these and dissertations].remainder, [these and dissertations].extension_reguest, [these and dissertations].extension1, " & _
         "[these and dissertations].extension_number1, [these and dissertations].extension_letter1, [these and dissertations].end_extension1, [these and dissertations].remainder1, " & _
         "[these and dissertations].extension_reguest1, [these and dissertations].Extension2, [these and dissertations].extension_number2, [these and dissertations].extension_letter2, " & _
         "[these and dissertations].end_extension2, [these and dissertations].Remainder2, [these and dissertations].extension_reguest2, [these and dissertations].Extension3, " & _
         "[these and dissertations].extension_number3, [these and dissertations].extension_letter3, [these and dissertations].end_extension3, [these and dissertations].Remainder3, " & _
         "[these and dissertations].extension_reguest3, [these and dissertations].message_deliver, [these and dissertations].number_rectifier, [these and dissertations].history_rectifier, " & _
         "[these and dissertations].complete_rectifier, [these and dissertations].name_rectifier1, [these and dissertations].the_unversity1, [these and dissertations].books_number1, " & _
         "[these and dissertations].history_book1, [these and dissertations].receiving_rectifier1, [these and dissertations].name_rectifier2, [these and dissertations].the_unversity2, " & _
         "[these and dissertations].books_number2, [these and dissertations].history_book2, [these and dissertations].receiving_rectifier2, [these and dissertations].discussion_committee, " & _
         "[these and dissertations].discussion_date, [these and dissertations].course_rate, [these and dissertations].first_search, [these and dissertations].second_search, " & _
         "[these and dissertations].discussion_panel1, [these and dissertations].the_second, [these and dissertations].final_rate, [these and dissertations].Note " & _
         "FROM [these and dissertations] " & _
         "WHERE ((([these and dissertations].student_id)=" & Forms!Form1!student_id & "));"

If DCount("*", "[these and dissertations]", "student_id=" & Forms!Form1!student_id) > 0 Then
    DoCmd.OpenForm "Form3"
    Forms!Form3.RecordSource = strSQL
Else
    DoCmd.OpenForm "Form3", , , , acFormAdd
    Forms!Form3!student_id = Forms!Form1!student_id
End If

 

طبعاً متأكد أنك ستجد خطأ في النتيجة :yes: ، اخبرني بالنتيجة

تم تعديل بواسطه Foksh
اعادة ترتيب أسطر الكود
رابط هذا التعليق
شارك

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

الخطأ بداية في اسم الجدول أخي الكريم ،، لاحظ أن الاسم يحتوي على مسافات بين الكلمات . فإما أن تغير اسم الجدول بدون مسافات أو تستخدم علامات الإقتباص [] 

أيضاً لاحظت أن أسطر الكود طويلة جداً ولم يتم تقسيمها بشكل صحيح ، فتم اعادة تقسيمها لأسطر تسمح بقراءة وتعديل الاستعلام بسلاسة .

 

* ولإدراج أي كود في المشاركة ، حاول استخدام هذه الإشارة Code.png.02b644684ff909cca6e040fc3243830a.png. جرب هذا الكود بعد التعديل

Dim strSQL As String

strSQL = "SELECT [these and dissertations].student_id, [these and dissertations].data_commencement, [these and dissertations].written_exam, [these and dissertations].oral_exam, " & _
         "[these and dissertations].[Supervisor name], [these and dissertations].council_number, [these and dissertations].adminis_matter, [these and dissertations].end_courses, " & _
         "[these and dissertations].end_study, [these and dissertations].remainder, [these and dissertations].extension_reguest, [these and dissertations].extension1, " & _
         "[these and dissertations].extension_number1, [these and dissertations].extension_letter1, [these and dissertations].end_extension1, [these and dissertations].remainder1, " & _
         "[these and dissertations].extension_reguest1, [these and dissertations].Extension2, [these and dissertations].extension_number2, [these and dissertations].extension_letter2, " & _
         "[these and dissertations].end_extension2, [these and dissertations].Remainder2, [these and dissertations].extension_reguest2, [these and dissertations].Extension3, " & _
         "[these and dissertations].extension_number3, [these and dissertations].extension_letter3, [these and dissertations].end_extension3, [these and dissertations].Remainder3, " & _
         "[these and dissertations].extension_reguest3, [these and dissertations].message_deliver, [these and dissertations].number_rectifier, [these and dissertations].history_rectifier, " & _
         "[these and dissertations].complete_rectifier, [these and dissertations].name_rectifier1, [these and dissertations].the_unversity1, [these and dissertations].books_number1, " & _
         "[these and dissertations].history_book1, [these and dissertations].receiving_rectifier1, [these and dissertations].name_rectifier2, [these and dissertations].the_unversity2, " & _
         "[these and dissertations].books_number2, [these and dissertations].history_book2, [these and dissertations].receiving_rectifier2, [these and dissertations].discussion_committee, " & _
         "[these and dissertations].discussion_date, [these and dissertations].course_rate, [these and dissertations].first_search, [these and dissertations].second_search, " & _
         "[these and dissertations].discussion_panel1, [these and dissertations].the_second, [these and dissertations].final_rate, [these and dissertations].Note " & _
         "FROM [these and dissertations] " & _
         "WHERE ((([these and dissertations].student_id)=" & Forms!Form1!student_id & "));"

If DCount("*", "[these and dissertations]", "student_id=" & Forms!Form1!student_id) > 0 Then
    DoCmd.OpenForm "Form3"
    Forms!Form3.RecordSource = strSQL
Else
    DoCmd.OpenForm "Form3", , , , acFormAdd
    Forms!Form3!student_id = Forms!Form1!student_id
End If

 

طبعاً متأكد أنك ستجد خطأ في النتيجة :yes: ، اخبرني بالنتيجة

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

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

24 دقائق مضت, محمد العراقي العراقي said:

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

:clapping:

العفو أخي الكريم . أسعدني ذلك

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

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