كل الانشطه
- Today
-
kkhalifa1960 started following مساعدة في تعديل على زر امر لطباعة كل ملف لوحدة مرة واحدة
-
مساعدة في تعديل على زر امر لطباعة كل ملف لوحدة مرة واحدة
kkhalifa1960 replied to الميزار's topic in قسم الأكسيس Access
بعد اذن استاذي @ابوخليل تفضل استاذ @الميزار طلبك حسب مافهمت . لكن انا زودت فولدر بجوار القاعدة (MyBooks) للناتج بعد التصدير . افتح الملف بتحصل كل طالب بورقة منفصلة اليك المرفق . ووافني بالرد . Miraz.rar -
شكرا جزيلا أخي الفاضل وبارك الله فيك و أكثر الله من أمثالك أنت النقذ دائما وسباق
-
ابوخليل started following مساعدة في تعديل على زر امر لطباعة كل ملف لوحدة مرة واحدة
-
مساعدة في تعديل على زر امر لطباعة كل ملف لوحدة مرة واحدة
ابوخليل replied to الميزار's topic in قسم الأكسيس Access
عليكم السلام نعم يمكن ، ولكن لن يكون المعيار من خلال السجل الموجود في النموذج صحيح يمكن ان نعمل على مجموعة مصدر بيانات النموذج ، ولكن العمل على المصدر الاساسي ( جدول او استعلام ) افضل وأسرع هذه واحدة . الثانية : هل ستقوم دائما بطباعة او تصدير جميع السجلات ؟ احيانا قد نحتاج فقط لطباعة بطاقة طالب محدد او مجموعة محددة هذه مداخلة من اجل ان تستوعب ابعاد الفكرة ملحوظة بسيطة .. واضح ان البيانات تجلب من اكسل .. ومع ذلك بامكانك تسمية الحقول بأسماء تدل على المعنى بدلا من : f1 f2 f3 .. وهكذا -
ولا تنسى ان هذا الجدول لإعدادات البرنامج ، وليست بيانات للتداول بين المستخدمين ، لذا ، وحتى لو اضطررنا لتحديث معلومة معينة في الجدول (وهو واقع الحال هنا كذلك) ، فهذا لا يؤثر على عمل بقية المستخدمين ، فلكل مستخدم اعداداته ومزاجه في استخدام هذه الاعدادات. عند تحديث معلومة معينة (مثلا آخر مكان كان فيه كائن المربع Top و Left) : 1. عند تشغيل البرنامج ، انا آخذ هذه المعلومة من الجدول ، ويقوم البرنامج بعرضها على النموذج ، 2. اثناء عمل البرنامج ، واثناء تحريك المربع ، فانا آخذ هذه القيم من الكائن مباشرة ، 3. وعند الخروج من البرنامج ، يتم حفظ هذه المعلومة في الجدول. نعم لم اتطرق لكود التحديث ، وان شاء الله اضعه هنا حين اكتماله
-
تضدق أخي عمر أني كنت أبحث في اتجاه آخر ( عدد الفواتير ) لاحظ آخر وقوفي عند هذا التعديل :- Public Function ProcessFIFO() On Error GoTo HandleError Dim db As DAO.Database Dim tdf As DAO.TableDef Dim tableExists As Boolean Dim SQL As String Dim rst As DAO.Recordset Dim i As Long Dim currentBatch As Variant Dim newBatch As Variant Dim remainingSale As Double Dim deductQty As Double Dim profit As Double Dim salePrice As Double Dim purchasePrice As Double Dim salesInvoiceCount As Long Dim lastSalesInvID As String Dim specificItemSalesCount As Long Dim targetItemCode As Long specificItemSalesCount = 0 targetItemCode = 19 salesInvoiceCount = 0 lastSalesInvID = "" Set db = CurrentDb() tableExists = False For Each tdf In db.TableDefs If tdf.Name = "TblFifoStockLocal" Then tableExists = True Exit For End If Next tdf If Not tableExists Then SQL = "CREATE TABLE TblFifoStockLocal (" & _ "ID AUTOINCREMENT PRIMARY KEY, " & _ "InvID TEXT(50), " & _ "InvType LONG, " & _ "InvTypeName TEXT(50), " & _ "ItemCode LONG, " & _ "ItemName TEXT(100), " & _ "PurchasedQty Double, " & _ "SoldQty Double, " & _ "ReturnPurchasedQty Double, " & _ "ReturnSoldQty Double, " & _ "ActualBalance Double, " & _ "PurchasePrice DOUBLE, " & _ "SalePrice DOUBLE, " & _ "Profit DOUBLE, " & _ "CostOfGoodsSold DOUBLE, " & _ "TotalOfGoodsPurchased DOUBLE, " & _ "TransactionDate DATETIME);" db.Execute SQL, dbFailOnError db.TableDefs.Refresh Set tdf = db.TableDefs("TblFifoStockLocal") With tdf.Fields("ID") .Properties("Caption") = "SN" End With With tdf.Fields("InvID") .Properties("Caption") = "معرف الفاتورة" End With With tdf.Fields("InvType") .Properties("Caption") = "نوع الفاتورة" End With With tdf.Fields("InvTypeName") .Properties("Caption") = "اسم نوع الفاتورة" End With With tdf.Fields("ItemCode") .Properties("Caption") = "رمز الصنف" End With With tdf.Fields("ItemName") .Properties("Caption") = "اسم الصنف" End With With tdf.Fields("PurchasedQty") .Properties("Caption") = "الكمية المشتراة" End With With tdf.Fields("SoldQty") .Properties("Caption") = "الكمية المباعة" End With With tdf.Fields("ReturnPurchasedQty") .Properties("Caption") = "كمية مرتجع المشتريات" End With With tdf.Fields("ReturnSoldQty") .Properties("Caption") = "كمية مرتجع المبيعات" End With With tdf.Fields("ActualBalance") .Properties("Caption") = "الرصيد الفعلي" End With With tdf.Fields("PurchasePrice") .Properties("Caption") = "سعر الشراء" End With With tdf.Fields("SalePrice") .Properties("Caption") = "سعر البيع" End With With tdf.Fields("Profit") .Properties("Caption") = "الربح" End With With tdf.Fields("CostOfGoodsSold") .Properties("Caption") = "تكلفة البضاعة المباعة" End With With tdf.Fields("TotalOfGoodsPurchased") .Properties("Caption") = "إجمالي البضاعة المشتراة" End With With tdf.Fields("TransactionDate") .Properties("Caption") = "تاريخ العملية" End With Else db.Execute "DELETE FROM TblFifoStockLocal;", dbFailOnError End If tableExists = False For Each tdf In db.TableDefs If tdf.Name = "TblFifoRemaining" Then tableExists = True Exit For End If Next tdf If Not tableExists Then SQL = "CREATE TABLE TblFifoRemaining (" & _ "ID AUTOINCREMENT PRIMARY KEY, " & _ "ItemCode LONG, " & _ "InvID DOUBLE, " & _ "InvNo TEXT(50), " & _ "ItemName TEXT(100), " & _ "InvDate DATETIME, " & _ "RemainingQty Double, " & _ "PurchasePrice DOUBLE, " & _ "TotalCost DOUBLE);" db.Execute SQL, dbFailOnError db.TableDefs.Refresh Set tdf = db.TableDefs("TblFifoRemaining") With tdf.Fields("ID") .Properties("Caption") = "SN" End With With tdf.Fields("ItemCode") .Properties("Caption") = "رمز الصنف" End With With tdf.Fields("InvID") .Properties("Caption") = "معرف الفاتورة" End With With tdf.Fields("InvNo") .Properties("Caption") = "رقم الفاتورة" End With With tdf.Fields("ItemName") .Properties("Caption") = "اسم الصنف" End With With tdf.Fields("InvDate") .Properties("Caption") = "تاريخ الفاتورة" End With With tdf.Fields("RemainingQty") .Properties("Caption") = "الكمية المتبقية" End With With tdf.Fields("PurchasePrice") .Properties("Caption") = "سعر الشراء" End With With tdf.Fields("TotalCost") .Properties("Caption") = "التكلفة الإجمالية" End With Else db.Execute "DELETE FROM TblFifoRemaining;", dbFailOnError End If SQL = "SELECT TblInvHead.InvID, TblInvHead.InvDate, TblInvHead.InvNo, " & _ "TblInvHead.InvType, TblInvType.InvTypeName, TblInvDetails.ID, " & _ "TblInvDetails.LItemID, TblItems.ItemName, " & _ "TblInvDetails.Qty, TblInvDetails.PaPrice, TblInvDetails.SaPrice " & _ "FROM TblInvType INNER JOIN (TblInvHead INNER JOIN " & _ "(TblItems INNER JOIN TblInvDetails ON TblItems.ItemCode = TblInvDetails.LItemID) " & _ "ON TblInvHead.InvID = TblInvDetails.LInvID) " & _ "ON TblInvType.InvTypeID = TblInvHead.InvType " & _ "ORDER BY TblInvHead.InvDate, TblInvHead.InvType, TblInvDetails.LItemID;" Set rst = db.OpenRecordset(SQL, dbOpenDynaset) Dim fifoList As New Collection Dim dictBalance As Object Set dictBalance = CreateObject("Scripting.Dictionary") Do While Not rst.EOF If Not IsNull(rst!Qty) And rst!Qty > 0 Then Select Case rst!InvType Case 1 If Not IsNull(rst!LitemID) Then newBatch = Array(rst!LitemID, rst!ItemName, rst!Qty, rst!PaPrice, rst!InvDate, rst!InvID, rst!InvNo) fifoList.Add newBatch If Not dictBalance.Exists(rst!LitemID) Then dictBalance.Add rst!LitemID, 0 End If dictBalance(rst!LitemID) = dictBalance(rst!LitemID) + rst!Qty db.Execute "INSERT INTO TblFifoStockLocal (InvID,InvType,InvTypeName,ItemCode,ItemName," & _ "PurchasedQty,ActualBalance,PurchasePrice,TransactionDate) VALUES ('" & _ rst!InvID & "',1,'مشتريات'," & rst!LitemID & ",'" & _ Replace(rst!ItemName, "'", "''") & "'," & rst!Qty & "," & _ dictBalance(rst!LitemID) & "," & rst!PaPrice & ",#" & _ Format(rst!InvDate, "mm/dd/yyyy") & "#)", dbFailOnError End If Case 2 If lastSalesInvID <> rst!InvID Then salesInvoiceCount = salesInvoiceCount + 1 lastSalesInvID = rst!InvID End If remainingSale = rst!Qty For i = 1 To fifoList.Count If fifoList(i)(0) = rst!LitemID Then currentBatch = fifoList(i) If currentBatch(2) > 0 Then deductQty = IIf(currentBatch(2) >= remainingSale, remainingSale, currentBatch(2)) salePrice = Nz(rst!SaPrice, 0) purchasePrice = Nz(currentBatch(3), 0) profit = (salePrice - purchasePrice) * deductQty currentBatch(2) = currentBatch(2) - deductQty If Not dictBalance.Exists(rst!LitemID) Then dictBalance.Add rst!LitemID, 0 End If dictBalance(rst!LitemID) = dictBalance(rst!LitemID) - deductQty db.Execute "INSERT INTO TblFifoStockLocal (InvID,InvType,InvTypeName,ItemCode," & _ "ItemName,SoldQty,ActualBalance,PurchasePrice,SalePrice,Profit," & _ "TransactionDate) VALUES ('" & rst!InvID & "',2,'مبيعات'," & _ rst!LitemID & ",'" & Replace(rst!ItemName, "'", "''") & "'," & _ deductQty & "," & dictBalance(rst!LitemID) & "," & _ purchasePrice & "," & salePrice & "," & profit & ",#" & _ Format(rst!InvDate, "mm/dd/yyyy") & "#)", dbFailOnError remainingSale = remainingSale - deductQty If remainingSale = 0 Then Exit For End If End If Next i Case 3 If Not dictBalance.Exists(rst!LitemID) Then dictBalance.Add rst!LitemID, 0 End If dictBalance(rst!LitemID) = dictBalance(rst!LitemID) - rst!Qty db.Execute "INSERT INTO TblFifoStockLocal (InvID,InvType,InvTypeName,ItemCode,ItemName," & _ "ReturnPurchasedQty,ActualBalance,PurchasePrice,TransactionDate) VALUES ('" & _ rst!InvID & "',3,'مرتجع مشتريات'," & rst!LitemID & ",'" & _ Replace(rst!ItemName, "'", "''") & "'," & rst!Qty & "," & _ dictBalance(rst!LitemID) & "," & rst!PaPrice & ",#" & _ Format(rst!InvDate, "mm/dd/yyyy") & "#)", dbFailOnError Case 4 If Not dictBalance.Exists(rst!LitemID) Then dictBalance.Add rst!LitemID, 0 End If dictBalance(rst!LitemID) = dictBalance(rst!LitemID) + rst!Qty db.Execute "INSERT INTO TblFifoStockLocal (InvID,InvType,InvTypeName,ItemCode,ItemName," & _ "ReturnSoldQty,ActualBalance,SalePrice,TransactionDate) VALUES ('" & _ rst!InvID & "',4,'مرتجع مبيعات'," & rst!LitemID & ",'" & _ Replace(rst!ItemName, "'", "''") & "'," & rst!Qty & "," & _ dictBalance(rst!LitemID) & "," & rst!SaPrice & ",#" & _ Format(rst!InvDate, "mm/dd/yyyy") & "#)", dbFailOnError End Select End If rst.MoveNext Loop If fifoList.Count > 0 Then Dim insertCount As Long insertCount = 0 For i = 1 To fifoList.Count currentBatch = fifoList(i) If IsArray(currentBatch) Then If IsNumeric(currentBatch(2)) Then If CDbl(currentBatch(2)) > 0 Then db.Execute "INSERT INTO TblFifoRemaining (ItemCode,InvID,InvNo,ItemName,InvDate," & _ "RemainingQty,PurchasePrice,TotalCost) VALUES (" & _ currentBatch(0) & "," & currentBatch(5) & ",'" & currentBatch(6) & "','" & _ Replace(currentBatch(1), "'", "''") & "',#" & Format(currentBatch(4), "mm/dd/yyyy") & "#," & _ currentBatch(2) & "," & currentBatch(3) & "," & (currentBatch(2) * currentBatch(3)) & ")", dbFailOnError insertCount = insertCount + 1 End If End If End If Next i End If MsgBox "إجمالي عدد فواتير المبيعات: " & salesInvoiceCount, vbInformation + vbMsgBoxRight, "" rst.Close Set rst = Nothing Set db = Nothing Exit Function HandleError: MsgBox "حدث خطأ: " & Err.Description, vbCritical + vbMsgBoxRight, "" If Not rst Is Nothing Then rst.Close Set rst = Nothing Set db = Nothing End Function طبعاً كنت حذفت أجزاء كانت بتأخر شغل الإحصاء ، ولكني للأسف لم استدل الى ما هو سبب المشكلة ,, ( البحث في اتجاه مخالف جعلني أدور في حلقة مفرغة )
-
الخلل ان هناك سجلات مفقوده (لاحظه فى الصورة هنا) من المفترض ان الكود يدور على جميع السجلات فى عمليات البيع لكنه لا يسجل عملية البيع لبعض الاصناف (مجنون شكله ^_^) لاحظ هنا حسب الاستعلام عن الكميات بالطريقة المباشرة فى الاستعلامات اعطاني ان كمية البيع هي 190 لكن فى الكود اعطاني 112 اين باقي الكمية ؟ هذا هو الخلل
-
وعليكم السلام ورخمة الله وبركاته اليك الملف حسب فهمى لطلبك الحساب.xlsx
-
وعليكم السلام اخوي موسى شكرا على مرورك وملاحظاتك 🙂 1. كلامك صحيح بالنسبة الى معظم البرامج ، ولكن البرنامج الذي اعمل عليه هو يعمل كبرنامج مستقل ، فالبيانات محتاج لقراءتها مرة واحدة عند فتح البرنامج. 2. البرنامج لتصوير الموظفين (قريبا سأعمل موضوع خاص به ان شاء الله) ، فيجب ان اجعله يعمل مع اعدادات المؤسسة (المجلدات) ، ومكان حفظ الصور لا علاقة لها بمجلد البرنامج. وبما انني لم انتهي 100% من البرنامج ، فلن استغني عن افكاركم 🙂
-
الميزار started following مساعدة في تعديل على زر امر لطباعة كل ملف لوحدة مرة واحدة
-
Moosak started following حقول اعدادات البرنامج
-
وعليكم السلام ورحمة الله وبركاته 🙂 خلاصة تجارب الخبراء .. هي كنوز لنا على طبق من ذهب 😊🌹 عندي ملاحظتين في بالي ( أفكار لا تزيد ولا تنقص من روعة الموضوع )😁 : 1- موضوع استخدام ال TempVars جميل جدا للسبب الذي ذكرته أنت (إفراغ الذاكرة عند حدوث خطأ ) ، ولكن كمجرد فضفضة .. موضوع استدعاء البيانات من الجداول مرة واحدة عند تشغيل البرنامج قد يؤثر على أنه لو تم تحديث البيانات بعد التشغيل فهذا لن يحدث البيانات التي في الذاكرة إلا إن تم تشغيل أكواد تخزين البيانات في حواصل المتغيرات مجددا ... وأضنك منتبه لهذه النقطة 🙂👌.. ويسترعي الانتباه أيضا إلى أنك حتى لو عملت لها تحديث بعد تغيير البيانات فإنها ستتحدث عندك في جهازك وقد لا تتحدث عند المستخدمين الآخرين الذين شغلوا أجهزتهم قبلك 😅🖐️ ... 2- روابط مواقع حفظ الملفات (Files Paths) عندما تكتب كاملة كما هي مع اسم القرص ( \:C أو \:D ) مثلا تجعل مواقع الملفات غير مقرؤة في حال تم نقل موقع المشروع .. لذلك يفضل أن يتم تخزين موقع هذه الملفات من قاعدة البيانات (سواء كانت تتبع ال FE أو ال BE ) والكود يكمل باقي الرابط بالمواقع المناسب .. مثال على ما أقصده لو كان الشعار في الرابط التالي : C:\Project Folder\Project BE\Images\LOGOs\CompanyLogo.PNG فأنت ستحتفظ في الجدول بالجزء البرتقالي فقط وتترك الباقي للبرنامج ليكمله .. وسلامتكم 🙂🌹
-
السلام عليكم كيف يمكن عمل التالي:- 1- كيف يمكن عمل فائمة منسدله الحساب ( حساب 1 وحساب 2 وحساب 3) 2- كيف يمكن ان يتم جمع كل حساب في الخانة الخاصة بة حيث يمكن ان يكون اكثر من 100 ركود او بيان( يعني ممكن ان يتكرة اكثر من العدد الموجود في الملف الايضاح غفط) الحساب.xlsx
-
برجاء إدراج ملف للعمل عليه
-
وعليكم السلام و رحمة الله و بركاته أخي الكريم الطلب غير واضح لأن الطلب الأول و الثاني نفس القيمة بالضبط يساوي 250000 مع العلم أنه لاتوجد أي خلية بها هذا الرقم
-
عبدالخالق started following تغيير لون التكست بوكس
-
كيف يمكن تغيير حقل تكست بكس تاريخ الى لون احمر في حال تجاوز تاريخ اليوم التاريخ المسجل في التكست بوكس؟
-
اخوي جعفر .. ما دمت دخلت على الخط لو تتكرم بفتح موضوع جديد لمناقشة التالي : البحث عن أسهل طريقة ( وبأسهل الادوات المساعدة ) لتطبيق الانتقال بين دفعات الشراء آليا من دون تدخل المستخدم ( ما يدخل اولا يخرج أولا ) نريد في فاتورة البيع او تفاصيلها ان يظهر الصنف فقط .. اما مسألة اخراج الأول ثم الذي يليه يتكفل به اكسس من دون تدخل يدوي . هذه النقطة غالبا لا يتم التطرق لها أو لنقل لم تعطى حقها من الشرح والتفصيل _ فهي بحاجة الى التطبيق الاحترافي الصحيح
-
السلام عليكم بالاشارة الى الموضوع التالي ، والطرق التي تمت الاشارة اليها : في المشاريع اللي احتاج لها اعدادات ، كنت استعمل جدول بسطر واحد ، ولكن في احد مشاريعي ، هذه الاعدادات وصلت الى 21 ولا تزال في زيادة ، فعملت تغيير في الجدول ، واصبح هناك سجل خاص لكل واحدة من الاعدادات: . . وهذا شكل النموذج المستمر للمستخدم: . وبياناته : . ونعرف انه في النموذج المستمر ، لا نستطيع التحكم بشكل حقل دون آخر (إلا عن طريق التنسيق الشرطي ، وعن طريق كود خاص يخص مربع الزر Command button) ، لذلك كان من المهم ان اكتب عبارة معين في اسم الحقل حتى اميزه عن الآخرين (او ان اعمل حقل اكتب فيه طريقة التعامل مع هذا السجل (استفيد منه في التنسيق الشرطي مثلا)) ، لذا نرى ان زر (command button) جميع الحقول التي بحاجة الى اختيار مجلد لها ، بدأ اسم الحقل بالكلمة Path (طبعا هذا مثال) ، وعليه استطعت ان اخفي الزر لبقية السجلات هكذا: Private Sub Detail_Paint() If Left(Me.sName, 4) <> "Path" Then Me.cmd_Path.Transparent = True Else Me.cmd_Path.Transparent = False End If End Sub وعند فتح البرنامج ، اقوم بتشغيل هذه الدالة حتى يتم استيراد البيانات من الجدول الى ذاكرة اكسس : Option Compare Database Option Explicit ' '- tbl_Settings contain the defaults for this program, '- instead of having all these fields in one record, '- we have records of these fields sName, sValue, sDataType '- so here we deal with these values, read/write ' '- jjafferr '- v1. 17/04/2025 ' Function tbl_Settings_Data() '- load the values for the table to TempVars, for each field Dim rstS As DAO.Recordset Dim RC As Long, i As Long Set rstS = CurrentDb.OpenRecordset("Select * From tbl_Settings") rstS.MoveLast: rstS.MoveFirst: RC = rstS.RecordCount For i = 1 To RC '- clean the old values of THIS record TempVars.Remove (rstS!sName) '- since TempVars is Variant, lets set the actual field values based on the field sDataType If rstS!sDataType = "Number" Or rstS!sDataType = "Yes/No" Then TempVars.Add (rstS!sName), CLng(rstS!sValue) ElseIf rstS!sDataType = "Text" Then TempVars.Add (rstS!sName), CStr(rstS!sValue) ElseIf rstS!sDataType = "Date/Time" Then TempVars.Add (rstS!sName), CDate(rstS!sValue) End If rstS.MoveNext Next i rstS.Close: Set rstS = Nothing End Function Function ListTempVars() '- list all TemVars values in this Database Dim i As Long For i = 0 To TempVars.Count - 1 Debug.Print TempVars(i).Name, TempVars(i).Value, VarType(TempVars(i)) Next i End Function . وعليه ، وعند طلب اي قيمة في البرنامج ، استعمل: اسم الحقل في الجدول Path_Employees_Pic_Folder طريقة طلب القيمة TempVars!Path_Employees_Pic_Folder طريقة استعماله Me.Picture = TempVars!Path_Employees_Pic_Folder & Me.Employee_ID & ".jpg" . السبب الذي جعلني استخدم TempVars يدلا عن الاكواد العامة او الدوال الخاصة هو ، اني اخذ البيانات من الجدول مرة واحدة فقط عند تشغيل البرنامج ، وهذه البيانات تبقى في ذاكرة البرنامج حتى عند استلام رسالة خطأ (عند ظهور رسالة الخطأ ، يقوم اكسس بحذف جميع المتغيرات التي بذاكرنه ، ما عدا بيانات TempVars) ، وبكل بساطة يمكننا قراءة قيمتها من نافذة immediate window في صفحة الكود هكذا: . رجاء ملاحظة ان علامة الاستفهام يجب ان تكون بالانجليزي. جعفر
-
السلام عليكم و رحمة الله وبركاته هذه حافظة مرتبات الكترونية أريد تقسيمها على ثلاثة أجزاء كالتالي الأول يساوي 250,000 بدون زيادة او نقصان الثاني يساوي 250,000 بدون زيادة او نقصان الثالث باقي القيمة لايهم الاحتفاظ بترتيب الصفوف و شكراحافظة إلكترونية مصارف التجاري052025.xls
-
هذا مثال : قم بنقل الاستعلام الى برنامجك ثم شغله بعد التحديث والتأكد قم بحذفه فقد انتهت مهمته وعدل يدويا في نموذج التحكم بالدرجات Database1.rar
-
استدراك التعديل في جدول التحكم يسير اما التعديل في جدول الدرجات فيمكنك عمل استعلام تحصر فيه المادة والصفوف المستهدفة كمعايير .. يظهر فيه الحقلان فقط ثم يمكنك بعدها تحويله الى استعلام تحديث ليتم التحديث بتشغيل الاستعلام