اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

نجوم المشاركات

  1. lionheart

    lionheart

    الخبراء


    • نقاط

      10

    • Posts

      670


  2. Amr Ashraf

    Amr Ashraf

    الخبراء


    • نقاط

      10

    • Posts

      946


  3. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      9

    • Posts

      9960


  4. حسونة حسين

    حسونة حسين

    أوفيسنا


    • نقاط

      7

    • Posts

      1080


Popular Content

Showing content with the highest reputation on 01/20/22 in all areas

  1. السلام عليكم ,, الاخوة الافاضل , موضوعنا اليوم فى نطاق الاستعلامات وكما بالعنوان سوف نتطرق الى الاستعلامات الفرعية وطريقة استخدامها وامثلة عملية عليها واستخدامها كمعايير فى الاستعلامات الرئيسية. وسأقوم باستخدام النصوص فى الجزء الاغلب من الشرح تطبيقا لطلب استاذنا ابو خليل . بالنسبة للمبتدئين امثالى توضيح بسيط : ماهى المعايير ؟ المعايير هى شرط او اكثر بناءً عليه يتم استدعاء البيانات من الجداول وفى الرابط التالى الكثير من المعلومات والامثلة لكافة انواع الحقول (نص - رقمى - وقت وتاريخ الخ...) 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.accdb
    3 points
  2. السلام عليكم 🙂 عندما لا توجد علاقات في الاستعلام ، وبدون علاقة بين الجداول (او الاستعلامات) في الاستعلام: 1. فالاستعلام يعطيك نتيجة كل جدول بطريقة مستقلة ، ثم 2. عدد سجلات الاستعلام تكون: عدد سجلات الجدول الاول X عدد سجلات الجدول الثاني X عدد سجلات الجدول الثالث X عدد سجلات الجدول الرابع .... مثلا ، حول استعلام 1_infoEmp الى استعلام عادي ، فيكون . والنتيجة 254,464 سجل : . اذا افترضنا عندك 3 سجلات في كل جدول ، فالاستعلام يعرض السجلات حسب ترتيب تسلسل هذه الجداول في الاستعلام ، ويبدأ من الجهة اللي فيها مسميات . ويعرض النتائج هكذا : ولاحظ عدد السجلات : 3x3x3x3 فالعدد يكون 81 سجل . جعفر
    3 points
  3. تفضل يا سيدي: النموذج يظهر لك جميع البيانات ، ولكن يجب ان تكون متصل بالانترنت . كود حدث "عند النقر" على الزر في النموذج : 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.zip
    3 points
  4. =IF(B3="غ","ضعيف",IF(B3>=42,"ممتاز",IF(B3>=36,"جيد جدا",IF(B3>=25,"جيد","ضعيف"))))
    2 points
  5. استخدامك لدالة 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
  6. 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
  7. 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 Sub
    2 points
  8. اخى الكريم @محمد يوسف ابو يوسف كيف تجعل اجابتى افضل اجابه وما هى الا ان وضعت لك الكود الخاص بالاستاذ @lionheart فاجابته هى التى تكون افضل اجابه وليس اجابتى اعطى كل زى حق حقه اخى الكريم
    2 points
  9. 2 points
  10. مثال آخر شبيه بالسابق : فى هذا المثال افترضت ان المنتج يتم تحميله على مراحل فى نفس الطلبية ومطلوب انى اعرف اول تاريخ تسليم للمنتج داخل طلبية ما أو العكس اخر تاريخ تم تسليم المنتج للعميل فيه , انظر الاستعلام التالى 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
  11. -- الوقت والتاريخ تاريخ آخر يوم فى الشهر المحدد 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 Function
    2 points
  12. السلام عليكم ورحمة الله بارك الله فيكم جميعا ردودكم الطيبة تخجل تواضعى
    2 points
  13. السلام عليكم ورحمة الله معذرة لانى فهمت الموضوع خطأا ان العمل على خلية واحدة و لاتى وجدت الامر مختلف وصعب فقررت ان ارسل لك الملف ذاته بعد ان تم عمل اللازم تم اضافة عمود مساعد بورقة البدلاء لتسهيل عمل المعادلة اليك الملف شيت تحضير -111 (2).xlsm
    2 points
  14. السلام عليكم ورحمة الله استخدم الكود التالى 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 Sub
    2 points
  15. 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 Function
    2 points
  16. مطلوب حذف السطور المكررة وترك سطر واحد منهم فقط بمعنى البحث برقم التليفون وحذف السطر المكرر كله وترك سطر واحد فقط انا عندى ملف فيه حوالى 16000 سطر ومحتار فيه ومرفق عينة للمطلوب test.xlsx
    1 point
  17. بناء على طلب احد الاخوة شرح تفصيلى لدالة: DLookup Function الوصف-Description : ترجع الدالة DLookup قيمة حقل واحد إذا لم يكن هناك سجل يلبي المعايير أو إذا كان المجال لا يحتوي على أي سجلات، ترجع الدالة DLookup القيمة Null إذا كان هناك أكثر من حقل ترجع الدالة DLookup التكرار الأول لذلك يجب تحديد معايير تضمن أن تكون قيمة الحقل التي يتم إرجاعها بواسطة الدالة DLookup فريدة قد تحتاج إلى استخدام قيمة مفتاح أساسي للمعايير او قيمة فريدة للتأكد من أن الدالة DLookup ترجع قيمة فريدة بناء الجملة الدالة-Syntax DLookup : يختلف بناء الجملة الخاص بوظيفة DLookup الشكل العام البسيط لبناء الجملة يكون كالتالى DLookup("FieldName" , "TableName") وعندما نريد بناء جملة ترجع قيمة حقل من جدول بناء على قيمة محددة لابد ان يحتوى بناء الجملة على معيار الشكل العام لبناء الجملة كالتالى DLookup("FieldName" , "TableName" , "Criteria") و لابد من الاخذ فى الاعتبار انه سوف نعتمد فى بناء جملة DLookup من هذا النوع الذى يعتمد على معيار على نوع البيانات المستخدم فى هذا المعيار انواع البيانات المستخدمة فى المعيار هى لا تخرج عن الثلاث انواع الاتية (رقم - نص - تاريخ - Numeric - String - Date ) ودائما تلك الجزئية هى مصدر القلق والخطأ والتساؤل ولكى نبسطها DLookup("FieldName" , "TableName" , "Criteria = n") '|Numeric DLookup("FieldName" , "TableName" , "Criteria = 'S'") '|String DLookup("FieldName" , "TableName" , "Criteria = #D#") '|Date بكل بساطه فى بناء الجملة الرئيسي عندما نستخدم معيار يحتوى على نوع بيانات من النوع رقم فقط تم وضع علامة = بعد Criteria ثم الرقم بدون اى اضافات عندما نستخدم معيار يحتوى على نوع بيانات من النوع نص فقط تم وضع علامة = بعد Criteria ثم النص بين علامتين تنصيص مفرده ' عندما نستخدم معيار يحتوى على نوع بيانات من النوع تاريخ فقط تم وضع علامة = بعد Criteria ثم التاريخ بين علامتين هاش # يستخدم ما سبق عندما نكتب قيمة المعيار بطريقة مباشرة وعندما يكون المعيار مستمد من عنصر موجود اما حقل فى استعلام او مربع نص فى نموذج يكون بناء الجملة كالأتى DLookup("FieldName" , "TableName" , "Criteria =" & [ObjectName]) '|Numeric DLookup("FieldName" , "TableName" , "Criteria ='" & [ObjectName] & "'") '|String DLookup("FieldName" , "TableName" , "Criteria =#" & [ObjectName] & "#") '|Date ملاحظة هامة عند التعامل مع التاريخ لابد ان يكون تنسيق التاريخ فى المعيار على الطريقة الأمريكية mm/dd/yyyy -------------------------------------------------------------------------------------------------------------------------- وعندما يكون المعيار مستمد من متغير يتم اسناد قيمة المعيار اليه داخل محرر الأكواد يكون بناء الجملة كالأتى ولا ننسى عند التعامل مع التاريخ لابد ان يكون تنسيق التاريخ فى المعيار على الطريقة الأمريكية mm/dd/yyyy Dim MyVariable As String Dim stLinkCriteria As String MyVariable = 1 stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'MyVariable = "Mahmoud" 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'MyVariable = "03/01/1982" 'stLinkCriteria = "[FldCriteria] =#" & MyVariable & "#" '|Date stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'stLinkCriteria ="[FldCriteria] =#" & MyVariable & "#" '|Date DLookup("FieldName", "TableName", stLinkCriteria) مثال متقدم : احضار بيانات دفعة واحدة من اكثر من حقل عن طريق المصفوفات من خلال الـ DLookup على طريقة استاذى الجليل ومعلمى القدير و والدى الجبيب الاستاذ @jjafferr Dim strDLookupFlds As String Dim stLinkCriteria As String Dim MyVariable As String Dim Arry() As String Dim ChosFld As String MyVariable = 1 stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'MyVariable = "Mahmoud" 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'MyVariable = "03/01/1982" 'stLinkCriteria = "[FldCriteria] =#" & MyVariable & "#" '|Date strDLookupFlds = DLookup("[Fld1] & '|' & [Fld2] & '|' & [Fld3] & '|' & [Fld4] & '|' & [Fld5] & '|' & [Fld6] & '|' & [Fld7] & '|' & [Fld8]& '|' & [Fld9]", "[tblName]", stLinkCriteria) Arry = Split(strDLookupFlds, "|") Debug.Print strDLookupFlds ChosFld = Arry(0) Debug.Print ChosFld 'Arry(0) = Fld1 'Arry(1) = Fld2 'Arry(2) = Fld3 'Arry(3) = Fld4 'Arry(4) = Fld5 'Arry(5) = Fld6 'Arry(6) = Fld7 'Arry(7) = Fld8 'Arry(8) = Fld9
    1 point
  18. يمكنكم استخدام الروتين الاتى لإزالة اى حركات تشكيل ويتم استدعاءه كم خلال 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.zip
    1 point
  19. انظر الى هذه الجملة في كودك استاذ عمر Else ليس فيها End If
    1 point
  20. بارك الله فيك استاذي الفاضل
    1 point
  21. القيمة يتم جلبها بمجرد كتابة الرقم 1 والنص A1 نمثلا بدون الضغط علي الزر جرب ان تكتب بالحقول بدون ان تضغط علي الزر
    1 point
  22. شكرا استاذي @أبو عبدالله الحلوانى على هذه المعلومة لان لوكانت الكلمة بالعربي فلن يعمل الكود في حدث عند التغيير الا اذا تم تحويلها الى Unicode معلومة من ذهب ... جزاك الله خيرا استاذي انظر لملف استاذي @ابو جودي وستفهم كيف يتم تحويل الكلمة العربي الى unicode Converter Arabic and Unicode (v. 3).accdb
    1 point
  23. ابدا ليس هناك اي غلبة ... نحن في الخدمة ... اولا اضفنا حقل شيك بوكس في جدول اسماء الطلاب ثانيا جعلنا مصدر الشيك بوكس الموجود في النموذج هو نفس الحقل الذي انشأناه في الجدول المذكور السابق ثالثا انشأنا زر جديد وادرجنا تحته استعلامين : 1- لالحاق اسماء فقط اسماء الطلاب المشار لهم في الشيك بكس في النموذج مع اضافة تارخ اليوم لجدول الغياب 2- الاستعلام الثاني تحديث هو لازالة علامة الشيك بوكس الموجودة في النموذج وجعلها بدون .... استعدادا لعملية تحضير جديدة هذا كل شيئ .... تحياتي لك ,,,,,,, بقي التقرير .... قيد العمل .......
    1 point
  24. ضع الكود على حدث بعد التحديث 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 Sub
    1 point
  25. بعد اذن أستاذنا الفاضل ابراهيم الحداد تفضل اخى الكريم =(B1/2*1.4)+(B1/2*2.4) وان شاء الله تفي بالمطلوب
    1 point
  26. الف شكر اخوي lionheart ماقصرت الله يسعدك يارب اشتغل معي الكود الان بشكل صحيح , والنتائج مثل مااريد بالضبط أكرر الشكر والتقدير
    1 point
  27. ماشاء الله عليك استاذ @Amr Ashraf زادك الله من علمه
    1 point
  28. السلام عليكم تم ارساله على الخاص
    1 point
  29. مثال أخر بالمشاركة مع الأخ @ابو جودي وبعد كونسولتو لمعرفة علة المريض 😂 , مثال لاستعلام فرعى لحقل ترقيم تلقائى يعيد ضبط نفسه حتى مع حذف سجلات من وسط السيريال : لدينا هذه البيانات فى الجدول : 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.accdb
    1 point
  30. المثال السابق فى حقل وليس فى معيار 😅 انظر لصورته , انا نسيت اذكر النقطة الهامة دى شكرا على التوضيح يا غالى
    1 point
  31. مثال آخر ولكن اكثر تقدما (عن نفسى احتجته فى عملية حسابية ولم اكن اعرف شئ عن الاستعلامات الفرعية واجابة السؤال هى ما دفعنى للبحث والتطبيق عليها) : هذه قائمة العملاء فى شركة ما : 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
  32. اخى الكريم @محمد يوسف ابو يوسف تمام انت صح في هذه النقطه انت مخطئ في هذه النقطه لان الكود جميل جدا ويفي بالمطلوب تماما وقد جربته ويعمل جيدا على ملفك جزاه الله خيرا الاستاذ @lionheart على هذا الكود
    1 point
  33. @مهند محسن اخى الفاضل هذه اول مشاركة لى ولم اكن على دراية بهذه التنويهات السابقة شاكر جدا على النصيحه التى ساعمل بها مستقبلا ان شاء الله
    1 point
  34. في الواقع مثل ما قال ابوخليل في مشاركته ، انت محتاج استعلام واحد ويحل جميع مشاكلك ، بس لأن سؤالك كان عن مجموعة من الاستعلامات ، فاتجهت في اجابتي نحو استعلام التوحيد!! ولا محتاج جدول مؤقت ، ولا ولا ، إلا هذا الاستعلام 🙂 هذا الاستعلام اللي تريده: . 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
  35. ممتاز جدا.. جزاكم الله خيرا.. مش عارف اشكركم ازاى
    1 point
  36. 1 point
  37. من فضلك اخى الكريم نبهنا كثيرا على هذا الأمر ان لا تقوم برفع اى مشاركة قبل استخدام خاصية البحث بالمنتدى ... فطلبك تم تكراره ومناقشته كثير جدا بالمنتدى-تفضل مشكلة في اللغة العربية
    1 point
  38. 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
  39. كود الاستاذ @Khalfفي ملف للفائدة visitN.accdb
    1 point
  40. مرحباً في البداية لا ينصح باستخدام الدالة 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
  41. بهذه الطريقة ... يمكن ان تفقد العلاقات بي الجداول اذا كنت عامل علاقات ... وانا لا انصحك بهذا ولكن اذا مصر ادرج لك الكود .... الأفضل : هو نقل النماذج أو التقارير المحدثة للقاعدة وليس العكس ......
    1 point
  42. السلام عليكم من تجربتي ، وبسبب اختلاف اعدادات الوندوز ولغاته ، توصلت لعمل جدول خاص للاشهر 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.zip
    1 point
  43. حاولت أسويها وحدي ولو بشكل (مشي حالك ) .. لكن الظاهر حتى أنا قهوتي ما ضاربة في المخيخ 😆 خلاصة ما أريد توصيله لك : تحويل الكود إلى دالة . 🙂 شي من جنس هذي مثلا : 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 Function
    1 point
  44. انا عملته طبقا للصيغة الموجودة فعلا في الجدول وهذه الصيغة هي السائدة ، واستخدم التنسيق ( من اليمين الى اليسار ) في الواجهات
    1 point
  45. السلام عليكم ورحمة الله عندك مشكلة ما لا اعرف سببها او مصدرها على العموم تم تنشيط المعادلة مرة اخرى بملفك المرفق فكانت النايجة المرجوة و هى تعمل بكفاءة تامة اليك الملف sego.xlsx
    1 point
  46. وعليكم السلام ورحمة الله وبركاتة بالنسبة للطلب الاول كان ل نفس السؤال ةاجابني عليه الاستاذ @jjafferr على الرابط التالي الطلب الثاني استخدم هذا السطر للتصدير لكن سيسألك عن مكان الحفظ DoCmd.OutputTo acOutputReport, "أسم التقرير ", acFormatPDF, , True, , , acExportQualityPrint ::بالتوفيق:: إذا كنت ترى أن هذه المشاركة مفيدة فلا تنسى التقيم
    1 point
  47. السلام عليكم ورحمة الله تعالى وبركاته اخى الحبيب اعتذر جدا جدا جدا جدا للتأخير بسبب أحوالى المرضية وكما وعدت ان شاء الله تعالى تجد فى المرفق ما يسرك للعلم وللاهمية قاعدة البيانات اصلها للاستاذ الجليل والمعلم القدير ابو هاجر وتنقيح وتعديل الاستاذ القدير والمعلم الجليل ابو هادى ان لم تخنى ذاكرتى جزاهم الله تعالى هم وباقى اساتذتنا الكرام فى هذا المنتدى كل الخير وغفر الله لهم ولوالديهم ومن يحبون ان شاء الله تعالى - تم اضافة وتعديل وتنقيح على قاعدة البيانات من العبد الفقير الى الله بما يضفى المرونه والسلاسة والتميز فى الية عمل البرنامج - يجب تسجيل المكتبة الخاصة بالماسح الضوئى TWAIN32d.dll بعد ذلك ان شاء الله تعالى تجد مايسرك وينشرح به فؤادك بما طلبت واكثر ان شاء الله منتظر رد حضرتك ان شاء الله scan image or add image emp.rar
    1 point
×
×
  • اضف...

Important Information