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

Foksh

الخبراء
  • Posts

    4802
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    217

كل منشورات العضو Foksh

  1. وعليكم السلام ورحمة الله وبركاته .. هذه فكرة بسيطة للورقة الثانية في الخلية D4 ( المطلب الأول ) ، جربه :- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$4" Then Dim cell As Range, n As Long Range("B6:B35, D6:D35").ClearContents If IsDate(Target.Value) And Target.Value <> "" Then For Each cell In Sheets("بيانات العاملين").Range("B2:B" & Sheets("بيانات العاملين").Cells(Rows.Count, "B").End(xlUp).Row) If cell.Value = Target.Value Then n = n + 1 Cells(6 + ((n - 1) Mod 30), 2 + ((n - 1) \ 30) * 2).Value = cell.Offset(0, 1).Value If n = 60 Then Exit For End If Next cell End If End If End Sub المطلب الثاني في الورقة الثالثة ، جرب استعمال الفكرة التالية بحيث لتحديد العدد جعلت الخلية G4 لتحديد العدد بدلاً من 5 والتقيد به . وبالتالي اذا لم تحدد قيمة في G4 سيكون الافتراضي = 5 أسماء ، والكود كالتالي في الورقة الثالثة :- Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("F4:G4")) Is Nothing Then Dim cell As Range, n As Long, limit As Long Dim status As String Range("C7:C" & Rows.Count).ClearContents status = Range("F4").Value If status = "ناجح" Or status = "راسب" Then limit = IIf(Val(Range("G4").Value) <= 0, 5, Val(Range("G4").Value)) For Each cell In Sheets("بيانات العاملين").Range("E2:E" & Sheets("بيانات العاملين").Cells(Rows.Count, "E").End(xlUp).Row) If cell.Value = status Then n = n + 1 Cells(6 + n, "C").Value = Sheets("بيانات العاملين").Cells(cell.Row, "C").Value If n = limit Then Exit For End If Next cell End If End If End Sub لاحظ أنني قمت بإضافة احتمال آخر = راسب من باب التوسعة في خيارات البحث بالنتيجة اللجنة.xlsm
  2. كمحاولة لتنفيذ المطلوب ، بحيث يتم البحث من خلال رقم الطالب ، أو من خلال اسم الكتاب أو نت خلال البحث بين تاريخين .. استعملت الاستعلام التالي :- SELECT st_mstr.st_no, st_mstr.st_name, st_mstr.Curr_Grp, st_trns.crs_cd1, st_mstr.Id_No, st_mstr.Tele_No, books.book_desc, "C:\BookImages\" & [st_trns].[crs_cd1] & ".jpg" AS BookImagePath, st_trns.chkSelect, st_trns.ReturnDate, st_trns.Status, st_trns.BookCondition FROM books INNER JOIN (st_mstr INNER JOIN st_trns ON st_mstr.st_no = st_trns.st_no) ON books.crs_cd1 = st_trns.crs_cd1 WHERE (st_mstr.st_no = [Forms]![Search]![T1] OR [Forms]![Search]![T1] Is Null OR [Forms]![Search]![T1] = "") AND (books.book_desc = [Forms]![Search]![T2] OR [Forms]![Search]![T2] Is Null OR [Forms]![Search]![T2] = "") AND (st_trns.ReturnDate >= [Forms]![Search]![DFrom] OR [Forms]![Search]![DFrom] Is Null OR [Forms]![Search]![DFrom] = "") AND (st_trns.ReturnDate <= [Forms]![Search]![DTo] OR [Forms]![Search]![DTo] Is Null OR [Forms]![Search]![DTo] = ""); returnbooks.zip
  3. ما هي المشكلة بالضبط !!!
  4. عمل جميل ومتقن ، وبديل عن شريط أدوات التقارير بفكرته الأولى 💐
  5. وعليكم السلام ورحمة الله وبركاته .. هذه مساهمة بسيطة كبداية . استكمل باقي العمل حتى تشعر بمتعة العمل 😊 . St.Sys.accdb
  6. طلبك الأول ، شرحه موجود في الموضوع التالي :- طلبك الثاني شرحه فيما يلي ..
  7. وعليكم السلام ورحمة الله وبركاته.. ما عليك التحقق منه اولاً هو لغة الترميز العربية . ثاني حاجة وهي تفعيل تمكين المحتوى ومركز التوثيق والماكرو .
  8. حاولت قراءة الباركود على أكثر من تطبيق وأكثر من جهاز ، ولم استطع فعلاً قراءته ... متابع بصمت
  9. وعليكم السلام ورحمة الله وبركاته .. اعجبتني الفكرة ، و وددت المشاركة بالتالي .. ما عليك فعله بيدك حتى تنجح الفكرة .. في المديول :- الخطوة الأولى اذهب للدالة :- Private Function ExitTimer() As Boolean وقم بحذف السطر :- Call DeleteObject(hRgn1) الخطوة الثانية أيضاً اذهب للدالة :- Public Function GenerateExit() 'MyForm As Form) وأضف بعد هذا السطر :- Do Until ExitTimer() السطر DoEvents ، لتصبح جملة الحلقة :- Do Until ExitTimer() DoEvents Sleep clngTimerInterval Loop وبعد هذه الحلقة مباشرة ، أضف السطر التالي :- Call DeleteObject(hRgn) وعليه ، فأن الملف كاملاً بعد هذه التعديلات يصبح :- db.mdb
  10. الإصدار الثاني من لعبة الدومينو والتي تدعم الشبكة ( النسخة الأولى التي تعتمد على الربط بقاعدة بيانات الجداول الخلفية ) . مميزات الإصدار الأول :- إمكانية لعب اللعبة من خلال الشبكة المحلية ( 4 لاعبين = 4 أجهزة ) إمكانية إضافة الكمبيوتر كلاعب للعبة الشبكة . يعني بتقدر تلعب انت وصديقك وتضيف الكمبيوتر كلاعب ثالث أو رابع . أو إنك ممكن تلعب مع 3 لاعبين كمبيوتر 😁 . إتاحة دخول لاعب على الشبكة ،واستبدال لاعب كمبيوتر بإدارة كاملة من المضيف ( صاحب اللعبة الحالية = الهوست Host ) . في حال خروج أحد اللاعبين ( خلينا نسميهم البشريين ) سيتم ملئ مقعده بلاعب كمبيوتر لاستكمال اللعب بدلاً منه . في حال رغبة اللاعب الذي خرج ( لأي سبب من الأسباب ) ، سيتم منحه الإذن بالدخول للعبة إما متفرج أو بدل لاعب كمبيوتر آخر موجود ( أو الذي تم إدخاله بدلاً منه ) ... إلخ من سيناريوهات الخروج والعودة . كل لعبة تسمى غرفة لعب ، لها رقم خاص بها للإنضمام . وذلك لمنع تداخل اللعب في الغرف . في حال كان هناك أكثر من غرفة . يعني بتقدر تلعب اللعبة على 8 أجهزة على سبيل المثال وكل 4 في غرفة منفصلة . في حال انقطاع أو خروج المضيف = الـ Host ، رح يكون معه 60 ثانية للعودة للغرفة نفسها . بشرط أن يتم كتابة نفس الإسم السابق له قبل خروجه . وهذا ينطبق أيضاً على اللاعبين البشريين - كما أسميناهم وللتمييز بينهم وبين الكمبيوتر - عند خروج أحدهم والعودة الى نفس الغرفة = بنفس الإسم . بتقدر كمضيف = Host تحديد قيمة نتيجة الفوز التي تحدد الفائز بالغرفة . طبعاً القيمة الإفتراضية = 500 . وسيكون التجميع تراكمياً بمجموع أرقام الحجارة في يد اللاعب الذي يملك أقل عدد . في لعبة الشبكة بتقدر تختار صورة لشخصيتك من خلال قائمة منسدلة = Avatar . لنفترض انك كلاعب بشري سجلت انضمامك للغرفة - قبل بداية اللعبة طبعاً - وكنت بدك تعدل اسمك أو تغيره . كل اللي عليك انك ترجع تسجل انضمام جديد بفتح اللعبة من جديد لنفس الغرفة . لن تظهر أي حجارة عندما يكون عدد الاعبين أكثر من 2 . وإلا فسيأخذ اللاعب الثاني ( إذا كانت اللعبة تضم لاعبين اثنين فقط ) مكان الكمبيوتر وستظهر حجارة كلا اللعبين مقابل بعضهما البعض . ستظر صورة لشخصية ترفع يدها في واجهة اللاعبين للدلالة على أن الدور له ، حتى لو كان الكمبيوتر احد اللاعبين المنضمين الى لعبة الشبكة . لنفترض أن الغرفة فيها 3 أو 4 لاعبين ، وأراد لاعب رابع الإنضمام الى اللعبة . فسيتم إظهار رسالة في واجهة المضيف الـ Host فقط ، تخبره أن هناك لاعب يرغب بالإنضمام الى الغرفة . وستكون الخيارات للمضيف كالآتي :- * استبدال لاعب كمبيوتر باللاعب الجديد فوراً = في حال وجود لاعب كمبيوتر * قبول اللاعب كمتفرج حتى الفوز التام = سيتم إدخاله كمتفرج فقط ، و ينتظر حتى يحقق أحد اللاعبين القيمة التي تحدد الفائز في الغرفة * رفض الانضمام = عدم إدخاله أساساً * قبول الانضمام والبدء بلعبة جديدة كلياً = تصفير اللعبة والبدء من جديد بانضمام اللاعب الجديد محاكاة كاملة لسير اللعب والحركة والسحب وتمرير الدور عند جميع اللاعبين . إذا كان عدد الاعبين أكثر من 2 ، فسيتم إظهار عدد الحجارة في يد كل لاعب ، والنتيجة التي حققها من فوز في كل لعبة ؛ في واجهة كل اللاعبين . والكثير من المميزات سأترك لكم اكتشافها بأنفسكم 😉 . وسأكتفي بهذا القدر من النقاط . ما عليك فعله لضبط اللعب في الشبكة :- ربط جميع واجهات اللعب بالملف المرفق TBL ، وهو قاعدة بيانات الجداول التي تخص الشبكة على السيرفر فقط . وهنا في التحديث الجديد لاحقاً سيتم الاستغناء عنه كلياً بحيث يتم اللعب على الشبكة من خلال وسيط يعمل كسيرفر يربط اللعبة من خلال رقم الغرفة بشكل ديناميكي عجيب . وقد تم بناؤه من خلال لغة C# . المرفق مفتوح المصدر لعشاق البحث والتقصي 😁 . وليس هنا أي أسرار هذه المرة 😜 . ويسعدني تعليقاتكم حول آلية تطبيق اللعبة . Domino Network.zip
  11. بارك الله فيكم أستاذنا الكبير .. يفي بالغرض بالطبع . وأتفق معكم بهذا التفكير تماماً .. ويسعدنا أن نشارك به جميعنا إن أمكن . لكم كل الشكر والإحترام على تجاوبكم معنا . وفقكم الله ورعاكم
  12. 😮 رأيي الفني 😅!! فكرة أخونا الأستاذ أبو عبدالله جميلة بلا شك وأحييه على الفكرة التي خرج بها . ولكنك ستشعر الفرق عندما تتعامل مع سجلات كثيرة .. فالفكرة الأساسية التي اعتمد عليها وهي rpt.Line الأساسية ستكون بطيئة جداً لو افترضنا التعامل مع تقرير يحتوي 100 سجل على سبيل المثال . ولكن في فكرة التعديل الذي قمنا به وابتعادي عن الفكرة السابقة هي باستخدام GDI APIs التي أتت من المرفق A2KPictureBoxVer35.accdb الذي شاركنه أخي جعفر . يعني افتح التقرير rpt_BG_img_Barcode في مرفق الأستاذ عبدالله ، وانتقل لعرض الصفحة الثانية !!! ستشعر الفرق 100% وختاماً لست في مكان أقييم به عمل أحد من الأساتذة والأعضاء ، فأخوكم ما زال يتعلم ولله الحمد 😇
  13. تفضل اخي منتصر .. التعديلات التي تمت :- الدالة DrawAndSaveBarcode أصبحت :- Public Sub DrawAndSaveBarcode(txt As TextBox, img As Image, barcodeType As String, Optional bVertical As Boolean = False) Dim saveDir As String Dim fullPath As String Dim parentReport As Report Dim saveMode As String Dim shouldSave As Boolean On Error Resume Next Set parentReport = img.Parent If parentReport Is Nothing Then Set parentReport = img.Parent.Parent On Error GoTo 0 saveMode = "NoSave" If Not parentReport Is Nothing Then saveMode = Nz(parentReport.OpenArgs, "NoSave") End If shouldSave = False If saveMode = "SaveAll" Or saveMode = "SavePage" Then shouldSave = True End If If shouldSave Then saveDir = CurrentProject.Path & "\QRImg\" If Dir(saveDir, vbDirectory) = "" Then MkDir saveDir fullPath = saveDir & barcodeType & "_" & txt.Value & ".bmp" Else fullPath = "" End If If LCase(barcodeType) = "qr" Then Call drawQuickResponseToImage(txt, img, savePath:=fullPath) ElseIf LCase(barcodeType) = "code128" Then Call drawCode128(txt, img, , bVertical, savePath:=fullPath) End If End Sub الإستدعاءات في الأزرار أصبحت :- Private Sub cmdOpenWNavSave_Click() DoCmd.OpenReport "rpt_BG_img_Barcode", acViewPreview, , , , "SavePage" End Sub Private Sub cmdOpenWOSave_Click() DoCmd.OpenReport "rpt_BG_img_Barcode", acViewPreview, , , , "NoSave" End Sub Private Sub cmdOpenWSave_Click() DoCmd.OpenReport "rpt_BG_img_Barcode", acViewPreview, , , , "SaveAll" End Sub Private Sub cmdSave_Click() DoCmd.OpenReport "rpt_BG_img_Barcode", acViewPreview, , , acHidden, "SaveAll" DoCmd.Close acReport, "rpt_BG_img_Barcode", acSaveNo MsgBox "بنجاح QRImg تم توليد وحفظ جميع الصور في مجلد", vbInformation + vbMsgBoxRight, "" End Sub وفي التقرير أصبحت التمرير كالآتي :- Private Sub Report_Open(Cancel As Integer) On Error Resume Next If Nz(Me.OpenArgs, "") = "SaveAll" Then Me.TxtPages.ControlSource = "=[Pages]" Else Me.TxtPages.ControlSource = "" End If On Error GoTo 0 End Sub Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Call DrawAndSaveBarcode(Me.FieldCode128, Me.ImgQR4, "Code128") Call DrawAndSaveBarcode(Me.FieldCode128, Me.ImgQR5, "Code128", True) Call DrawAndSaveBarcode(Me.FieldQRCode, Me.ImgQR2, "QR") End Sub أتمنى أن يلبي ها التعديل المطلوب . طبعاً بالإستعانة بنموذجك أخي منتصر 😉 . QR_Barcode - 5.accdb
  14. وعليكم السلام ورحمة الله وبركاته ، تحقق من أن النماذج الأخرى لها خاصية منبثق ومشروط = نعم
  15. بخصوص هذه النقطة ، لا أعلم إن كانت صحيحة ، لأنني جربت فكرتك ولم تكن ناجحة معي سابقاً للأسف 😅 جميل جداً ما تقدمت به . لم تغب عن بالي الفكرة ، ولكني فعلاً كنت قد انشغلت باستراق فكرة التدوير من المرفق الأصلي الذي شاركه أخي جعفر 😁 . لذا جزاكم الله عنا كل خير فيما يخص هذه الفكرة ، فإن شاء الله سأقوم بالتعديل حال وصولي الى البيت .. ولكن إن كان لك أن تشاركني فأهلاً وسهلاً .
  16. الآن في الرد الحالي .. الحد الاقصي: 9.77 ميجا
  17. يعني انت تريد تنظيف الأكواد من الاعتماد على Tag كلياً ؟ فقط سنقوم بإزالة الجملة الشرطية التي تختص بالـ Tag ، من المديول ModulQRCode . If level = "" Then i = InStr(LCase(Text.Tag), "qrcode") If (i > 0 And i + 5 < Len(Text.Tag)) Then level = Mid(Text.Tag, i + 6, 1) End If تم نقل الدالة الى المديول وتحويلها الى Public ، وتنظيف أكواد التقرير ، والإعتماد فقط على الاستدعاء :- Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Call DrawAndSaveBarcode(Me.FieldCode128, Me.ImgQR4, "Code128") Call DrawAndSaveBarcode(Me.FieldCode128, Me.ImgQR5, "Code128", True) Call DrawAndSaveBarcode(Me.FieldQRCode, Me.ImgQR2, "QR") End Sub وكملاحظة ، قمت بإضافة مربع النص PgCount داخل التقرير في Page_Footer ، والهدف منه كان لتجربة بأن يتم تصدير كافة الرموز Qr/Code128 عند فتح التقرير ، أو تستطيع الغاء مربع النص هذا وسيتم تصدير الصور داخل المجلد حسب الصفحة التي يتم فتحها فقط . المرفق بعد التعديل :- QR_Barcode - 3.accdb
  18. السلام عليكم ورحمة الله وبركاته .. أستاذنا الفاضل الدكتور @محمد طاهر عرفه .. كان لدي مقترح سابق لم أطرحه عندما كنت برتبة مشرف ، وهو زيادة حصة الخبراء بحجم الملفات المرفقة لتصل الى 25 ميجا بدلاً من 4.88 ميجا . ولكم جزيل الشكر إدارة المنتدى والقائمين على التطوير والتحسين ..
  19. تفضل أخي @jjafferr .. الآن تم الدمج بحيث لديك جميع الخيارات :- القديمة عن طريق Tag . الجديدة من خلال قيمة مربع النص لكل QR أو Code128 .. حفظ الصور في المجلد QRImg بجانب قاعدة البيانات . ( وهنا سيكون لنا وقفة مرهونة بتجربتك 😉 ) QR_barcode.accdb
  20. بما أن الأول مشروط بقبول الثاني 😅 ، فلا مشكلة بإذن الله لأنني وقد قمت فعلاً بتعديل الفكرة سابقاً لتصبح معتمدة على اسم مربع النص وليس الـ Tag . ولكن لي ملاحظة بسيطة ، حيث في السابق كان كود الـ QRCode يعتمد أحياناً على Tag لتحديد دقة ومستوى الباركود (H,Q,M) . الآن بعد إزالة اعتمادنا على الـ Tag ، سأعتمد على اختيار الدقة الأفضل H . تمام ؟ أما الثاني فليس هناك مشكلة في حفظ الـ QR أو Code128 كصور بمجلد خارجي . وإن شاء الله حال عودتي للبيت .
  21. بعض ما عندكم أخي @منتصر الانسي ، فأنتم السابقون بالأفكار الرهيبة التي طرحتموها . وما كان مني إلى اتباعكم بالتفكير خارج الصندوق
  22. للأسف لم يتم ضبط المطلوب بشكل صحيح أيضاً .. فما زالت المشكلتين اللاتي طرحتهما موجودات 😇 يلزمك التجربة على إصدار 64 للتأكد من نجاح التعديلات 👍🏻
  23. تمام ، قمت بالتطبيق مسبقاً بإجراءات بسيطة واستخدام فكرة الرسم والتدوير من الملف المرفق الأصلي A2KPictureBoxVer35 .. New QR.accdb
  24. ما شاء الله الأستاذ خليفة أبدع في عمله وتطبيقه بشكل جيد جداً .. وإن سمح لي بملاحظات بسيطة لا تقلل من جوهر عمله الجميل . تخصيص اللون لم يعمل معي على الإصدار 64 .. عند فتح التقرير وتكبيره بملئ الشاشة يختفي الشريط خلفه 😥 ..
×
×
  • اضف...

Important Information