نجوم المشاركات
Popular Content
Showing content with the highest reputation on 01/20/22 in مشاركات
-
السلام عليكم ,, الاخوة الافاضل , موضوعنا اليوم فى نطاق الاستعلامات وكما بالعنوان سوف نتطرق الى الاستعلامات الفرعية وطريقة استخدامها وامثلة عملية عليها واستخدامها كمعايير فى الاستعلامات الرئيسية. وسأقوم باستخدام النصوص فى الجزء الاغلب من الشرح تطبيقا لطلب استاذنا ابو خليل . بالنسبة للمبتدئين امثالى توضيح بسيط : ماهى المعايير ؟ المعايير هى شرط او اكثر بناءً عليه يتم استدعاء البيانات من الجداول وفى الرابط التالى الكثير من المعلومات والامثلة لكافة انواع الحقول (نص - رقمى - وقت وتاريخ الخ...) https://support.microsoft.com/en-us/office/examples-of-query-criteria-3197228c-8684-4552-ac03-aba746fb29d8 نعود لموضوعنا الاستعلامات الفرعية SubQueries , ماهى ؟ كما يوجد نموذج فرعى وتقرير فرعى هناك استعلام فرعى يتم استخدامه داخل الاستعلامات الاساسية بهدف الحصول على نتيجة يصعب الحصول عليها بالطرق العادية , ولها الكثير من الانواع سأتطرق لما استخدمته فعلياً حتى الآن ونأمل ان احد الاساتذة يثرى الموضوع بمشاركات اخرى لتطبيقات عملية أخرى . جملة الSQL : بالنسبة لطريقة كتابتها لا تختلف كثيرا عن كتابة الاستعلام العادى ويمكن كتابتها بسهولة عن طريق انشاء استعلام بالطريقة العادية ونسخ جملة الSQL الخاصة به مع تطبيق بعض الملاحظات التى سيتم ذكرها فى الامثلة التالية . نبدأ بالمثال الأول : على افتراض ان عندى مجموعة البيانات التالية مجموعة من المنتجات واسعارها : Product UnitPrice Banana $1.00 Choclate$5.00 Juice $3.00 Mango $7.00 Milk $4.00 Water $3.75 وأريد ان اعرف ماهى المنتجات التى تتساوى فى السعر او سعرها اقل من سعر منتج Milk , فى الطريقة العادية سيتم وضع معيار تحت حقل السعر ويكتب فيه <=4 وهو سعر المنتج , ماذا لو لم تعرف سعر المنتج الحالى او السعر يتغير باستمرار ويصعب تتبع التغييرات بالتالى يمكن عمل استعلام يقوم بالحصول على سعر المنتج المطلوب وبالتالى فى حالة تغير السعر نتيجة الاستعلام تتغير معه دون تدخل منك , انظر الى الاستعلام التالى: SELECT TblProducts.Product, TblProducts.UnitPrice FROM TblProducts; هذا استعلام اساسى يقوم باستدعاء المنتجات واسعارها بدون معايير , الق نظرة على الاستعلام التالى : SELECT TblProducts.Product, TblProducts.UnitPrice FROM TblProducts WHERE (((TblProducts.UnitPrice)<=(SELECT TblProducts.[UnitPrice] FROM TblProducts Where TblProducts.[Product]="Milk"))); وهذه صورته فى وضع التصميم لو تلاحظ تم اضافة معيار تحت السعر عبارة عن استعلام آخر مهمته هوا الحصول على سعر المنتج Milk كما لو انك كتبت بدلا منه <=4 , وبالتالى نتيجته ستكون عرض كافة المنتجات التى سعرها يقل عن او يساوى سعر المنتج Milk انظر الى النتيجة : Product UnitPrice Water $3.75 Juice $3.00 Milk $4.00 Banana $1.00 نلاحظ عرض المنتجات التى يكون سعرها اقل من او يساوى 4 (وهى نتيجة الاستعلام الفرعى) . ملاحظات على الاستعلام : الاستعلام الفرعى يجب ان يكون بين قوسين (). من المعلوم ان اى جملة SQL تنتهى بفاصلة منقوطة ; وهى الطريقة التى تخبر بها قاعدة البيانات بأن الجملة قد انتهت, ولكن لو لاحظت الاستعلام الفرعى لا يحتوى على فاصلة منقوطة بين الاقواس ولكن تكتفى بغلق الجملة الاساسية فقط وليس الفرعية. الاستعلام الفرعى يحضر نتيجة واحدة فقط (على الاقل الاستعلامات التى استخدمتها فعلياً). فى حالة وجود مسافة فى اسم الحقل مثلا Unit Price يجب تضمينه داخل اقواس Brackets []. يتبع فى رد يحتوى على مثال آخر . مرفق قاعدة بها جميع الامثلة المشروحة فى الموضوع ,, نسألكم الدعاء بصلاح الحال . Amr - SubQueries.accdb3 points
-
السلام عليكم 🙂 عندما لا توجد علاقات في الاستعلام ، وبدون علاقة بين الجداول (او الاستعلامات) في الاستعلام: 1. فالاستعلام يعطيك نتيجة كل جدول بطريقة مستقلة ، ثم 2. عدد سجلات الاستعلام تكون: عدد سجلات الجدول الاول X عدد سجلات الجدول الثاني X عدد سجلات الجدول الثالث X عدد سجلات الجدول الرابع .... مثلا ، حول استعلام 1_infoEmp الى استعلام عادي ، فيكون . والنتيجة 254,464 سجل : . اذا افترضنا عندك 3 سجلات في كل جدول ، فالاستعلام يعرض السجلات حسب ترتيب تسلسل هذه الجداول في الاستعلام ، ويبدأ من الجهة اللي فيها مسميات . ويعرض النتائج هكذا : ولاحظ عدد السجلات : 3x3x3x3 فالعدد يكون 81 سجل . جعفر3 points
-
تفضل يا سيدي: النموذج يظهر لك جميع البيانات ، ولكن يجب ان تكون متصل بالانترنت . كود حدث "عند النقر" على الزر في النموذج : Private Sub cmd_IP_Country_Click() Dim city_IP As String Dim public_IP As String Me.my_PC_MAC = GetMyMACAddress Me.my_Local_IP = GetMyLocalIP Me.my_country_IP = IPcountry(city_IP, public_IP) Me.my_country_IP = DLookup("[Country_A]", "tbl_Countries_Currency_Codes", "Country_Code_E2='" & Me.my_country_IP & "'") Me.my_Public_IP = public_IP Me.my_city_IP = city_IP End Sub . والوحدات النمطية التي تقوم بالعمل: Option Compare Database Option Explicit '---------------------------------------------------------------------------- 'This module contains 3 functions for determing the public IP, the local IP 'and the MAC address of the computer that runs those functions. ' 'Written By: Christos Samaras 'Date: 22/11/2014 'E-mail: xristos.samaras@gmail.com 'Site: http://www.myengineeringworld.net '---------------------------------------------------------------------------- Function GetMyPublicIP() As String Dim HttpRequest As Object On Error Resume Next 'Create the XMLHttpRequest object. Set HttpRequest = CreateObject("MSXML2.XMLHTTP") 'Check if the object was created. If Err.Number <> 0 Then 'Return error message. GetMyPublicIP = "Could not create the XMLHttpRequest object!" 'Release the object and exit. Set HttpRequest = Nothing Exit Function End If On Error GoTo 0 'Create the request - no special parameters required. HttpRequest.Open "GET", "http://myip.dnsomatic.com", False 'Send the request to the site. HttpRequest.send 'Return the result of the request (the IP string). GetMyPublicIP = HttpRequest.responseText End Function Function GetMyLocalIP() As String 'Declaring the necessary variables. Dim strComputer As String Dim objWMIService As Object Dim colItems As Object Dim objItem As Object Dim myIPAddress As String 'Set the computer. strComputer = "." 'The root\cimv2 namespace is used to access the Win32_NetworkAdapterConfiguration class. Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 'A select query is used to get a collection of IP addresses from the network adapters that have the property IPEnabled equal to true. Set colItems = objWMIService.ExecQuery("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") 'Loop through all the objects of the collection and return the first non-empty IP. For Each objItem In colItems If Not IsNull(objItem.IPAddress) Then myIPAddress = Trim(objItem.IPAddress(0)) Exit For Next 'Return the IP string. GetMyLocalIP = myIPAddress End Function Function GetMyMACAddress() As String 'Declaring the necessary variables. Dim strComputer As String Dim objWMIService As Object Dim colItems As Object Dim objItem As Object Dim myMACAddress As String 'Set the computer. strComputer = "." 'The root\cimv2 namespace is used to access the Win32_NetworkAdapterConfiguration class. Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 'A select query is used to get a collection of network adapters that have the property IPEnabled equal to true. Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") 'Loop through all the collection of adapters and return the MAC address of the first adapter that has a non-empty IP. For Each objItem In colItems If Not IsNull(objItem.IPAddress) Then myMACAddress = objItem.MACAddress Exit For Next 'Return the IP string. GetMyMACAddress = myMACAddress End Function Function IPcountry(IPcity As String, IPPublic As String) As String ' 'from: https://www.mrexcel.com/board/threads/need-to-get-location-based-on-ip-address-in-vba.1115981/ 'edited by jjafferr 20-01-22 'we don't send any values when calling the Function, but return 3 values ' Dim http As Object Dim xmlDoc As MSXML2.DOMDocument60 Dim strURL As String ' requires reference to Microsoft XML 6.0 IPPublic = GetMyPublicIP strURL = "https://ipapi.co/" & IPPublic & "/xml/" Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", strURL, False http.send Set xmlDoc = New MSXML2.DOMDocument60 xmlDoc.LoadXML http.responseText 'Debug.Print http.responseText IPcity = xmlDoc.SelectSingleNode("//root/city").Text IPcountry = xmlDoc.SelectSingleNode("//root/country").Text End Function . والدالة الاخيرة هي التي يتم مناداتها من النموذج ، اضفت شيء فيه لإرجاع البيانات للنموذج ، فعند مناداة الدالة ، لا نرسل لها اي قيمة ، وانما هي تُرجع 3 قيم للنموذج ، فالطريقة لطيفة للنظر فيها 🙂 اسم الدولة التي تُرجعه الدالة هو اختصار اسم الدولة ، فأرفقت احد جداول من احد برامجي فيه بقية بيانات الدوله ، وبقية الدول (الجدول عمره حوالي 8 سنوات ، فقد تكون هناك دول جديدة نشأة من وقتها ، فعليه ، يجب عليك تحديث الجدول 🙂) جعفر 1452.IP Country.accdb.zip3 points
-
=IF(B3="غ","ضعيف",IF(B3>=42,"ممتاز",IF(B3>=36,"جيد جدا",IF(B3>=25,"جيد","ضعيف"))))2 points
-
استخدامك لدالة If فيه مشكلة لأن هناك صورتين من دالة If الصورة الاولى : If condition Then statements1(التعليمات المنفذة في حال تحقق الشرط ) Else statements2(التعليمات المنفذة في حال عدم تحقق الشرط) End If مثال If grade >= 50 Then Text1 ="ناجح" Else Text1 ="راسب" End If الصورة الثانية If condition1 Then statements1( التعليمات المنفذة في حال تحقق الشرط الأول) ELSEIF condition2 THEN statements2(التعليمات المنفذة في حال عدم تحقق الشرط الأول و تحقق الشرط الثاني) ELSE statements2(التعليمات المنفذة في حال عدم تحقق جميع الشروط السابقة) End If مثال If grade >= 90 Then Text1 ="ممتاز" ElseIf grade >= 80 Then Text1 ="جيد جدا" ElseIf grade >= 70 Then Text1 ="جيد" ElseIf grade >= 60 Then Text1 ="مقبول" Else Text1 ="راسب" End If انتا قمت بدمج الطريقتين فى واحدة واستخدمت Else اكثر من مرة فى حين انك تستخدم ElseIf بالفعل المرجع والامثلة من هذا الموضوع ابحث فى نفس الموضوع عن Select Case واستخدمها قى حالتك ستكون اسهل من If فى اعتقادى . بالتوفيق2 points
-
Not so clear you have to put some of the expected results and some of odd and evene numbers =SUM((B1/2)*1.4,(B1/2)*2.5)2 points
-
Sub Test() Dim x, r As Long, i As Integer, ii As Integer Application.ScreenUpdating = False For r = 2 To Cells(Rows.Count, 1).End(xlUp).Row x = Split(Application.Trim(Cells(r, 2).Value)) ii = 0 For i = LBound(x) To UBound(x) If x(i) <> "" Then Cells(r, 3 + ii).Value = Val(x(i)): ii = ii + 1 Next i x = Split(Cells(r, 5).Value, Space(2)) ii = 0 For i = LBound(x) To UBound(x) If x(i) <> "" Then Cells(r, 6 + ii).Value = Trim(x(i)): ii = ii + 1 Next i Next r Application.ScreenUpdating = True End Sub2 points
-
اخى الكريم @محمد يوسف ابو يوسف كيف تجعل اجابتى افضل اجابه وما هى الا ان وضعت لك الكود الخاص بالاستاذ @lionheart فاجابته هى التى تكون افضل اجابه وليس اجابتى اعطى كل زى حق حقه اخى الكريم2 points
-
2 points
-
مثال آخر شبيه بالسابق : فى هذا المثال افترضت ان المنتج يتم تحميله على مراحل فى نفس الطلبية ومطلوب انى اعرف اول تاريخ تسليم للمنتج داخل طلبية ما أو العكس اخر تاريخ تم تسليم المنتج للعميل فيه , انظر الاستعلام التالى QryOrdersFollowUp(Dates) : SELECT QryOrders.OrderID, QryOrders.Client, QryOrders.Product, QryOrders.OrderQty, Nz((select Sum(QtySold) From TblSales AS T Where T.Product = QryOrders.[Product] And T.Client = QryOrders.[Client] And (T.zDate >= QryOrders.[StartFrom] And T.zDate <= QryOrders.[EndsOn])),0) AS QtyDelivered, [OrderQty]-[QtyDelivered] AS Remains, Nz((select Min(Zdate) From TblSales AS T Where T.Product = QryOrders.[Product] And T.Client = QryOrders.[Client] And (T.zDate >= QryOrders.[StartFrom] And T.zDate <= QryOrders.[EndsOn])),"None") AS FirstDelivery, Nz((select Max(Zdate) From TblSales AS T Where T.Product = QryOrders.[Product] And T.Client = QryOrders.[Client] And (T.zDate >= QryOrders.[StartFrom] And T.zDate <= QryOrders.[EndsOn])),"None") AS LastDelivery FROM QryOrders; والنتيجة كالتالى : لاحظ انه لا يوجد مشكلة فى حالة عدم وجود تسليمات للمنتج فى طلبية ما لعميل ما سيتم كتابة None مكان التاريخ . وهناك الكثير من الامثلة ولكن هذا ما طبقته بالفعل وتأكدت من نتائجه .. اتمنى المشاركة من الاساتذة الكبار وخاصة استاذنا @jjafferr له صولات وجولات فى هذا المضمار 😅 انتهى الشرح دمتم بخير .2 points
-
-- الوقت والتاريخ تاريخ آخر يوم فى الشهر المحدد LastDayInMonth(01/01/2022) Public Function LastDayInMonth(ByVal AnyDate As Date) As Date LastDayInMonth = DateSerial(Year(AnyDate), Month(AnyDate) + 1, 0) End Function ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- عدد ايام الشهر المحددد NumofDays(01/01/2022) Public Function NumofDays(ByVal AnyDate As Date) NumofDays = Day(DateSerial(Year(AnyDate), Month(AnyDate) + 1, 0)) End Function2 points
-
السلام عليكم ورحمة الله بارك الله فيكم جميعا ردودكم الطيبة تخجل تواضعى2 points
-
السلام عليكم ورحمة الله معذرة لانى فهمت الموضوع خطأا ان العمل على خلية واحدة و لاتى وجدت الامر مختلف وصعب فقررت ان ارسل لك الملف ذاته بعد ان تم عمل اللازم تم اضافة عمود مساعد بورقة البدلاء لتسهيل عمل المعادلة اليك الملف شيت تحضير -111 (2).xlsm2 points
-
السلام عليكم ورحمة الله استخدم الكود التالى Sub DelRows() Dim ws As Worksheet, LR As Long Dim x As Integer, i As Long Set ws = Sheets("Sheet1") LR = ws.Range("B" & Rows.Count).End(3).Row For i = LR To 2 Step -1 x = WorksheetFunction.CountIf(ws.Range(Cells(2, 4), _ Cells(i, 4)), Cells(i, 4)) If x > 1 Then ws.Range("D" & i).EntireRow.Rows.Delete End If Next End Sub2 points
-
Sub Test() Dim r As Long Application.ScreenUpdating = False For r = 5 To Cells(Rows.Count, 3).End(xlUp).Row Cells(r, 37).Value = JoinIf("-", Range("F4:AJ4"), Range("F" & r & ":AJ" & r)) Next r Application.ScreenUpdating = True End Sub Function JoinIf(del As String, rngJoin As Range, rngCrit As Range) As String Dim c As Range, n As Long For Each c In rngCrit n = n + 1 If c <> Empty And rngJoin.Cells(n) <> "" Then JoinIf = JoinIf & del & Day(rngJoin.Cells(n)) Next c JoinIf = "'" & Mid(JoinIf, Len(del) + 1, Len(JoinIf)) End Function2 points
-
يمكنكم استخدام الروتين الاتى لإزالة اى حركات تشكيل ويتم استدعاءه كم خلال StripSpCharsOnly("النص") 'OR in Forms StripSpCharsOnly(txtName) 'or in Query StripSpCharsOnly(FildeName) Public Function StripSpCharsOnly(strString As String) As String Dim lngCtr As Long Dim intChar As Integer If strString & "" = "" Then Exit Function For lngCtr = 1 To Len(strString) intChar = AscW(Mid(strString, lngCtr, 1)) If intChar = 32 Or _ intChar >= 1569 And intChar <= 1594 Or _ intChar >= 1601 And intChar <= 1610 Or _ intChar >= 1648 And intChar <= 1649 Then StripSpCharsOnly = StripSpCharsOnly & ChrW(intChar) End If Next lngCtr StripSpCharsOnly = Trim(StripSpCharsOnly) End Function مثال فى المرفق : Strip Special Characters.zip1 point
-
1 point
-
1 point
-
1 point
-
القيمة يتم جلبها بمجرد كتابة الرقم 1 والنص A1 نمثلا بدون الضغط علي الزر جرب ان تكتب بالحقول بدون ان تضغط علي الزر1 point
-
إذا جرب هذا التعديل ووافني بالنتائج وهذا هو الكود بعد التعديل Private Sub B_1_Change() If Me.B_1.Text = ChrW(1584) & ChrW(1603) & ChrW(1585) Then FrameSx = 1 ElseIf B_1.Text = ChrW(1571) & ChrW(1606) & ChrW(1579) & ChrW(1610) Then FrameSx = 2 ElseIf B_1.Text = ChrW(1575) & ChrW(1606) & ChrW(1579) & ChrW(1610) Then FrameSx = 2 Else FrameSx = 0 End If End Sub test1.accdb1 point
-
ابدا ليس هناك اي غلبة ... نحن في الخدمة ... اولا اضفنا حقل شيك بوكس في جدول اسماء الطلاب ثانيا جعلنا مصدر الشيك بوكس الموجود في النموذج هو نفس الحقل الذي انشأناه في الجدول المذكور السابق ثالثا انشأنا زر جديد وادرجنا تحته استعلامين : 1- لالحاق اسماء فقط اسماء الطلاب المشار لهم في الشيك بكس في النموذج مع اضافة تارخ اليوم لجدول الغياب 2- الاستعلام الثاني تحديث هو لازالة علامة الشيك بوكس الموجودة في النموذج وجعلها بدون .... استعدادا لعملية تحضير جديدة هذا كل شيئ .... تحياتي لك ,,,,,,, بقي التقرير .... قيد العمل .......1 point
-
ضع الكود على حدث بعد التحديث Private Sub B_1_AfterUpdate() If Me.B_1 = "ذكر" Then Me.t_1 = True Me.t_2 = False Else Me.t_1 = False Me.t_2 = True End If End Sub1 point
-
بعد اذن أستاذنا الفاضل ابراهيم الحداد تفضل اخى الكريم =(B1/2*1.4)+(B1/2*2.4) وان شاء الله تفي بالمطلوب1 point
-
ماشاء الله عليك استاذ @Amr Ashraf زادك الله من علمه1 point
-
1 point
-
1 point
-
1 point
-
مثال أخر بالمشاركة مع الأخ @ابو جودي وبعد كونسولتو لمعرفة علة المريض 😂 , مثال لاستعلام فرعى لحقل ترقيم تلقائى يعيد ضبط نفسه حتى مع حذف سجلات من وسط السيريال : لدينا هذه البيانات فى الجدول : ID FullName 8 a 13 B 14 c 15 d 16 E 17 D 19 EEE سيريالات غير منضبطة , انظر للاستعلام التالى : SELECT A.FullName, A.ID, (SELECT Count("*") FROM tblData AS B WHERE B.[ID]<A.[ID])+1 AS NewID FROM tblData AS A; تم استخدام دالة Count والنتيجة حاول تحذف اى سجل من المنتصف , ستجد ان الترقيم تم اعادة ضبطه ليتناسب مع السجلات الجديدة . انظر المرفق . دمتم بود . Sequence.accdb1 point
-
1 point
-
مثال آخر ولكن اكثر تقدما (عن نفسى احتجته فى عملية حسابية ولم اكن اعرف شئ عن الاستعلامات الفرعية واجابة السؤال هى ما دفعنى للبحث والتطبيق عليها) : هذه قائمة العملاء فى شركة ما : ID Client 1 Mohamed 2 Amr 3 Ahmed يقوم كل عميل منهم بعمل 4 طلبيات فى الشهر بمعدل طلبية كل اسبوع مثلا , كل طلبية لها تاريخ بداية توريد وتاريخ نهاية توريد وهو التاريخ الذى سيقوم العميل باستلام البضائع فيه , انظر لهذه البيانات تتضمن طلبيتين لعميلين فى تواريخ مختلفة : الطلبيات وتواريخها : OrderID Client StartFrom EndsOn 2022-Ahmed1 Ahmed 03/01/2022 07/01/2022 2022-Ahmed2 Ahmed 03/02/2022 05/02/2022 2022-Amr1 Amr 01/01/2022 05/01/2022 2022-Amr2 Amr 20/01/2022 25/01/2022 تفاصيل المنتجات المطلوبة : OrderID Product OrderQty 2022-Amr1 Banana 120 2022-Amr1 Choclate 100 2022-Amr1 Juice 130 2022-Amr1 Mango 100 2022-Amr1 Milk 150 2022-Amr1 Water 150 2022-Amr2 Banana 250 2022-Amr2 Choclate 240 2022-Amr2 Juice 210 2022-Amr2 Mango 220 2022-Amr2 Milk 250 2022-Amr2 Water 300 2022-Ahmed1 Banana 250 2022-Ahmed1 Choclate 70 2022-Ahmed1 Juice 250 2022-Ahmed1 Mango 20 2022-Ahmed1 Milk 250 2022-Ahmed1 Water 250 2022-Ahmed2 Banana 300 2022-Ahmed2 Choclate 70 2022-Ahmed2 Juice 300 2022-Ahmed2 Mango 50 2022-Ahmed2 Milk 300 2022-Ahmed2 Water 300 وهذا جدول المبيعات : Zdate Product UnitPrice QtySold TotalAmount Client 01/01/2022 Choclate $5.00 70 350 Amr 02/01/2022 Juice $3.00 100 300 Amr 02/01/2022 Mango $7.00 30 210 Amr 04/01/2022 Milk $4.00 100 400 Amr 04/01/2022 Water $2.50 100 250 Amr 03/01/2022 Banana $1.00 30 30 Ahmed 03/01/2022 Choclate $5.00 60 300 Ahmed 05/01/2022 Mango $7.00 10 70 Ahmed 07/01/2022 Milk $4.00 75 300 Ahmed 07/01/2022 Water $2.50 75 187.5 Ahmed 20/01/2022 Banana $1.00 70 70 Amr 20/01/2022 Choclate $5.00 90 450 Amr 22/01/2022 Juice $3.00 150 450 Amr 22/01/2022 Mango $7.00 50 350 Amr 25/01/2022 Milk $4.00 150 600 Amr 25/01/2022 Water $2.50 150 375 Amr 03/02/2022 Banana $1.00 35 35 Ahmed 03/02/2022 Choclate $5.00 67 335 Ahmed 04/02/2022 Juice $3.00 80 240 Ahmed 04/02/2022 Mango $7.00 20 140 Ahmed 05/02/2022 Milk $4.00 80 320 Ahmed 05/02/2022 Water $2.50 80 200 Ahmed هناك قاعدة بيانات مرفقة لنظرة افضل Amr - SubQueries.accdb. المطلوب : متابعة كل طلبية لكل عميل لكل منتج على حدى ماذا تم تسليمه والمتبقى منها فى التواريخ التى تقع بين تاريخ بداية التوريد وتاريخ نهايته . طبعا كان من السهل الحصول على المبيعات بين تاريخين محددين او يتم كتابتهم يدويا او يتم الاشارة اليهم فى نموذج ما ومن الاسهل اذا كان رقم الطلبية مذكور فى جدول المبيعات وبناء عليه يتم ربط الاستعلامات ببعضها والحصول على النتيجة المرجوة , ولكن الصعوبة ماذا لو كان التاريخين مكتوبين فى عمود داخل نفس الاستعلام مثلا ؟ وطبعا الشروط كثيرة ورقم الطلبية غير مذكور فى المبيعات ويتم استنتاجها من تاريخ البيع انظر الاستعلام التالى QryFollowUp : SELECT QryOrders.OrderID, QryOrders.Client, QryOrders.Product, QryOrders.OrderQty, Nz((select Sum(QtySold) From TblSales AS T Where T.Product = QryOrders.[Product] And T.Client = QryOrders.[Client] And (T.zDate >= QryOrders.[StartFrom] And T.zDate <= QryOrders.[EndsOn])),0) AS QtyDelivered, [OrderQty]-[QtyDelivered] AS Remains FROM QryOrders; فى هذا المثال ستجد ان الاستعلام الفرعى ليس معيار ولكن حقل او عمود فى الاستعلام كما فى الصورة التالية هذا الاستعلام يقوم بحساب ما تم بيعه من منتج ما بشرط تساوى اسم العميل و اسم المنتج ووقوع تاريخ البيع بين تاريخى بدء التوريد ونهايته والمذكور فى جدول الطلبيات , طبعا شروط كثيرة وقلة معطيات ولكن النتيجة سريعة ودقيقة بل وافضل حيث انه فى حالة عدم وجود مبيعات ينطبق عليها الشروط سيظل يذكر رقم الطلبية والمنتج ولكن كمية المبيعات ستكون صفر وهو ما كان صعب تطبيقه بالطريقة العادية. انظر النتيجة لو تم تغيير تاريخ بداية ونهاية التوريد فى جدول الطلبيات ستتغير النتائج فى هذا الاستعلام تلقائياً طبعا 😆. ملاحظات على المثال : تم استخدام Alias للاستعلام الفرعى يرمز له بالحرف T وذلك لتسهيل الاشارة اليه فيما بعد. يلاحظ انه تم استخدام دالة الجمع Sum وبالتالى يمكن استخدام باقى الدوال مثل (Min-Max-Average-First-Last ) الى آخره . يتبع بمثال آخر .1 point
-
اخى الكريم @محمد يوسف ابو يوسف تمام انت صح في هذه النقطه انت مخطئ في هذه النقطه لان الكود جميل جدا ويفي بالمطلوب تماما وقد جربته ويعمل جيدا على ملفك جزاه الله خيرا الاستاذ @lionheart على هذا الكود1 point
-
1 point
-
@مهند محسن اخى الفاضل هذه اول مشاركة لى ولم اكن على دراية بهذه التنويهات السابقة شاكر جدا على النصيحه التى ساعمل بها مستقبلا ان شاء الله1 point
-
في الواقع مثل ما قال ابوخليل في مشاركته ، انت محتاج استعلام واحد ويحل جميع مشاكلك ، بس لأن سؤالك كان عن مجموعة من الاستعلامات ، فاتجهت في اجابتي نحو استعلام التوحيد!! ولا محتاج جدول مؤقت ، ولا ولا ، إلا هذا الاستعلام 🙂 هذا الاستعلام اللي تريده: . SELECT Dwam_Emp_ALL.Emp_No_A, Emp_Info.Emp_Ar_Name, Sum(IIf([Emp_ABSCENT]=Yes,1,0)) AS SumAbsentYes, Sum(IIf([sick]=Yes,1,0)) AS SumsickYes, Sum(Dwam_Emp_ALL.OTH) AS SumOfOTH FROM Emp_Info INNER JOIN Dwam_Emp_ALL ON Emp_Info.Emp_No = Dwam_Emp_ALL.Emp_No_A WHERE (((Dwam_Emp_ALL.Dwam_Date) Between [Forms]![frmPrintSalary]![txtdate1] And [Forms]![frmPrintSalary]![txtdate2])) GROUP BY Dwam_Emp_ALL.Emp_No_A, Emp_Info.Emp_Ar_Name HAVING (((Dwam_Emp_ALL.Emp_No_A)=IIf([Forms]![frmPrintSalary]![OP]=1,[Emp_No_A],[Forms]![frmPrintSalary]![cbEmpNo]))); . . والتقرير: . ما عليك من التقرير الآن ، لأنه تحصيل حاصل ، رجاء استعمل الاستعلام اللي اعطيتك ، واخبرني اذا عندك مشكلة فيه 🙂 جعفر1 point
-
1 point
-
1 point
-
من فضلك اخى الكريم نبهنا كثيرا على هذا الأمر ان لا تقوم برفع اى مشاركة قبل استخدام خاصية البحث بالمنتدى ... فطلبك تم تكراره ومناقشته كثير جدا بالمنتدى-تفضل مشكلة في اللغة العربية1 point
-
Run the macro called "Test". The macro will save a text file copy of the file as you wish exactly and in the same path as in your code. Please try the code first before you post a reply.1 point
-
1 point
-
مرحباً في البداية لا ينصح باستخدام الدالة Dlast، كونها تستدعي القيمة من آخر سجل وقد يصدف أن يضطر مدخل البيانات إلى استدراك بيانات مفقودة، هناك عدة طرق لعمل المطلوب الأولى بالكود الذي تفضل به الأستاذ كاف يار، الثانية: Sub BtnDmax() On Error Resume Next Dim db As DAO.Database Dim Rst As DAO.Recordset Dim SqlStr As String Dim X As Integer Set db = CurrentDb SqlStr = "SELECT Examination.[File number], Max(Examination.[visit number]) AS [MaxOfvisit]" & _ "FROM Examination where [File number] = " & Val([Forms]![Examination]![NumFile]) & " GROUP BY Examination.[File number];" Set Rst = db.OpenRecordset(SqlStr) X = Rst![MaxOfvisit]+ 1 [Forms]![Examination]![NewVisit] = X End Sub ضع الكود في حدث بعد التحديث لحقل رقم الملف AfterUpdate مسميات الحقول في الكود افترضتها، ما عليك سوى تغييرها وفقاً لنموذجك.1 point
-
بهذه الطريقة ... يمكن ان تفقد العلاقات بي الجداول اذا كنت عامل علاقات ... وانا لا انصحك بهذا ولكن اذا مصر ادرج لك الكود .... الأفضل : هو نقل النماذج أو التقارير المحدثة للقاعدة وليس العكس ......1 point
-
السلام عليكم من تجربتي ، وبسبب اختلاف اعدادات الوندوز ولغاته ، توصلت لعمل جدول خاص للاشهر tbl_Months ، ممكن اعدادات الوندوز تظهر الشهر بصيغة December ، او ديسمبر ، او كانون الاول . . ولكنك تريد ان يظهر عندك الشهر بأحد هذه الصيغ ، بغض النظر نظام اي كمبيوتر يعمل عليه برنامجك ، فيمكنك قراءة الطريقة التي تريدها من الجدول ، كما هو واضح في المثال . وهذا الكود كمثال فقط ، عن طريقة مناداة الحقول من الجدول: Private Sub myDate_AfterUpdate() 'display the dates based on the system setting Me.Date_1_System = Format(Me.myDate, "dddd dd/mm/yyyy") Me.Date_2_System = Format(Me.myDate, "dddd dd, mmm yyyy") Me.Day_System = Format(Me.myDate, "dddd") Me.Month_System = Format(Me.myDate, "mmmm") ' 'use the following Functions to get the integer number of: 'Today= 22 December 2017 'Day(Today) = 22 'Weekday(Today) = 6 'Friday 'Month(Today) = 12 'December 'Year(Today) = 2017 ' Me.Day_table_Arabic = DLookup("[Days_Arabic]", "tbl_Months", "[Months_Number]=" & Weekday(Me.myDate)) Me.Day_table_English = DLookup("[Days_English]", "tbl_Months", "[Months_Number]=" & Weekday(Me.myDate)) Me.Month_Table_Georgian = DLookup("[Months_Georgian]", "tbl_Months", "[Months_Number]=" & Month(Me.myDate)) Me.Month_Table_Iraqi = DLookup("[Months_Iraqi]", "tbl_Months", "[Months_Number]=" & Month(Me.myDate)) Me.Month_Table_English = DLookup("[Months_English]", "tbl_Months", "[Months_Number]=" & Month(Me.myDate)) Me.Date_Table_Georgian = DLookup("[Months_Georgian]", "tbl_Months", "[Months_Number]=" & Month(Me.myDate)) Me.Date_Table_Georgian = Day(Me.myDate) & " " & Me.Date_Table_Georgian & " " & Year(Me.myDate) Me.Date_Table_Iraqi = DLookup("[Months_Iraqi]", "tbl_Months", "[Months_Number]=" & Month(Me.myDate)) Me.Date_Table_Iraqi = Day(Me.myDate) & " " & Me.Date_Table_Iraqi & " " & Year(Me.myDate) Me.Date_Table_English = DLookup("[Months_English]", "tbl_Months", "[Months_Number]=" & Month(Me.myDate)) Me.Date_Table_English = Day(Me.myDate) & " " & Me.Date_Table_English & " " & Year(Me.myDate) End Sub وبعدها توسعت في الجدول واستفدت منه لأشياء اخرى جعفر tbl_Months.mdb.zip1 point
-
حاولت أسويها وحدي ولو بشكل (مشي حالك ) .. لكن الظاهر حتى أنا قهوتي ما ضاربة في المخيخ 😆 خلاصة ما أريد توصيله لك : تحويل الكود إلى دالة . 🙂 شي من جنس هذي مثلا : Public Function DateFromTable(myDate As Date, Taqweem As String, WhatDatePart As String) As Date Select Case WhatDatePart Case Is = "Weekday" DateFromTable = DLookup(Taqweem, "tbl_Months", "[Months_Number]=" & Weekday(myDate)) Case Is = "Month" DateFromTable = DLookup(Taqweem, "tbl_Months", "[Months_Number]=" & Month(myDate)) DateFromTable = Day(myDate) & " " & DateFromTable & " " & Year(myDate) End Select End Function1 point
-
انا عملته طبقا للصيغة الموجودة فعلا في الجدول وهذه الصيغة هي السائدة ، واستخدم التنسيق ( من اليمين الى اليسار ) في الواجهات1 point
-
السلام عليكم ورحمة الله عندك مشكلة ما لا اعرف سببها او مصدرها على العموم تم تنشيط المعادلة مرة اخرى بملفك المرفق فكانت النايجة المرجوة و هى تعمل بكفاءة تامة اليك الملف sego.xlsx1 point
-
حماية ورقة العمل في وندرايف اكسل اونلاين هي نفسها في اكسل سطح المكتب حدد جميع الخلايا ومن تنسيق الخلايا تبويب حماية و اختر مؤمن مخفي واجعل الخلية التي تريد عدم حمايتها العكس ثم من تبويب مراجعة حماية ورقة العمل واكتب كلمة المرور ويفضل التنفيذ من خلال اكسل سطح المكتب بالتوفيق1 point
-
وعليكم السلام ورحمة الله وبركاتة بالنسبة للطلب الاول كان ل نفس السؤال ةاجابني عليه الاستاذ @jjafferr على الرابط التالي الطلب الثاني استخدم هذا السطر للتصدير لكن سيسألك عن مكان الحفظ DoCmd.OutputTo acOutputReport, "أسم التقرير ", acFormatPDF, , True, , , acExportQualityPrint ::بالتوفيق:: إذا كنت ترى أن هذه المشاركة مفيدة فلا تنسى التقيم1 point
-
قال سبحانه وتعالى فى سورة الاسراء بسم الله الرحمن الرحيم "ان السمع والبصر والفؤاد كل اولئك كان عنه مسؤلا" ثم انهم بذلوا الكثير من الجهد ولاقوا الكثير من المعاناة وفكروا حتى يسر الله لهم وتوصلوا الى تلك النتيجة ولم يبخلوا بعلمهم ولا بجهدم ووضوعه لكل طالب علم ولكل سائل ولكل محتاج اليس من اقل حقوقهم علينا ومن اقل تقديرنا لحقوقهم هو ذكر اسمهم والدعاء لهم اكراما لهم وتقديرا وتبجيلا اسال الله تعالى ان يجعل اعمالهم حجة لهم واسال الله تعالى لهم القبول فنكون لهم من باب الصدقة الجارية والتى انتفعنا بها بعد اكثر من عشرة أعوام وأسال الله تعالى ان يتقبل اعمالهم من باب علم ينتفع به فإنى اشهد الله تعالى انى انتفع بهذا العلم حتى دون ان القاهم ان ذلك وهذا الانتفاع فى العمل جاء بعد اكثر من مرور عشرة اعوام على طرحهم هذا العمل اللهم تقبل اعمالهم هم واساتذتنا الكرام الذين لم يبخلوا علينا اللهم يسر لهم بهذا العلم ردوبا لابواب الجنان كما يهلوا ويسروا لنا دروب العلم اللهم اتهم فى الدنيا حسنة وفى الاخرة حسنا وقنا واياهم وكل المسلمين عذاب النار يارب العالمين اللهم اغفر لهم ولاساتذتنا الكران ولوالديهم ولابائنا وللمسلمين وابائهم يارب العالمين امين امين امين واخيرا وليس اخرا جزاكم الله خيرا على دعواتكم الطيبات واسال الله تعالى القبول وان يرزقكم بدعواتكم الطيبة اكثر مما دعوتم لى1 point
-
السلام عليكم ورحمة الله تعالى وبركاته اخى الحبيب اعتذر جدا جدا جدا جدا للتأخير بسبب أحوالى المرضية وكما وعدت ان شاء الله تعالى تجد فى المرفق ما يسرك للعلم وللاهمية قاعدة البيانات اصلها للاستاذ الجليل والمعلم القدير ابو هاجر وتنقيح وتعديل الاستاذ القدير والمعلم الجليل ابو هادى ان لم تخنى ذاكرتى جزاهم الله تعالى هم وباقى اساتذتنا الكرام فى هذا المنتدى كل الخير وغفر الله لهم ولوالديهم ومن يحبون ان شاء الله تعالى - تم اضافة وتعديل وتنقيح على قاعدة البيانات من العبد الفقير الى الله بما يضفى المرونه والسلاسة والتميز فى الية عمل البرنامج - يجب تسجيل المكتبة الخاصة بالماسح الضوئى TWAIN32d.dll بعد ذلك ان شاء الله تعالى تجد مايسرك وينشرح به فؤادك بما طلبت واكثر ان شاء الله منتظر رد حضرتك ان شاء الله scan image or add image emp.rar1 point