عفرنس قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 السلام عليكم .. في المرفق أريد من الاستعلام أن يظهر لي اسم الطالب والمادة التي درجته فيها أقل من 50 غير مجتاز(راسب) .. وللتوضيح أكثر .. عندما أضع جملة "*غير مجتاز*" Like يظهرلي الطلاب الذين حصلوا على أقل من 50 درجة لكن لا يظهر أسماءهم لأن الطالب لديه أكثر من مادة كما ترون بالصورة المرفقة . شاكر لكم ومقدر Database2.rar
ابو جودي قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 (معدل) بنية القاعدة أصلا خطأ المفروض المواد كلها ب جدول والاسماء بجدول هل حضرتك مصمم على هاد الوضع اذا ما بدك تعدل ع التصميم يبقى لابد من كتابة الاسم مع كل صف لكل مادة مقل الصورة اذا بدك تحصله فى نتيجو الفرز والتصفية تم تعديل ديسمبر 23, 2020 بواسطه ابا جودى 1
عفرنس قام بنشر ديسمبر 23, 2020 الكاتب قام بنشر ديسمبر 23, 2020 14 دقائق مضت, ابا جودى said: بنية القاعدة أصلا خطأ المفروض المواد كلها ب جدول والاسماء بجدول هل حضرتك مصمم على هاد الوضع اذا ما بدك تعدل ع التصميم يبقى لابد من كتابة الاسم مع كل صف لكل مادة مقل الصورة اذا بدك تحصله فى نتيجو الفرز والتصفية شكرا لك على مرورك أخي @ابا جودى البيانات مستوردة من ملف اكسل وهي موجودة بهذا الشكل .. الان, عفرنس said: شكرا لك على مرورك أخي @ابا جودى البيانات مستوردة من ملف اكسل وهي موجودة بهذا الشكل .. اذاً . نحتاج تكرار اسم الطالب أمام كل مادة .. لكن كيف السبيل إلى ذلك ؟؟ 🤔🤔
jjafferr قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 السلام عليكم 🙂 استاذ فايز ، اذا تذكر الاكواد الطويلة اللي كتبتها لك عند استيراد اكثر من صفحة من ملفات الاكسس ، او اكثر من ملف اكسس ، هذه الاكواد كانت لتنظيف البيانات من السجلات الفارغة (مثل السجل الاول الذي به الاسم ، ثم اخذ الاسم وبقية البيانات من السجل الاول واتسجيله لبقية السجلات التابعة للطالب 🙂 اما وقد رجعنا الى كود استيراد البيانات من الاكسل كما هي ، فوجب علينا ، ومثل ما قال اخي اباجودي ، فعلينا بتعبئة هذه البيانات ، لذا عملت استعلام تحديث ، ليقوم بتعبئة هذه البيانات ، بعد استيرادها مباشرة من ملف الاكسل ، هكذا : Private Sub command1_Click() Dim ImportFileName As String ImportFileName = CurrentProject.Path & "\CS_FinalMarksReport" & ".xlsx" CurrentDb.Execute ("Delete * From Tabl_1") If MsgBox("هل تريد استيراد البيانات من جديد ؟", vbYesNo + vbMsgBoxRight, "تنبيه") = vbYes Then DoCmd.TransferSpreadsheet acImport, 8, "Tabl_1", ImportFileName, True DoCmd.SetWarnings False '| DoCmd.OpenQuery "qry_Filled" '| <------- DoCmd.SetWarnings True '| MsgBox "تم استيراد البيانات بنجاح" Else MsgBox "تم إلغاء عملية الاستيراد " End If End Sub . وهذا هو الاستعلام : . وهذه جملة SQL الاستعلام: UPDATE Tabl_1 SET Tabl_1.A1 = f_A1(Nz([A1],"|")), Tabl_1.A2 = f_A2(Nz([A2],"|")), Tabl_1.A3 = f_A3(Nz([A3],"|")), Tabl_1.A4 = f_A4(Nz([A4],"|")), Tabl_1.A5 = f_A5(Nz([A5],"|")); . وهذه هي الوحدات النمطية التي تناديها للعمل: Option Compare Database Option Explicit Public p_A1 As String Public p_A2 As String Public p_A3 As String Public p_A4 As String Public p_A5 As String ' Public Function f_A1(A1 As String) As String If A1 = "|" Then f_A1 = p_A1 Else p_A1 = A1 f_A1 = p_A1 End If End Function Public Function f_A2(A2 As String) As String If A2 = "|" Then f_A2 = p_A2 Else p_A2 = A2 f_A2 = p_A2 End If End Function Public Function f_A3(A3 As String) As String If A3 = "|" Then f_A3 = p_A3 Else p_A3 = A3 f_A3 = p_A3 End If End Function Public Function f_A4(A4 As String) As String If A4 = "|" Then f_A4 = p_A4 Else p_A4 = A4 f_A4 = p_A4 End If End Function Public Function f_A5(A5 As String) As String If A5 = "|" Then f_A5 = p_A5 Else p_A5 = A5 f_A5 = p_A5 End If End Function . ومن هنا ، فيمكنك عمل استعلام عادي لأي شيء يخص البيانات ، مثل طلبك في هذا الموضوع 🙂 ونعم تستطيع استعمال الاستعلام لتعبئة بيانات جدولك الحالي ، وبدون استيراده مرة اخرى 🙂 جعفر 1312.Database2.accdb.zip 3
ابوبسمله قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 السلام عليكم مشاركة ضعيفه منى مع اخوانى واساتذتى @jjafferr و @ابا جودى جزاهم الله خيرا 💐💐💐 انشات استعلام للحصول على اول سجل فارغ ثم فالنموذج قمت بوضع كود للتحديث Private Sub txtUpdate_Click() Dim db As DAO.Database Set db = CurrentDb Dim rs As DAO.Recordset Set rs = db.OpenRecordset("Tabl_1") Dim i As Integer For i = 0 To rs.RecordCount - 1 If IsNull(rs.Fields("A3")) Then rs.Edit rs.Fields("A1").Value = DLookup("A1", "Tabl_1", "[ÇáãÚÑÝ]=" & DLookup("FirstNum", "qry3") - 1) rs.Fields("A2").Value = DLookup("A2", "Tabl_1", "[ÇáãÚÑÝ]=" & DLookup("FirstNum", "qry3") - 1) rs.Fields("A3").Value = DLookup("A3", "Tabl_1", "[ÇáãÚÑÝ]=" & DLookup("FirstNum", "qry3") - 1) rs.Update Else End If rs.MoveNext Next i rs.Close Set rs = Nothing End Sub ومرفق المثال الجدول بدون تحديث اضغط زر التحديث فالنموذج تقبلوا تحياتى ومرورى وفقكم الله Database2.accdb 1
ابو جودي قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 34 دقائق مضت, jjafferr said: السلام عليكم 🙂 فوجب علينا تعبئة هذه البيانات ، لذا عملت استعلام تحديث ، ليقوم بتعبئة هذه البيانات ، بعد استيرادها مباشرة من ملف الاكسل ، هكذا : ومن هنا ، فيمكنك عمل استعلام عادي لأي شيء يخص البيانات ، مثل طلبك في هذا الموضوع 🙂 ونعم تستطيع استعمال الاستعلام لتعبئة بيانات جدولك الحالي ، وبدون استيراده مرة اخرى 🙂 جعفر 1312.Database2.accdb.zip 33.46 kB · 4 downloads وعليكم السلام ورحمة الله تعالى وبركاته ما شاء الله الله اكبـــــر زادكم الله علما و فهما ونغهكم بما علمكم يا سلام ع البخور العمانى يا ولاد ... شغل عالى ومن النوع الفاخر انا مش فاهم شئ من الاكواد فى الوحدة النمطية بس هأروح اعمل شاى واولع بخور يمكن يتغير حالى وأفهم
ابو جودي قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 3 دقائق مضت, احمد الفلاحجي said: السلام عليكم ثم فالنموذج قمت بوضع كود للتحديث Private Sub txtUpdate_Click() Dim db As DAO.Database Set db = CurrentDb Dim rs As DAO.Recordset Set rs = db.OpenRecordset("Tabl_1") Dim i As Integer For i = 0 To rs.RecordCount - 1 If IsNull(rs.Fields("A3")) Then rs.Edit rs.Fields("A1").Value = DLookup("A1", "Tabl_1", "[المعرف]=" & DLookup("FirstNum", "qry3") - 1) rs.Fields("A2").Value = DLookup("A2", "Tabl_1", "[المعرف]=" & DLookup("FirstNum", "qry3") - 1) rs.Fields("A3").Value = DLookup("A3", "Tabl_1", "[المعرف]=" & DLookup("FirstNum", "qry3") - 1) rs.Update Else End If rs.MoveNext Next i rs.Close Set rs = Nothing End Sub ومرفق المثال الجدول بدون تحديث اضغط زر التحديث فالنموذج تقبلوا تحياتى ومرورى وفقكم الله Database2.accdb 564 kB · 1 download وعليكم السلام ورحمة الله تعالى وبركاته ما شاء الله الله اكبـــــر زادكم الله علما و فهما ونغهكم بما علمكم انا البخور تبعى اليوم مغشوش 😭
عفرنس قام بنشر ديسمبر 23, 2020 الكاتب قام بنشر ديسمبر 23, 2020 56 دقائق مضت, jjafferr said: لذا عملت استعلام تحديث ، ليقوم بتعبئة هذه البيانات ، بعد استيرادها مباشرة من ملف الاكسل ، هكذا : Private Sub command1_Click() Dim ImportFileName As String ImportFileName = CurrentProject.Path & "\CS_FinalMarksReport" & ".xlsx" CurrentDb.Execute ("Delete * From Tabl_1") If MsgBox("هل تريد استيراد البيانات من جديد ؟", vbYesNo + vbMsgBoxRight, "تنبيه") = vbYes Then DoCmd.TransferSpreadsheet acImport, 8, "Tabl_1", ImportFileName, True DoCmd.SetWarnings False '| DoCmd.OpenQuery "qry_Filled" '| <------- DoCmd.SetWarnings True '| MsgBox "تم استيراد البيانات بنجاح" Else MsgBox "تم إلغاء عملية الاستيراد " End If End Sub . أهلا بك أخي @jjafferr تم استيراد البيانات من ملف اكسل الذي يحوي جميع بيانات الطلاب من خلال القاعدة التي أرفقته أنت .. لكن لم يتم ملء الفراغات التي تخص كل طالب .. هل بمجرد استيراد البيانات يتم ملء الفراغات مباشرة ؟؟
ابوبسمله قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 9 دقائق مضت, ابا جودى said: وعليكم السلام ورحمة الله تعالى وبركاته ما شاء الله الله اكبـــــر زادكم الله علما و فهما ونغهكم بما علمكم انا البخور تبعى اليوم مغشوش 😭 واياكم ابا جودى لا البخور مش مغشوش بس هما مشغولين الحين مع صاحبهم الاساسى 😀 نسال الله ان يعلمنا ما ينفعنا وينفعنا بما علمنا انه هو العليم الحكيم وان ننفع به اخواننا فالله بارك الله فيكم اخوانى واساتذتى 1
عفرنس قام بنشر ديسمبر 23, 2020 الكاتب قام بنشر ديسمبر 23, 2020 الان, احمد الفلاحجي said: واياكم ابا جودى لا البخور مش مغشوش بس هما مشغولين الحين مع صاحبهم الاساسى 😀 نسال الله ان يعلمنا ما ينفعنا وينفعنا بما علمنا انه هو العليم الحكيم وان ننفع به اخواننا فالله بارك الله فيكم اخوانى واساتذتى حمدا لله على السلامة .. من طول الغيبات جاء بالغنايم 1
jjafferr قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 2 دقائق مضت, عفرنس said: تم استيراد البيانات من ملف اكسل اعطنا الملف وخلينا نشوف !! المفروض يشتغل على طول 🙂 جعفر
ابوبسمله قام بنشر ديسمبر 23, 2020 قام بنشر ديسمبر 23, 2020 1 دقيقه مضت, عفرنس said: حمدا لله على السلامة .. من طول الغيبات جاء بالغنايم الله يسلمك اخى فايز 💐 بس قلى ايه حكاية الاسم الجديد ده يا ابو عبد الرحمن
عفرنس قام بنشر ديسمبر 23, 2020 الكاتب قام بنشر ديسمبر 23, 2020 (معدل) 7 دقائق مضت, jjafferr said: اعطنا الملف وخلينا نشوف !! المفروض يشتغل على طول 🙂 جعفر تفضل أخي @jjafferr أرفقت مثال ثلاثة طلاب .. وإلا الملف يحوي 49190 صف CS_FinalMarksReport.xlsx تم تعديل ديسمبر 23, 2020 بواسطه عفرنس
أفضل إجابة jjafferr قام بنشر ديسمبر 23, 2020 أفضل إجابة قام بنشر ديسمبر 23, 2020 الحقول لم تكن Null وانما كانت فارغة !! استعمل هذا الاستعلام : . UPDATE Tabl_1 SET Tabl_1.A1 = f_A1(IIf(Len([A1] & "")=0,"|",[A1])), Tabl_1.A2 = f_A2(IIf(Len([A2] & "")=0,"|",[A2])), Tabl_1.A3 = f_A3(IIf(Len([A3] & "")=0,"|",[A3])), Tabl_1.A4 = f_A4(IIf(Len([A4] & "")=0,"|",[A4])), Tabl_1.A5 = f_A5(IIf(Len([A5] & "")=0,"|",[A5])); . جعفر 1312.Database2.accdb.zip 1
عفرنس قام بنشر ديسمبر 23, 2020 الكاتب قام بنشر ديسمبر 23, 2020 منذ ساعه, jjafferr said: الحقول لم تكن Null وانما كانت فارغة !! استعمل هذا الاستعلام : . UPDATE Tabl_1 SET Tabl_1.A1 = f_A1(IIf(Len([A1] & "")=0,"|",[A1])), Tabl_1.A2 = f_A2(IIf(Len([A2] & "")=0,"|",[A2])), Tabl_1.A3 = f_A3(IIf(Len([A3] & "")=0,"|",[A3])), Tabl_1.A4 = f_A4(IIf(Len([A4] & "")=0,"|",[A4])), Tabl_1.A5 = f_A5(IIf(Len([A5] & "")=0,"|",[A5])); . جعفر 1312.Database2.accdb.zip 51.61 kB · 1 download شكرالله لك أستاذنا الغالي @jjafferr >> هذا هو المطلوب بعينه ..
عفرنس قام بنشر ديسمبر 25, 2020 الكاتب قام بنشر ديسمبر 25, 2020 أخي @jjafferr في ٢٣/١٢/٢٠٢٠ at 20:49, عفرنس said: فضل أخي @jjafferr أرفقت مثال ثلاثة طلاب .. وإلا الملف يحوي 49190 صف CS_FinalMarksReport.xlsx 11.04 kB · 5 downloads لو أردت استيراد بيانات ملف اكسل السابق كما هو . من غير ما أحذف الأعمدة المدمجة ولا الترويسة مع مل الصفوف الفارغة لكل طالب . ما الذي يجب أن يتغير في الكود والأكسس ؟؟ ** هذا الملف مرفق CS_FinalMarksReport.xlsx
jjafferr قام بنشر ديسمبر 25, 2020 قام بنشر ديسمبر 25, 2020 وعليكم السلام 🙂 55 دقائق مضت, عفرنس said: لو أردت استيراد بيانات ملف اكسل السابق كما هو . من غير ما أحذف الأعمدة المدمجة ولا الترويسة مع مل الصفوف الفارغة لكل طالب . ما الذي يجب أن يتغير في الكود والأكسس ؟؟ انا رديت على سؤالك قبل ان تسأله انت (ونسيت اذكر الجدول المؤقت) : في ٢٣/١٢/٢٠٢٠ at 20:39, jjafferr said: استاذ فايز ، اذا تذكر الاكواد الطويلة اللي كتبتها لك عند استيراد اكثر من صفحة من ملفات الاكسس ، او اكثر من ملف اكسس ، هذه الاكواد كانت لتنظيف البيانات من السجلات الفارغة (مثل السجل الاول الذي به الاسم ، ثم اخذ الاسم وبقية البيانات من السجل الاول واتسجيله لبقية السجلات التابعة للطالب 🙂 جعفر
عفرنس قام بنشر ديسمبر 26, 2020 الكاتب قام بنشر ديسمبر 26, 2020 في ٢٥/١٢/٢٠٢٠ at 11:47, jjafferr said: استاذ فايز ، اذا تذكر الاكواد الطويلة اللي كتبتها لك عند استيراد اكثر من صفحة من ملفات الاكسس ، او اكثر من ملف اكسس ، هذه الاكواد كانت لتنظيف البيانات من السجلات الفارغة (مثل السجل الاول الذي به الاسم ، ثم اخذ الاسم وبقية البيانات من السجل الاول واتسجيله لبقية السجلات التابعة للطالب 🙂 هل تقصد هذا الكود ؟؟ Private Sub cmd_Selected_File_Click() ' import the Excel sheet '1 'Empty the temporary Table tabl1 CurrentDb.Execute ("Delete * From tabl1") '2 'import Sheets to table tabl1, one at a time Dim blnHasFieldNames As Boolean, blnEXCEL As Boolean, blnReadOnly As Boolean Dim lngCount As Long Dim objExcel As Object, objWorkbook As Object Dim colWorksheets As Collection Dim strPathFile As String, strTable As String Dim strPassword As String ' Establish an EXCEL application object On Error Resume Next Set objExcel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set objExcel = CreateObject("Excel.Application") blnEXCEL = True End If Err.Clear On Error GoTo 0 ' Change this next line to True if the first row in EXCEL worksheet ' has field names blnHasFieldNames = False strPathFile = Me.txtPath ' "C:\Filename.xls" ' Replace tablename with the real name of the table into which ' the data are to be imported strTable = "tabl1" '"tablename" ' Replace passwordtext with the real password; ' if there is no password, replace it with vbNullString constant ' (e.g., strPassword = vbNullString) strPassword = vbNullString '"passwordtext" blnReadOnly = True ' open EXCEL file in read-only mode ' Open the EXCEL file and read the worksheet names into a collection Set colWorksheets = New Collection Set objWorkbook = objExcel.Workbooks.Open(strPathFile, , blnReadOnly, , strPassword) For lngCount = 1 To objWorkbook.Worksheets.Count colWorksheets.Add objWorkbook.Worksheets(lngCount).Name Next lngCount ' Close the EXCEL file without saving the file, and clean up the EXCEL objects objWorkbook.Close False Set objWorkbook = Nothing If blnEXCEL = True Then objExcel.Quit Set objExcel = Nothing '3 ' Import the data from each worksheet into the table For lngCount = colWorksheets.Count To 1 Step -1 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames, colWorksheets(lngCount) & "$" '4 'append the data using the proper query DoCmd.SetWarnings False DoCmd.RunSQL "Delete * From Sheet" & lngCount DoCmd.OpenQuery "qry_" & lngCount DoCmd.SetWarnings True '5 'empty tbl_Sheets CurrentDb.Execute ("Delete * From tabl1") Next_lngCount: Next lngCount ' Delete the collection Set colWorksheets = Nothing ' Uncomment out the next code step if you want to delete the ' EXCEL file after it's been imported ' Kill strPathFile MsgBox "Êã ÇÓÊíÑÇÏ ÇáÈíÇäÇÊ ÈäÌÇÍ" End Sub
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.