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

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

  1. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      6

    • Posts

      9,814


  2. دروب مبرمج

    دروب مبرمج

    الخبراء


    • نقاط

      4

    • Posts

      204


  3. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      3

    • Posts

      12,158


  4. أبو أنس حاجب

    أبو أنس حاجب

    04 عضو فضي


    • نقاط

      2

    • Posts

      829


Popular Content

Showing content with the highest reputation on 14 يول, 2023 in all areas

  1. تفضل SELECT * FROM tblVacation where [emp_code]= " & [TempVars]![EmpIdTemp] & " AND [VacationLife]='سارية' ORDER BY vacationstartdate Asc;
    3 points
  2. اعرض الملف ملف اكسل ضريبة كسب العمل ( الضريبة على الدخل ) طبقًا للقانون المصرى الجديد 30 لسنة 2023 Income Tax July-2023 -Essam Mosaad.xlsx صاحب الملف عصام مسعد تمت الاضافه 14 يول, 2023 الاقسام قسم الإكسيل
    2 points
  3. السلام عليكم 🙂 لما يكون فيه مجموعة كمبيوترات تعمل على نفس البرنامج في الشبكة ، وتكون البيانات/الجداول سواء على السيرفر او على احد الكمبيوترات في الشبكة ، ولأنه تاريخ/وقت هذه الكمبيوترات يختلف من كمبيوتر الى آخر ، فهذا يعمل لنا اختلاف في قيمة وقت ادخال السجل ، من كبيوتر الى آخر. احد المؤسسات تشتغل على برنامج يستخدمه حوالي 6 اشخاص ، ويتم ادخال حوالي 2000 سجل يوميا ، والجدول فيه حقل رقم تلقائي ، وحقل التاريخ/الوقت وفيه قيمة افتراضية Now ، طبعا بالاضافة الى بقية الحقول. حقل الرقم التلقائي ما فيه اشكالية في تسلسل الارقام ، ولكن حقل التاريخ/الوقت لا يأخذ قيمة Now من السيرفر ، وانما يأخذه من الكمبيوتر الذي يعمل السجل ، واذا تاريخ/وقت اي من الكمبيوترات خطأ ، مما يعني انه من الصعب/المستحيل معرفة متى تم ادخال هذا السجل بوقته الصحيح مقارنة مع باقي السجلات. قد لا يشكل هذا مشكلة عند البعض ، ولكنه يشكل مشكلة ومعضله عندما تكون البيانات حساسة ومهمة ، ومعرفة من ادخل المعلومة و متى. توصلت الى الاستعانة بالدوال التالية ، واستعملها اول ما افتح البرنامج (ولمرة واحدة فقط) ، و اضع في المتغير Diff_Sec فرق التاريخ/الوقت بالثواني ، بين السيرفر والكمبيوتر ، ولما اضيف السجل اضيف قيمة هذا المتغير الى Now الكمبيوتر ، مما يعطي السجل وقت السيرفر ، وعليه تكون جميع السجلات تعمل على نفس التوقيت 🙂 اقوم بمناداة الدالة هكذا: call Get_Remote_PC_Time("\\192.168.100.88") Option Compare Database Option Explicit 'Fetch and display Net Remote Time Of Day from a 'remote Windows system. Supply a UNC hostname '(or a DNS name), or empty string for the local 'host's time and date. ' Private Const NERR_SUCCESS As Long = 0 Private Type TIME_OF_DAY_INFO tod_elapsedt As Long tod_msecs As Long tod_hours As Long tod_mins As Long tod_secs As Long tod_hunds As Long tod_timezone As Long tod_tinterval As Long tod_day As Long tod_month As Long tod_year As Long tod_weekday As Long End Type #If Win64 Or VBA7 Then Dim lngBufPtr As LongPtr Private Declare PtrSafe Function NetApiBufferFree Lib "netapi32" _ (ByVal lpBuffer As LongPtr) As Long Private Declare PtrSafe Function NetRemoteTOD Lib "netapi32" _ (UncServerName As Byte, BufferPtr As LongPtr) As Long Private Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (pTo As Any, uFrom As Any, ByVal lSize As LongPtr) #Else Dim lngBufPtr As Long Private Declare Function NetApiBufferFree Lib "netapi32" _ (ByVal lpBuffer As Long) As Long Private Declare Function NetRemoteTOD Lib "netapi32" _ (UncServerName As Byte, BufferPtr As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (pTo As Any, uFrom As Any, ByVal lSize As Long) #End If ' Public Diff_Sec As Double ' Public Function GetTOD(ByVal Server As String) As Date Dim bytServer() As Byte 'Dim lngBufPtr As Long Dim todReturned As TIME_OF_DAY_INFO bytServer = Trim$(Server) & vbNullChar If NetRemoteTOD(bytServer(0), lngBufPtr) = NERR_SUCCESS Then CopyMemory todReturned, ByVal lngBufPtr, LenB(todReturned) NetApiBufferFree lngBufPtr With todReturned GetTOD = DateAdd("n", _ -.tod_timezone, _ DateSerial(.tod_year, .tod_month, .tod_day) _ + TimeSerial(.tod_hours, .tod_mins, .tod_secs)) End With Else Err.Raise vbObjectError + 2000, _ "GetTOD", _ "Failed to obtain server time" End If End Function Public Function Get_Remote_PC_Time(txtServer As String) ' ' calling it: 'Get_Remote_PC_Time("\\192.168.100.88") ' Dim dtServerTime As Date 'Dim Diff_Sec As Double On Error Resume Next dtServerTime = GetTOD(txtServer) Diff_Sec = DateDiff("s", Now, dtServerTime) Debug.Print "Diff=" & Diff_Sec Debug.Print "Server=" & dtServerTime Debug.Print "Local ok= " & DateAdd("s", Diff_Sec, Now) ' If Err.Number <> 0 Then ' Debug.Print Err.Description ' Else ' Debug.Print CStr(dtServerTime) ' End If ' On Error GoTo 0 '' txtServer.SetFocus End Function . جعفر
    2 points
  4. السلام عليكم 🙂 استعملت برنامج اخوي عمر ضاحي ، وعملت عليه التعديل المطلوب حسب طريقة استخدامي للباركود في برامجي ، انا استخدم Code39 ، لعمل البرنامج ، ما لك علاقة بخط الباركود ، البرنامج تلقائيا ينصبه عند فتح البرنامج ، ويحذفه عند الانتهاء من البرنامج 🙂 هناك خاصية لعمل الليبلات في تقارير الاكسس ، مجرد تختار من الليبلات العالمية الموجودة ، او تعمل ليبلك الخاص (كما عملته انا بهذه الخطوات) : . . فيقوم الاكسس بتعديل مسافات الحواف 1587.Label.zip
    2 points
  5. السلام عليكم و رحمة الله استخدم الكود التالى Sub GetClass() Dim ws As Worksheet, Sh As Worksheet Dim LR As Long, Arr As Variant, Temp As Variant, Temp2 As Variant Dim i As Long, j As Integer, Fasl As String Dim Clss As String, p As Integer Set Sh = Sheets("قوائم فصول ") Sh.Range("B12:E46") = "" Sh.Range("I12:L46") = "" Fasl = Sh.Range("L1").Text Clss = Right(Fasl, 1) '----------------------- Select Case Clss Case 1 Set ws = Sheets("البيانات الأساسية الأول") Case 2 Set ws = Sheets("البيانات الأساسية الثاني") Case 3 Set ws = Sheets("البيانات الأساسية الثالث") Case Else End Select LR = ws.Range("D" & Rows.Count).End(3).Row Arr = ws.Range("D7:N" & LR).Value ReDim Temp(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) ReDim Temp2(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) '----------------------- For i = 1 To UBound(Arr, 1) If Arr(i, 3) Like Fasl Then p = p + 1 If p <= 35 Then For j = 1 To 4 Temp(p, j) = Arr(i, Choose(j, 1, 1, 10, 11)) Temp(p, 1) = p '----------------------- Next ElseIf p > 35 Then For j = 1 To 4 Temp2(p - 35, j) = Arr(i, Choose(j, 1, 1, 10, 11)) Temp(p - 35, 1) = p Next End If End If Next '----------------------- If p > 0 Then Sh.Range("B12").Resize(p, UBound(Temp, 2)).Value = Temp If p > 35 Then Sh.Range("I12").Resize(p, UBound(Temp2, 2)).Value = Temp2 End Sub
    1 point
  6. وعليكم السلام 🙂 الظاهر هذا الكود في VBA ، فخليني اعلمك كيف تصطاد🙂 اجعل كودك هكذا : dim mySQL as string mySQL="SELECT * FROM tblVacation where (((tblVacation.emp_code)= " & [TempVars]![EmpIdTemp] & " )) ORDER BY vacationstartdate Asc;" debug.print mySQL . في اسفل النافذة بتحصل على كود مثل التالي: SELECT * FROM tblVacation where (((tblVacation.emp_code)= 1234 )) ORDER BY vacationstartdate Asc; . انسخ الكود ، افتح استعلام جديد ، ولما تجيك نافذة اختيار الجداول ، اغلق النافذة ، ثم انقر بالفأرة اليمين في منتصف الاستعلام ، واختار SQL الصق الكود اعلاه ، ثم اختار Design ، فتحصل على استعلام عادي ، واضف الشرط الجديد ، ثم انقر الزر اليمين ، و اختار SQL مرة اخرى ، فتحصل على الكود المطلوب : . والآن يمكن تنظيف الكود كالتالي: من SELECT [VacationLife] AS Expr1, * FROM tblVacation WHERE ((([tblVacation].[emp_code])=1234) AND (([VacationLife])="سارية")) ORDER BY vacationstartdate; الى SELECT [VacationLife], * FROM tblVacation WHERE [emp_code]=1234 AND [VacationLife]='سارية' ORDER BY vacationstartdate ثم الى "SELECT [VacationLife], * FROM tblVacation WHERE [emp_code]= " & [TempVars]![EmpIdTemp] & " AND [VacationLife]='سارية' ORDER BY vacationstartdate"
    1 point
  7. قبل إعطائك كلمة السر أرجو تجربة المدخلات بشكل نهائي لأني تعبت من التعديل على رغبات و لم أدرك الرضى وأصبت بالحرج من الزملاء في المنتدى وكأني لم أصب الهدف ولم أحقق المطلوب . فكل مرة تقدم وتأخر البنود وتدمج الخلايا وتقسمها تهدم كل عمل قمت به من أجلك لساعات طويلة خلاصة الكلام جرب مدخلاتك فإن كانت المخرجات سليمة أرسلت لك كلمة السر وإن كان غير ذلك فاحذف الملف فليس بالإمكان أكثر مما كان
    1 point
  8. فنااااااااااااان كنت ابحث عن الطريق من وقت طويل و عجزت اوصل لها شكرا شكرا شكرا من القلب على هذه الهدية الرائعة
    1 point
  9. تحياتي تم استعمال الدالة DATEDIF في الملف المرفق مع تصحيح طفيف لخطأ (عدد الأيام) مع التعليل... 3.xlsx
    1 point
  10. اي فكرة منطقية يمكن ترجمتها وتنفيذها برمجيا والمنطق في طلبك يستلزم وجود بيانات ثابتة للمقارنة مع ما يطرأ من تغيير على هذه البيانات لا ارى مشكلة في عمل عمود في هذا الجدول بل هو المكان الصحيح لان المطلوب هو معرف الكشاف واسمه حتى نقارن بين صفته في الجدول والصفة المتغيرة في الاستعلام ان وجدت اعدت تجربة الاستعلام وهو يعمل على اكمل وجه ... الاستعلام يقوم بتحديث حقل الصفة في الجدول بناء على نتيجة الاستعلام
    1 point
  11. السلام عليكم ايضا من الحلول اذا كان الانترنت متاح في الاجهزة .. (( مع مراعاة كونه شرطا في تحرير البيانات .. )) وكما نعلم وما هو حاصل الآن اذا تعطل الانترنت .. توقف كل شيء : الهواتف وغيرها ولما قرأتم تعليقي هذا الحل ان يتم ادراج تاريخ ووقت الانترنت الحالي .. بعيدا عن السيرفر والاجهزة الأخرى
    1 point
  12. السلام عليكم اخوي ابو احمد 🙂 عندي سببين اللي ما خلوني استعمل تاريخ/وقت الخادم مباشرة: الشبكة ضعيفة ، وكل ثانية في البرنامج مهمة ، فمناداة وقت الخادم حوالي 1000 مرة خلال ساعة ، وبواسطة بين 2-3 مستخدمين ، كان بيشكل بطئ في البرنامج ، ايام زمان كنا نقدر وبكل بساطة تغيير وقت الكمبيوتر المحلي ، اما هذه الايام ، فيجب ان يكون عندك صلاحية مسؤول ، وبالتالي تجيك رسالة تسألك اذا اردت تغيير التاريخ/الوقت ، واذا نقرت على لا ، ضاع الشغل كله 😁 ولا تنسى اني انادي هذه الدوال مرة وحدة فقط ، عند فتح البرنامج فقط 🙂 هل فيه شيء آخر ممكن اكون سهوت عنه ، ويمكنك تفيدني فيه 🙂 جعفر
    1 point
  13. السلام عليكم اخوي يحيى بمعطياتك هذه لا يمكن رصد التغير حتى لو اعتمدنا النتيجة النهائية بواسطة كود عبر احد النماذج فيصعب التنبؤ بفترة التغير جيتها من يمين وجيتها من يسار لمحاولة تصيد لحظة التغيير ولم اخرج الا بحل وحيد وهو سهل .. ودائما ابحث عن الحلول السهلة ----------------------------------------------------------------- الحل هو اضافة حقل او عمود في الجدول للصفة ويتم تحديثه بعد رصد آخر التغيرات بمعنى : اننا نفتح الاستعلام فنجد رقم 1 امام كل كشاف تغيرت صفته وعند الانتهاء من رصد الاسماء المعنية او طباعنها في تقرير .. نقوم بتشغيل الاستعلام Query1 لتحديث الصفات في الجدول ----------------------------------------------------------------- بما ان التغير يحدث على التاريخ الحالي Now اذا للتجربة : حاول التغيير في تواريخ الميلاد في الاستعلام Qry_etat_civile وانظر ماذا يحدث ستبقى الارقام التي تشير الى التغيير ما لم تقم بتحديث بيانات الجدول عبر الاستعلام Query1 ------ اتمنى هذا الحل ان يلبي طلبك scout2.rar
    1 point
  14. أنا لا أحبذ استخدام نتائج المدد على شكل سنة وشهر ويوم في الحسابات، حيث يصعب الحصول على نتائج دقيقة، والبديل هو حساب المدد بالسنين وأجزاءها العشرية. في المرفق دالتان أحدهما لحساب مدد الشهور كلها 30 يوم والأخرى لمدد الشهور الفعلية وأنا أنصح بالثانية. جرب قد تعجبك وتغير قناعاتك ومن ثم طريقتك في الحساب. PeriodsCalculator_01.xlsm
    1 point
  15. حسونة حسين بارك الله فيك استاذي وجزاك الله خيرا
    1 point
  16. الاخ علي بن علي شكرا لك على تفاعلك واعتقد ان الحل بالارتباط التشعبي مقابل كل اسم ولك مني كل الشكر والتقديرعلى جهدك جزاك الله خير
    1 point
  17. بعد اذن الاخ الصديق ياسر تطوير بسيط للكود بحيث انه بالاضافة الى ادراج اسماء الصفحات، الوصول الى الصفحة المعنية بالضغط على اسمها(HyperLink) فهرسة الصفحات.rar
    1 point
  18. بعد اذن الاستاذه المحترمين _ جزاكم الله خيرا على اعمالكم عبدالله باقشير حماده عمر محمدى عبد السميع تم توظيف و تجميع الكودين للملفين بالملف المرفق كود ادراج شيتات بفورم للاستاذ / حماده عمر ملفhttp://www.officena.net/ib/index.php?app=core&module=attach&section=attach&attach_id=68757 كود التنقل بين الصفحات للاخ عبداله باقشير بملف الاستاذ محمدىhttp://www.officena.net/ib/index.php?app=core&module=attach&section=attach&attach_id=51698 ليكون ملف واحد و به ادراج شيتات بفورم و التنقل بين الصفحات بسهولة ارجو قبول تقديرى و احترامى لاعمالكم المبدعه معدل_ادراج شيت _التنقل بين الصفحات_.rar
    1 point
  19. السلام عليكم الاستاذ الفاضل ابو انس حاجب ادعو لك الله سبحانه وتعالى ان يعطيك الصحة والعافية وكما ذكرت سابقا بانني عملت اللازم والملف يعمل بشكل ممتاز وعدلت على اوراق العمل وكانت الاستجابة رائعة ولكن لي طلب بسيط ان شاء الله يجعل عملكم هذا في ميزان حسناتك وطلبي في الملف المرفق وارجو ملاحظة الاهتزاز البسيط الذي يحدث عند التنقل بين الصفحة الرئيسية والاوراق الاخرى ولو الاهتزاز بسيط ويمكن التغافل عنه ولكن ان كان ذلك ممكن فارجو من سيادتكم ازالة هذا الاهتزاز وتقبل دعواتي لك ان يرزقك الله سبحانه وتعالى خير الدنيا وخير الاخرة وانا اعلم بان المشاركة يجب ان تكون بلا كلمة سر ولكن اعذروني لانني خفت ان احذفها ولا استطيع اعادة كتابتها لقلة معرفتي بالاكواد(كلمة السر 1 والرقم السري 1) ودمتم بحفظ الله ورعايته كلمة سر1 والرقم 1شاشة افتتاحية استاذ انس حاجب.zip
    1 point
  20. السلام عليكم اخواني الاعزاء انا حاولت ان اجعل الملف يفتح على الصفحة الرئيسية وادخلت الكود الموجود في المشاركة 6 للاستاذ والاخ ابو انس حاجب حفظه الله ولكنه تعارض مع الفورم لكلمة المرور وهي (1) والاسم (1) ارجو مساعدتي بجعل الفورم يفتح اولا لكلمة السر ثم يجبر بعدها بفتح الصفحة الرئيسية وهي للاستاذ الفاضل المبدع رجب دام عزه ومنها الانتقال الى الصفحات الاخرى وتقبلوا دعواتي لكم بالصحة والعافية ودمتم بحفظ الله ورعايته شاشة افتتاحية واظهار الصفحة الرئيسية.zip
    1 point
  21. السلام عليكم ورحمة الله وبركاته أخي الفاضل حفظك الله راجع المرفق أرجو أن يكون ماتتمنى أبو أنس تنقل بين الصفحات2.rar
    1 point
  22. بعد أذن أحي أبو أنس بصراحة حاولت لنفسي كثيرا وقرأت أكثر لصنع كود إخفاء وإظهار للصفحات لم أجد أجمل ولاأروع من عمل عالمنا الجليل ( خبور خير) في هذا الكود أليك أخي إحدي روائعة مرفق 2.rar
    1 point
  23. السلام عليكم ورحمة الله وبركاته أخي الفاضل أنظر المرفق لعله المطلوب أبو أنس تنقل بين الصفحات.rar
    1 point
  24. السلام عليكم .. لك مني جزيل الشكر أستاذي وأخي العزيز أبو أسامة إلا أنه لدي طلب آخر لو تكرمت كيف يمكنني إظهار نفس النص المكتوب في مربع النص في إحدى الصفحات ليظهر في مربع النص في صفحة أخرى وذلك عند التنقل بين الصفحات سواء كان التنقل عن طريق الزر أو عن طريق التنقل بالماوس تقبل تحياتي .. MltiPages.rar
    1 point
  25. السلام عليكم ... مرفق المثال معدل كما طلبت. لاحظ أننا في كل عملية إنشاء لعنصر قائمة نقوم بربط هذا العنصر بالمايكرو المخصص ، ولاحظ أننا ننشئ القوائم عند فتح الملف ونحذفها عند إغلاقه (كي لا تبقى موجودة عند فتح ملفات أخرى). بالتوفيق jaffjaff123.zip
    1 point
×
×
  • اضف...

Important Information