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

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


Popular Content

Showing content with the highest reputation since 29 فبر, 2020 in all areas

  1. 16 points
    السلام عليكم 🙂 اخواني ، الجميع يساعد في المنتدى بوقته وبدون مقابل ، وعندنا مثل يقول: حبة الزبيب ما تشبّع ، ولكنها تحلّي الفم 🙂 فرجاء خلونا نشجع الاعضاء في العطاء 🙂 لما تحصل على رد له قيمة ، فتشجيعا للعضو الذي يساعدك ، اخبر العضو بأنك مُعجب برده ، هكذا : . . ولما تحصل على اجابة لسؤال موضوعك ، فرجاء اختيار افضل اجابة ، هكذا (حتى مستقبلا يسهل معرفة الاجابة الصحيحة) : . شكرا 🙂 جعفر ومع الاعتذار لأخي احمد لإستخدام اسمه في المثال 🙂
  2. 10 points
    قبل فتح التطبيق يتم فقط اضافة ملفات لتنسيقات الصوت والفيديو المختلفة داخل المجلد المرفق باسم sound files يا عينى ع الدلع او بعد فتح التطبيق يتم الضغط على زر الأمر تحديث المكتبة القسم الايمن من الشاشة هو التحكم فى مشغل الوسائط برنامج الميديا بلاير الجزء الاوسط هو التنقل بين الاذاعة الصوتية وتعمل اون لاين او مكتبة ملفاتك من المجلد Sound files واسفل قائمة التشغيل التى تحتوى على الملفات خصائص واعدادات التشغيل والتكرار حاجه دلع الجزء الايسر وهو خاص بالتحكم فى الصوت لجهاز الحاسوب بس خلاص اسف انا باتصفح من الجوال مش قادر اعمل تنسيق للموضوع اكتر من كده ولا عارف ارفق صور فى انتظار ردكم بعد التجربة وفى الختام اتوجه بكل الشكر والتقدير والعرفان بالجميل لكل اساتذتى جميعا واخوانى فى هذا الصرح الشامخ الذين اتعلم منهم دائما وابدا اخص بالشكر الاستاذ القدير @jjafferr 🌹 حيث اننى دمجت بهذا المرفق الكثير مما قدمه من أفكار وتوجيهات عبر اشهر وسنوات وكذلك الاستاذ القدير @ابوخليل 🌹 كذلك استخدمت هنا الكثير من الاكواد التى تعلمتها منه عبر اشهر سنوات وباقى كوكبة اساتذتى الفضلاء واخوانى كل الشكر لكم 🌹🌹🌹 Digital Player App.zip
  3. 8 points
    وعليكم السلام -يمكنك استخدام هذه المعادلة =SUMPRODUCT(--($H$10:$H$20=$N1),SUBTOTAL(2,OFFSET($G$10:$G$20,ROW($H$10:$H$20)-ROW(H10),0,1))) فلترة1.xlsx
  4. 8 points
    السلام عليكم 🙂 رجاء مراجعة موضوع النسخة 2 من هنا : واجهة هذه النسخة: البرنامج يقوم بهذه الخطوات التي يوصي بها المحترفين (كما هو موضح في الصورة اعلاه) ، طريقة العمل: 1. اختار ملف اكسس ، 2. اذا الملف محمي بكلمة سر ، فيمكن كتابته في المربع المخصص ، حيث سيتم حفظه في ذاكرة الكمبيوتر ، والتي يجب عليك ان تدخلها يدويا للقيام بالخطوات 2 و 3 لمرة واحدة ، بينما البرنامج سيدخلها تلقائيا للخطوات التالية ، 3. يجب ان تمسك مفتاح الشفت ، ثم تضغط على زر Decompile ، ولا تترك الزر إلا لما ينتهي البرنامج من عمله ، عندما نرى الخطوات 8 و 9 🙂 هذه النسخة اسرع من النسخة السابقة ، وافضل 🙂 جعفر Decompile_3.zip
  5. 7 points
    وجدت لك هذا @Elsayed Bn Gemy انظر لعدد السجلات في التقرير .... KANORY.accdb
  6. 7 points
    اذا اردت ان تحدد الصفوف المكررة في جدول ما اليك هذا الملف Find_dup_rows.xlsm
  7. 6 points
    لم اطلع على المرفق ولكني عملت لك هذا حسب ما فهمت Dim i As Integer Private Sub ID_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then i = i + 1 If i = 3 Then MsgBox "اعمل الإجراء" Exit Sub End If Else i = 0 End If End Sub test1.mdb
  8. 6 points
    ممكن ذلك من خلال هذا التعديل على الكود Option Explicit Sub Find_Dupl_Rows_new() Dim I%, Ro, m% Dim REP As Range, My_Rg As Range Dim COl As Collection Dim Arr, n Set COl = New Collection Set My_Rg = Range("A1").CurrentRegion Ro = My_Rg.Rows.Count Set My_Rg = My_Rg.Offset(1).Resize(Ro - 1) My_Rg.Interior.ColorIndex = xlNone Range("E2").Resize(Ro - 1).ClearContents Range("G2:K2").Resize(Ro - 1).Clear For I = 2 To Ro Arr = Application.Transpose(Application.Transpose _ ((Cells(I, 2).Resize(, 3)))) Arr = Join(Arr, "*") On Error Resume Next COl.Add I, Arr If Err.Number <> 0 Then m = m + 1 Cells(I, 5) = "Duplicate" Cells(I, 5).Interior.ColorIndex = 40 If REP Is Nothing Then Set REP = Cells(I, 2).Resize(, 3) Else Set REP = Union(REP, Cells(I, 2).Resize(, 3)) End If 'REP End If 'Err Next I On Error GoTo 0 If Not REP Is Nothing Then REP.Interior.ColorIndex = 40 MsgBox "You have :" & m & " duplicate Rows" n = REP.Areas.Count m = 1 For I = 1 To n Range("G1").Offset(m).Resize(REP.Areas(I). _ Rows.Count, 3).Value = REP.Areas(I).Value Range("j1").Offset(m) = REP.Areas(I).Address Range("K1").Offset(m) = REP.Areas(I).Rows.Count m = m + REP.Areas(I).Rows.Count Next '================================= With Cells(2, "g").Resize(m - 1, 5) .Borders.LineStyle = 1: .Font.Size = 16 .Font.Bold = True: .Interior.ColorIndex = 28 .InsertIndent 1 End With '========================= Else MsgBox "Not duplicate Rows " End If Set COl = Nothing: Set REP = Nothing End Sub
  9. 6 points
    تفضل تم وضع المعادلة في العمود E وتتم الفلترة من خلال هذا العمود =IF(AND(ISBLANK(B2);ISBLANK(C2));"إخفاء الصف";"") Filtering.xlsx
  10. 6 points
  11. 5 points
    السلام عليكم 🙂 الاستعلام الذي عملته انت : . بدون ربط بين الجداول ، وهذا معناه ، انك تطلب سجلات عددها : 16x8x11x16x27x24x10x6 = 875,888,640 (شوف صورة سجلات الجداول في الاسفل ، علشان تعرف من وين جئت بهذه الارقام 🙂 ) ، فهل سرعة محرك كمبيوترك CPU ، وكمية الذاكرة المؤقته RAM ، قادرة على عرض هذا الكم الهائل من السجلات 🙂 . خلينا نشوف استعلام علشان نفهم الموضوع : نخلي الجدولين فقط ، والي نعرف ان مجموع عدد السجلات سيكون : 16x8 = 128 . والنتيجة ، وكما يعرضها الاستعلام : . وهذا اللي عملنه انا بإستعمال مرفقك ، وهي الطريقة الافضل لبرنامجك : . ولكن ، هذه طريقة الاكسل في وضع البيانات ، بينما اذا اردنا تعديل الاكسس ، فيكون كالتالي: نعمل الجدول tbl_Salary والذي سيشمل جميع الجداول الثمانية ، وبدون حقلي "المحسوب" ، ومع اضافة حقل اسم "المجموعة" : . والنتيجة : . وعلى اساس هذا الجدول ، نعمل استعلام qry_Salary ، ونضيف الحقلين "مج الاستقطاع" و "الصافي" مع معادلاتهم : . ومقارنة سجلات الجدول السابق مع الاستعلام الجديد : . والآن وبكل بساطة تعمل الاستعلام الذي يقوم بعملية جمع الصافي : . والنتيجة : . جعفر 1197.wameed.accdb.zip
  12. 5 points
    بارك الله فيك اخي الكريم على الرد ولكن قاعدة البيانات فرنسية فقط عربتها لك حتى تفهم علي وشكرا بالنسبة للملاحظة لقد عدلت العنوان وشكرا لك مع فائق الاحترام و التقدير تحياتي
  13. 5 points
    تحديد عدد السجلات المراد عرضها تباعا فى نموذج مستمر اعتذر جدا صادفت مشكلة بعد رفع المرفق وهو حدوث خلل عند مسح سجلات من منتصف الجدول لان فكرتى اعتمدت على حقل الترقيم التلقائي ولما حدث خلل بالترتيب حدث خلل بعرض النماذج ولازلت افكر بكيفة الحل تم حل المشكلة بفضل الله وتم تحديث المرفق عدد السجلات للنموذج المستمر v.2.mdb
  14. 5 points
    نعم ممكن ومن اسهل الطرقلتنفيذ ذلك If Me![c_8].Caption = "نساء" Then Me.Type = "نساء" Me.c_8.Caption = "رجال" ElseIf Me![c_8].Caption = "رجال" Then Me.Type = "رجال" Me.c_8.Caption = "اطفال" ElseIf Me![c_8].Caption = "اطفال" Then Me.Type = "اطفال" Me.c_8.Caption = "نساء" End If وتفسيرة كما يلي اذا كانت تسمية زر الامر نساء اجعل قيمة النوع نساء غير تسمية الامر الى رجال اذا كانت تسمية الامر رجال اجعل النوع رجال غير تسمية الامر الى اطقال اذا كانت تسمية الامر اطفال اجعل النوع اطفال غير التسمية لزر الامر الى نساء وذلك للاستمرار في دورة تنفيذ الكود اغلق الشرط الملف مرفق Database1011.accdb
  15. 5 points
  16. 5 points
    وعليكم السلام-اهلا بك فى المنتدى كان عليك استخدام خاصية البحث بالمنتدى فبه ما تطلب , فيمكنك الإستعانة بهذا الرابط جعل برنامج الاكسيل يتوقف بعد زمن معين أو هذا منع المستخدم من فك حماية الشيت او يمكنك الإستعانة بهذا الرابط فبه كود من أعمال استاذنا الجليل ياسر خليل حماية محرر الأكواد من فك الحماية حتى لو عرف الهاكر كلمة السر
  17. 5 points
    بارك الله فيك على التوضيح وننتظر دره لربما يرد شيئ اخر ......
  18. 5 points
    لاحظ الصورتين ...... أين الفرق وضح .....
  19. 5 points
    أخي حسين : من الخطأ أن تجعل رقم الفاتورة يتغير بتغير الحذف أو غيره ..... المفروض يبقى ثابت لأغراض الحسابات والاسترجاع والضمان وغيره ..... لكن حسب طلبك انظر المرفق ..... Music.rar
  20. 5 points
    هذه العلامة طالما انك تريد من المعادلة العد فلابد من وضعها واذا جربت ازالتها فلم يخرج الناتج كما تريد
  21. 5 points
  22. 5 points
    السلام عليكم 🙂 الجوازات والبطاقات الشخصية والهويات الحكومية ، في اسفلها كود يسمى MRZ وفيه معلومات من الوثيقة ، الجواز ، وفي اسفله سطرين من كود MRZ : . والهوية ، وفي اسفلها 3 اسطر من كود MRZ : . وهناك عدة اجهزة (هي في الواقع سكانرات) التي يمكنها قراءة هذه الوثائق ، وتستعمل نظام OCR وتحول الصورة الى نص ، ومن ضمن هذه الاجهزة ، جهاز 3M CR100 https://www.gemalto.com/govt/document-readers/cr100 والظاهر ان هذا الجهاز معتمد من قِبل البوابة الالكترونية الموحدة لحجاج الخارج . . تنزيل وتنصيب برنامج التشغيل : http://www.3m.com/ssdcp/3M Swipe Readers/SDK/3M Swipe Reader SDK 1.2.1.2 Setup.exe خلونا نستعمل هذا الجهاز عن طريق الاكسس 🙂 بعد تنصيب برنامج تشغيل الجهاز ، يقوم برنامج الاكسس بتشغيل برنامج الجهاز في الكمبيوتر (فإذا ما عملت تنصيب للبرنامج ، اوقف عمل السطر : ) Private Sub Form_Load() On Error GoTo err_Form_Load 'turn ON the scanner xml program ' Call Restart_XML '<<< اوقفوا عمل هذا السطر . النموذج يكون جاهز على الحقل Line_0 ، والذي يبدا بأخذ نتيجة OCR ، . . وتكون النتيجة بهذه الطريقة (انا وضعت الارقام امام الاسطر) : 0'START 1'OCR Line 1: IDOMN1900000<<3<<<<<<<<<<<<<<< 2'OCR Line 2: 7008529M2018227OMN<<<<<<<<<<<6 3'OCR Line 3: ALI<MOHAMMED<HUSSAIN<<AL<MOOSA 4'MSR Track 1: 5'MSR Track 2: 6'MSR Track 3: 7'End . لعمل البرنامج ، اضطررت لعمل الاكواد بنفسي ، لأن SDK الجهاز كانت للغات اخرى غير VBA ، وهذه الوحدة النمطية التي تقوم بتفكيك الكود اعلاه ، سواء لجواز او بطاقة او فيزا : Public Function Parse_MRZ(frmN As String) On Error GoTo err_Parse_MRZ ' '08-06-2018 'by jjafferr ' Dim L1 As String Dim L2 As String Dim L3 As String Dim gDocType As String Dim Pass_Type As String Dim gLastName As String Dim gFirstName As String L1 = Replace(Forms(frmN)!Line_1, "OCR Line 1: ", "") L2 = Replace(Forms(frmN)!Line_2, "OCR Line 2: ", "") L3 = Replace(Forms(frmN)!Line_3, "OCR Line 3: ", "") gDocType = Mid(L1, 1, 1) Select Case gDocType Case "P", "V" 'passport , Visa Forms(frmN)!gDocType = gDocType 'LINE 1 Pass_Type = Mid(L1, 2, 1) 'Either < or Passport type Forms(frmN)!gIssuing = Mid(L1, 3, 3) gLastName = Mid(L1, 6, InStr(L1, "<<") - 6) gLastName = Replace(gLastName, "<", " ") Forms(frmN)!gLastName = Trim(gLastName) gFirstName = Mid(L1, InStr(L1, "<<") + 2, InStr(InStr(L1, "<<") + 1, L1, "<<") - InStr(L1, "<<") - 2) gFirstName = Replace(gFirstName, "<", " ") Forms(frmN)!gFirstName = Trim(gFirstName) Forms(frmN)!gDocNumber = Mid(L2, 1, 9) 'LINE 2 Forms(frmN)!gCountry = Mid(L2, 11, 3) Forms(frmN)!gDOB = DateSerial(Mid(L2, 14, 2), Mid(L2, 16, 2), Mid(L2, 18, 2)) Forms(frmN)!gGender = Mid(L2, 21, 1) Forms(frmN)!gDocExpiry = DateSerial(Mid(L2, 22, 2), Mid(L2, 24, 2), Mid(L2, 26, 2)) Forms(frmN)!gAddInfo = Mid(L2, 29, InStr(L2, "<<") - 29) Case "I", "A", "C" 'ID Forms(frmN)!gDocType = Mid(L1, 1, 2) Pass_Type = Mid(L1, 2, 1) 'Either < or completing the first letter Forms(frmN)!gIssuing = Mid(L1, 3, 3) Forms(frmN)!gDocNumber = Mid(L1, 6, InStr(L1, "<<") - 6) Forms(frmN)!gDOB = DateSerial(Mid(L2, 1, 2), Mid(L2, 3, 2), Mid(L2, 5, 2)) 'LINE 2 Forms(frmN)!gGender = Mid(L2, 8, 1) Forms(frmN)!gDocExpiry = DateSerial(Mid(L2, 9, 2), Mid(L2, 11, 2), Mid(L2, 13, 2)) Forms(frmN)!gCountry = Mid(L2, 16, 3) gFirstName = Mid(L3, 1, InStr(L3, "<<") - 1) 'LINE 3 gFirstName = Replace(gFirstName, "<", " ") Forms(frmN)!gFirstName = Trim(gFirstName) gLastName = Mid(L3, InStr(L3, "<<") + 2) gLastName = Replace(gLastName, "<", " ") Forms(frmN)!gLastName = Trim(gLastName) End Select Exit_Parse_MRZ: Exit Function err_Parse_MRZ: If Err.Number = 9 Then 'susbcription out of order, ignore Resume Next ElseIf Err.Number = 13 Then 'Type mismatch, ignore Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_Parse_MRZ End If End Function برنامجي الذي في الخدمة ، يقرأ بيانات الجوازات والهويات في اقل من 3 ثواني ، بالأضافة الى قراءة باركود بعض الهويات الاخرى ، وادخال يدوي لأنواع اخرى من الهويات ، لهذا السبب كان يتطلب مني استعمال هذه الاحداث🙂 Public Sub Line_0_BeforeUpdate(Cancel As Integer) Private Sub Line_0_KeyDown(KeyCode As Integer, Shift As Integer) Private Sub Line_0_AfterUpdate() Private Sub Line_7_AfterUpdate() . احد اهم الامور التي اخذت مني وقت طويل لمعرفتها هي ، يجب ان تكون لغة الكيبورد بالانجليزي ، وإلا فالنتائج تعطيك خطأ ، لهذا السبب فالبرنامج تلقائيا يحول اللغة الى انجليزي 🙂 الجدول و الكود قد يكون فيه بقايا من برنامجي ، ولكن لن يضروكم ان شاء الله 🙂 جعفر CR100 card reader.zip
  23. 5 points
    أحسنت استاذ جعفر .. وهو ده دائما ما ننوه له واعتقد ان هذا اقل ما يقدم لصاحب الفضل بعد ربنا فى حل المشكلة التى تواجهك أكرمك الله وفتح عليك للتنويه لهذا الموضوع الهام جدا
  24. 5 points
    بالعكس جدا جميل ..... اردت التأكيد عليه اظهارة ...... بارك الله قي أخي خالد ...... تشكر
  25. 5 points
    تفضل ....... db (5).accdb db (5).accdb
  26. 5 points
    وعليكم السلام تفضل ..... New Microsoft Access Database.accdb
  27. 5 points
    السلام عليكم انظر للنقرير Report1 اتمنى يكون المطلوب تحياتي MARK.rar
  28. 5 points
    السلام عليكم 1- الملف الاول فيه تنبيه انك ادخلت رقم ايصال (ويعطيك رقمه برسالة) سابقا ويرفض التسجيل 2- الملف الثاني فيه تنبيه انك ادخلت رقم ايصال (ويعطيك رقمه برسالة) سابقا ويسمح التسجيل اتمنى يكون طلبك تحياتي ESAL-1.rar ESAL-2.rar
  29. 5 points
    السلام عليكم 🙂 نعمل البرنامج ، ثم نقسمه الى قسمين ، FE الواجهة و BE الجداول ، ولما نعطيه للمستخدم ، نربط الجداول بمسار خاص به ، ويعمل البرنامج. ولما المستخدم يحتاج الى تعديل/اضافات ، ويرسل لنا نسخته بالايميل (انا ممكن اكون مسافر وبعيد عن نسختي) ، فيجب علينا ان نغير مسار الجداول ليتناسب مع مجلدات الكمبيوتر عندنا ، ولما ننتهي من التعديل ، نرسله بالايميل ، وهناك يجب على المستخدم ان يغير المسار الى ذلك الذي به BE الاصل 🙂 المشكلة انه: 1. بعض الاوقات نكون قد وضعنا الـ BE في مكان لا يجب ان يعرفه المستخدم ، فلا نريد تدخل منه لهذا التغيير ، 2. بعض الاوقات المستخدم لا يعرف مكان الـ BE اصلا ، 3. وبعض الاوقات ، المستخدم لا يكون فني ليعرف كيف يختار مكان الـ BE 🙂 صادفتني هذه المشكلة مراراً ، ومرة دفعت الثمن غالي لما ربطوه بالـ BE الغلط ، ربطوه بنسخة الـ Backup بدل عن النسخة الاصل 😁 الى ان اهتديت الى هذه الطريقة 🙂 الفكرة هي عبارة عن اضافة جدول tbl_ReLink_To_Original في الـ FE فيه سجلين ، سجل يحتوي على مسار BE المستخدم ، وسجل يحتوي على مسار BE المبرمج ، وبدل هذا الجدول ، ممكن ان نضع ملف نص txt في مجلد FE ، ونكتب فيهم السجلين ، ثم نقرأهم ، ولكن الجداول في الـ FE تناسبني اكثر ، فإستعملتها 🙂 1. لمعرفة مسار BE المستخدم: . . ثم ننسخه من (1) جدول MSysObjects الى السجل الاول (Seq = 1) في جدولنا (2) tbl_ReLink_To_Original . ثم في السجل الثاني (Seq = 2) ، نكتب مسار الـ BE حسب مجلدات الكمبيوتر عندنا (3) . طريقة العمل: نعمل ماكرو Macro باسم Autoexec ، والذي يقوم الاكسس بفتحه وتنفيذ اوامره اول ما يفتح البرنامج ، 1. نقوم بتشغيل الكود الذي سيربط الـ BE الى المسار الصحيح للمستخدم (اما المبرمج فلا يسنخدم هذا الماكرو ، وانما يدخل في البرنامج بمسك مفتاح الشفت) ، 2. اذا لم يحصل البرنامج على المسار الصحيح ، فيجب ان نخبره ان يعطينا نافذة نختار منها المسار الصحيح ، وهناك عدة طرق ، واخترت طريقتي هنا ، 3.4.5.7.8 هذه لإخفاء جميع كائنات البرنامج من جداول واستعلامات ونماذج وماكرو وتقارير ووحدات نمطية ، وتوسيع البرنامج لحجم الشاشة (فلا نحتاج ان نجعل النموذج منبثق ، والذي به الكثير من المشاكل) ، 5. فتح النموذج الاول من البرنامج ، . هذه هي الوحدة النمطية التي تقوم بالعمل (1) اعلاه : Public Function f_ReLink_To_Original(Optional Seq As Integer = 1) 'On Error GoTo err_f_ReLink_To_Original On Error GoTo Exit_f_ReLink_To_Original ' ' The client have his own path to the linked BE tables, ' yet for Development when we want to do change and modifications on the FE, ' we want to link this FE to our local BE tables, for testing, ' and we are done, we will send this FE back to the client, which will have our BE path!! ' ' Although the FE have a code on startup, which will prompt for the new BE path, but not all clients know how to use it!! ' So I added a table tbl_ReLink_To_Original to the FE, and the path to the client BE path, as Seq = 1 , ' and for the Developer BE, the Seq is 2 or other numbers. ' ' for the Development BE path, we call this Function, for the immediate window: ' ?f_ReLink_To_Original(2) ' ' or from a normal Event: ' Call Call f_ReLink_To_Original(2) ' ' and enter the DB with Shift key, ' ' and when the FE goes to the client, this Function will call Seq = 1 by default, thus returning their correct Path. ' ' ' by jjafferr ' ' v1. 24-Feb-2020 ' Dim db As dao.Database Dim tdf As dao.TableDef Dim ConnectionString As String, Linked_Connection As String Set db = CurrentDb 'which BackEnd the user selected ConnectionString = DLookup("[DB_Path]", "tbl_ReLink_To_Original", "[Seq]=" & Seq) 'the existing BackEnd Linked_Connection = DLookup("[Database]", "MSysObjects", "[flags] = 2097152") 'if the existing BackEnd = User Selected, then No need to connect again, just exit If ConnectionString = Linked_Connection Then GoTo Exit_f_ReLink_To_Original For Each tdf In db.TableDefs ' Only make a change if the table is a linked table If Len(tdf.Connect) Then tdf.Connect = ";DATABASE=" & ConnectionString tdf.RefreshLink End If Next Exit_f_ReLink_To_Original: Exit Function err_f_ReLink_To_Original: If Err.Number = 3170 Then 'MsgBox "رجاء التاكد من مسار القاعدة الموجوده في الجدول" & vbCrLf & "tbl_ReLink_To_Original" 'Resume Next Resume Exit_f_ReLink_To_Original Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_f_ReLink_To_Original End If End Function . اما للمبرمج ، فيجب عليه ان يدخل الكود ويكتب (لاحظوا اننا استخدمنا الرقم Seq = 2 ، ليشير الى السجل الثاني في الجدول ، المشير الى مسار الـ BE حسب مجلدات الكمبيوتر عندنا (3) : من نافذة الكود السفلى: immediate ?f_ReLink_To_Original(2) او من اي حدث Call f_ReLink_To_Original(2) . واذا اردت الاستفادة من هذه الطريقة لبرامجك ، فيجب عليك استيراد هذه الكائنات الى برنامجك (مع الاخذ في الاعتبار تغيير اسم النموذج في ماكرو autoexec ) : جعفر Relink Tables.zip
  30. 5 points
    وعليكم السلام تفضل db (4).accdb
  31. 5 points
    تحية طيبة وعطرة... تفضل ما طلبته في الملف المرفق... بن علية حاجي Cash at Banks (TEST).xlsm
  32. 5 points
    حل الموضوع بسيط جدا لو انت هتربط عن طريق الكود الي انا اضفته بالمرفق الي في المشاركة بعد ما تصدر الجداول الي سيكوال لابد من عمل مفتاح اساسي في كل جدول مثل ما في الصوره
  33. 5 points
    شكراً استاذ محسن و لي انا بهذا الشأن هذا الماكرو (عسى ان ينال الإعجاب) Option Explicit Sub S_H_Test_NEW() Dim D As Worksheet: Set D = Sheets("Data") Dim M As Worksheet: Set M = Sheets("المطلوب") Dim ARR(): ARR = Array("S", "G", "C", "H") Dim Obj As Object, i%, Chek%, t% Set Obj = CreateObject("Scripting.Dictionary") M.Range("K2").CurrentRegion.ClearContents i = 2 Do Until D.Range("F" & i) = vbNullString For t = 1 To 4 Chek = Chek + (UCase(M.Cells(2, t)) = _ UCase(D.Cells(i, ARR(t - 1)))) Next If Chek = -4 Then _ Obj.Add i, D.Cells(i, "F") i = i + 1: Chek = 0 Loop If Obj.Count Then _ M.Cells(2, "k").Resize(Obj.Count) = _ Application.Transpose(Obj.items) Set Obj = Nothing: Set D = Nothing: Set M = Nothing Erase ARR End Sub الملف من جديد MY_search_MD_SH.xlsm
  34. 4 points
    جرب هذا الماكرو Option Explicit Sub ALL_in_one_cells() Dim ro, st$, i% ro = Cells(Rows.Count, 1).End(3).Row For i = 1 To ro If Cells(i, 1) <> vbNullString Then st = st & Cells(i, 1) & "," End If Next st = Mid(st, 1, Len(st) - 1) & "." Cells(3, 4) = st Cells(3, 4).Columns.AutoFit End Sub الملف مرفق One_for_All.xlsm
  35. 4 points
  36. 4 points
    وعليكم السلام 🙂 جرب هاي: if len(me.parent!B & "")=0 then 'me.parent.setfocus 'بعض الاحيان نحتاج الى هذا السطر ايضا me.parent!B.setfocus end if جعفر
  37. 4 points
    السلام عليكم الأساتذة الأفاضل/ الإخوة الكرام هذا تطبيق متواضع أنجزته باعتماد المؤشر العلمي IBM لتييم الوزن ما رأيكم فيه كتطبيق من الناحية التقنية؟ وكذلك مناسبة لقياس وتقييم وزنكم كلمة مرور حماية الأكواد هي:123 والسلام عليكم poids v2.xlsm
  38. 4 points
    مشاركه مع احبتي وعذرا اكتب من الجوال مع العلم ان سؤالك فيه لبس شويه انت تقول اول ثلاث ارقام تساوي ٧ وهذا متناقض حسب فهمي تقول اول ثلاث ارقام تساوي ٧٧٧ وهنا استخدم نفس تعبيرك وباستخدام الداله لفت وبعدد ٣ للباراميتر If Left(Me.serh_Barcod, 3 )= 777 Then وقد تحتاج لوضع الرقم ٧٧٧ في علامة تنصيص كنص بالتوفيق
  39. 4 points
    برنامج شئون العاملين الباسوورد 2545 برنامج شئون العاملين.rar
  40. 4 points
    وعليكم السلام -اهلا بك فى المنتدى ,لك ما طلبت fixed Time.xlsm
  41. 4 points
    وعليكم السلام ورحمة الله ..... فكرة : انها تشبه نظام طباعة الشيكات ..... بمعنى ..... - تحديد الطول والعرض بدقة - معرفة ابعاد رأس الروشته وذيلها - تحديد عدد الاسطر أو السجلات في الورقة المتبقية - تنفيذ ذلك على التقرير ( أي المحاولة والخطأ ) حتى يتم ضبط الروشتة .... طبيعي تحتاج وقت هذا رأي ..... والله أعلم
  42. 4 points
  43. 4 points
    وعليكم السلام 🙂 الطريقة الجديدة اللي توصلت لها هي عمل وحدة نمطية ، في برنامج الواجهة (ليس على السيرفر) تقوم بالتالي: - عمل ملف txt صغير على جهاز السيرفر، - قراءة الوقت الذي تم فيه عمل الملف (من اعدادات الملف) ، وهو الوقت الذي نريده ، -حذف الملف Public Function Make_File() Dim BE_Path, PauseTime, Start 'get the server path BE_Path = DLookup("[Database]", "MSysObjects", "[Flags]=2097152") 'Path and BE name BE_Path = Mid(BE_Path, 1, InStrRev(BE_Path, "\")) BE_Path = BE_Path & "dummy.txt" 'make the dummy txt file Open BE_Path For Output As #1 Print #1, "No text required" Close #1 'pasue for a second, until file is recognized, for slow networks PauseTime = 1 ' Set duration. Start = Timer ' Set start time. Do While Timer < Start + PauseTime DoEvents ' Yield to other processes. Loop 'get the date created Make_File = FileDateTime(BE_Path) 'clean up, delete the file Kill BE_Path End Function . وننادي هذه الوحدة النمطية هكذا: Me.srver_Time = Make_File() . وبما ان ملف الجداول يكون في مجلد يسمح فيه بإنشاء/تعديل/حذف ملف ، فهذه الطريقة المفروض انها تشتغل 🙂 طريقة العمل هي ان تضع ملف my_BE.mdb على السيرفر ، وملف my_FE.mdb على كمبيوترك ، ثم تربط جدول الواجهة مع جدول الخلفية (سيسألك البرنامج عن فتحه) 🙂 جعفر Server Time.zip
  44. 4 points
    وعليكم السلام ورحمة الله وبركاته تفضل ما أردت الجرد.xlsx
  45. 4 points
    السلام عليكم ورحمة الله تم تعديل ترتيب اغلب التكست بوكس لكى تتوافق مع الكود الجديد اليك الملف بعد التعديل عمل كارنية لكل طالب.rar
  46. 4 points
    وعليكم السلام تفضل اخي الكريم هل هذا هو المطلوب؟ بالتوفيق برنامج الحضور والغياب للطلاب بالباركود.accdb
  47. 4 points
    طيب ::: انظر للصور :::: أولا : صممنا نموذج فرعي وجعلنا مصدر التقرير الفرعي جدول بيانات البائعين ثانيا : بالسحب والافلات ... تم سحب التقرير الفرعي في داخل التقرير الرئيسي ثم ربط الحقل المطلوب في حالتنا هذه هو حقل الفترة ( حتى يتم فلترة البائعين حسب الفترة )
  48. 4 points
    السلام عليكم ورحمة الله تفضل اخى الكريم الصالة.rar
  49. 4 points
    الآن سؤالك كامل وواضح 🙂 لما تُدخل البيانات ، سؤاء في الجدول او الاستعلام او النموذج ، ترى ان طرف السجل عليه هذه العلامة : . هذه العلامة معناها انك في وضع إدخال المعلومة / تعديلها / تحديثها ، ولكنك لم تحفظها بعد ، فلما تخرج من السجل (خروجك من الحقل الى حقل آخر معناه انك لازلت على نفس السجل) ، سواء الى السجل السابق او التالي او اي سجل او حتى خروجك من الجدول / الاستعلام / النموذج (لأن الاكسس تلقائيا يحفظ السجل في هذه الحالات) ، هنا فقط الاكسس يحفظ بيانات السجل ، وعليه تختفى هذه العلامة 🙂 بعض الاوقات في النموذج نكون نُدخل البيانات ، والاكسس لا يكون قد حفظ السجل ، لهذا السبب ، لا تظهر هذه المعلومة الجديدة في التقرير (لانها اصلا غير محفوظة في الجدول) 🙂 والطريقة هي ان نُجبر البرنامج على حفظ السجل قبل طباعة التقرير ، وهناك عدة طرق لذلك ، ومنها : 1. النقر على زر Refresh All (مثل ما عملت انت) والذي يضطر البرنامج الى دفع ثمن باهض ، بتحديثه سجلات جميع الجداول (وهذا يأخذ وقت اذا كان عدد الجداول كثير) التي في البرنامج (واذا كنت تشتغل في بيئة اكثر من مستخدم وهناك من يدخل البيانات ، فحتى بياناتهم يتم تحديثها غصبا عنهم) ، 2. استخدام الكود ، قبل سطر طباعة التقرير (هذا الكود الاسرع) : if me.dirty then me.dirty=false او docmd.runcommand accmdsaverecord 3. استخدام الكود ، قبل طباعة التقرير (وهذا ابطئ ، لأنه يضطر الى تحديث بيانات الجدول ، ثم جلبها الى النموذج) : me.Refresh او me.Requery . جعفر
  50. 4 points
    جرب هذا الكود\ تم تغيير اسماء الصفحات الى اللغة الاجنبية لسهولة نسخ الكود ولصقه Option Explicit Sub get_data() Dim sh As Worksheet Dim S As Worksheet Dim i%, y%, z% Dim col_sh As Collection Dim col_size As Collection Set col_sh = New Collection Set col_size = New Collection Set S = Sheets("Sourcesheeth") Application.ScreenUpdating = False For Each sh In Sheets If sh.Name <> S.Name Then col_sh.Add sh.Name End If Next For i = 4 To 11 If S.Range("I" & i) <> vbNullString Then col_size.Add S.Range("I" & i).Value End If Next i For i = 1 To col_sh.Count Set sh = Sheets(col_sh(i)) sh.Range("a1").Resize(500, 13).Clear Select Case col_sh(i) Case "Kasura": y = 1 Case "Usbou3i": y = 3 Case "Ba3ida": y = 5 End Select For z = 0 To 1 S.Range("A1").CurrentRegion.AutoFilter 4, _ col_size(y + z) S.Range("A1").CurrentRegion. _ SpecialCells(12).Copy sh.Cells(7, Choose(z + 1, 1, 8)).PasteSpecial Next z Next i S.Range("A1").CurrentRegion.AutoFilter Application.ScreenUpdating = True S.Select Set S = Nothing: Set sh = Nothing Set col_size = Nothing: Set col_sh = Nothing End Sub الملف مرفق Ta3dil_1.xlsm


×
×
  • اضف...