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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    203

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

  1. في الكومبوبوكس "Wil_Miled" قمت كتجربة بتغيير الحدث بعد التحديث من :- Me.Com_Miled.Requery ليصبح في النموذج الفرعي F2_Sub كالتالي ( كتجربة ) :- Private Sub Wil_Miled_AfterUpdate() If Not IsNull(Me.Wil_Miled) Then Me.Com_Miled.RowSource = _ "SELECT TblWsub.ID, TblWsub.N_C, TblWsub.Code_W " & _ "FROM TblWsub " & _ "WHERE TblWsub.Code_W = " & Me.Wil_Miled & " " & _ "ORDER BY TblWsub.N_C;" End If End Sub وكانت النتيجة كالتالي :- إلا أنني غير راضٍ عن الفكرة 😢 . رغم أن أحد التقويض في الحلول هو أن النماذج الفرعية = نماذج مستمرة !!!!
  2. بما أن أفكار معلمي أبو خليل لا تنتهي ( مشكوراً على جهوده التي نتعلم منها ) . وددت المشاركة على الهامش في ملف المشاركة الأصلية كالتالي .. في مربع النص "مكان الميلاد" الحدث نفسه عند الخروج ( كما هي رغبة أخي طاهر ) :- Private Sub مكان_الميلاد_Exit(Cancel As Integer) Dim sourceInfo As String sourceInfo = Me.Name & "|" & Me.Parent.Name DoCmd.OpenForm "C1", , , , , , sourceInfo End Sub طبعاً هذا الكود سيمرر اسم النموذج الفرعي واسم النموذج الرئيسي مفصولين بإشارة "|" إلى النموذج "C1" الآن في النموذج "C1" قمت بحجز المتغيرين والحدث التالي عند تحميل النموذج :- Private sourceSubform As String Private sourceMainForm As String Private Sub Form_Load() If Not IsNull(Me.OpenArgs) Then Dim parts() As String parts = Split(Me.OpenArgs, "|") If UBound(parts) = 1 Then sourceSubform = parts(0) sourceMainForm = parts(1) End If End If End Sub وفي الكومبوبوكس Com_Miled ، قمت بتحديث الكود ليصبح :- Private Sub Com_Miled_AfterUpdate() If sourceSubform <> "" And sourceMainForm <> "" Then With Forms(sourceMainForm).Controls(sourceSubform).Form .Com_Miled = Me.Com_Miled .Wil_Miled = Me.Wil_Miled End With End If DoCmd.Close acForm, Me.Name End Sub وبالتالي النتيجة خرجت معي بهذا الشكل :- ملاحظة :- لم أقم بالإطلاع على أي ملف مرفق تمت مشاركته .. WIL.zip
  3. بالضبط ، أخي الكريم .. الأمر SendKeys له تأثير على مفتاح الـ NumLock . ولكن هناك دوال يمكن ان تتفقد حالته وتعيد تشغيله عندما تكون حالته = Off يمكن استخدام التعبير & vbCrLf & لإضافة سطر جديد . على سبيل المثال :- vbCrLf & "= "
  4. ههههه ، ولا يهمك أخي .. خليني أوضح لك الفكرة بإجابات على اسئلتك .. نعم بالضبط حيث أن SelStart هو رقم يمثل موقع بداية المؤشر داخل النص ، ويبدأ العد من 0 ( يعني أول حرف في النص موقعه = 0 ) نعم بالضبط ، اجعل المتغير beforeText يحتوي على كل النص الذي يسبق موقع المؤشر كلام سليم بالضبط ، اجعل المتغير afterText يحتوي على كل النص الذي يأتي بعد المؤشر السطر الأول يعيد المؤشر إلى ما بعد النص الذي تم إدراجه السطر الثاني يجعل تحديد النص = 0 . أي عند تنفيذ الإضافة النصية من الزر فإنه سيتم نقل التركيز الى مربع النص وبالتالي سيتم تحديد كامل النص ، ونحن لا نريد هذا طبعاً ، وبالتالي المهمة المطلوبة هي فقط أن يتم وضع المؤشر في المكان الجديد ( الذي تم تحديده قبل الإضافة طبعاً ) بدون تظليل النص .
  5. تمام اخي الكريم .. بداية وحتى تتوضح فكرتي بالتنفيذ ، سنعتمد على حدث عند النقر لمربع النص NASSbox . بحيث نتعرف على موقع المؤشر من خلال ما يلي :- في مديول ، نقوم بحجز المتغير في بداية المديول مع الدالة الرئيسية :- Public cursorPosition As Long Public Sub InsertAtRememberedCursor(ByVal i As String) Dim ctl As Control Set ctl = Forms!Assaker!NASSbox ctl.SetFocus Dim currentText As String currentText = ctl.Text Dim beforeText As String Dim afterText As String Dim insertText As String insertText = vbCrLf & i & "= " beforeText = Left(currentText, cursorPosition) afterText = Mid(currentText, cursorPosition + 1) ctl.Text = beforeText & insertText & afterText ctl.selStart = cursorPosition + Len(insertText) ctl.SelLength = 0 End Sub الآن في النموذج وفي حدث عند النقر على مربع النص المستهدف :- Private Sub NASSbox_Click() DoEvents cursorPosition = Me.NASSbox.selStart End Sub ثم في حدث عند النقر للأزرار ، كل زر ليقوم بإضافته الخاصة به داخل النص ، من خلال الإستدعاء التالي لها :- Private Sub insert1_Click() Call InsertAtRememberedCursor("1") End Sub Private Sub insert2_Click() Call InsertAtRememberedCursor("2") End Sub Private Sub insert3_Click() Call InsertAtRememberedCursor("3") End Sub وبالتالي ، تكون النهاية كما رأيت في الصورة السابقة . المرفق :- Assaker.zip
  6. من باب التوضيح إن كنت قد فهمت المطلوب بشكل صحيح .. هل الصورة أدناه تطبق للمطلوب ؟؟؟
  7. 💣 تحميل اللعبة للنواتين :- Minesweeper v 4.0 - 64.accde.zip Minesweeper v 4.0 - 32.zip
  8. إمكانية تسجيل وإضافة أسماء اللاعبين ( دون الإعتماد على أي جداول ) . إمكانية استرجاع اللاعب لآخر مرحلة وصل لها عند عودته الى اللعبة بأي وقت . ضبط وتحسين بعض الملاحظات واختصار الكثير من الأكواد ودمجها ضمن دوال مساعدة وتقليل التكرار . كما هو الحال بالإضافة لأسماء اللاعبين ، يمكن أيضاً حذف اسم اي لاعب . صورة توضيحية للمرحلة الأخيرة ( الحادية عشر ) للمستوى المبتدئ ؛ مع إمكانية استرجاع المرحلة التي وصل لها اللاعب عند عودته لللعبة مرة أخرى بأي وقت . انتظرونا
  9. اذا كانت قاعدة البيانات على سطح المكتب ( على سبيل المثال ) مع مجلد الصور فأنه سيختلف المسار المخزن في الجدول للمرفقات باختلاف اسم المستخدم للويندوز .. فمثلاً في جهازي :- C:\Users\Foksh\Desktop\Project وقد يكون في جهازك ( على سبيل المثال أيضاً ) :- C:\Users\Belal\Desktop\Project رغم ان كلاهما باعتقادك على سطح المكتب . ولذا اعتقد انه يمكن حل المشكلة دون أكواد بحيث يتم وضع مجلد الصور عند الأساس في القرص D مثلاً أو أي قرص آخر قد يكون موجوداً في أي جهاز من تلك التي تستخدمها . أو اتجاهك لدالة تقوم بتحديث مسار الصور عند فتح القاعدة أو هناك سلوكات أخرى متعددة قد تساعدك كجدول الإعدادات بحيث يكون مسار المجلد محدداً في جدول الإعدادات اذا كان مشروعك كبيراً ولديك القدرة على التحكم وضبط هذه المسألة .
  10. عند تجربة الملف على نسخة 32 من إصدار أوفيس 2010 ، فعلاً تظهر هذه الرسالة :- ويليها هذه الرسالة :- ثم يتم اغلاق الأداة .
  11. وعليكم السلام ورحمة الله وبركاته .. أهلاً بك في مشاركتك الأولى لك كعضو جديد في هذا الصرح الكبير .. بدايةً نود لفت انتباهك إلى ضرورة التقيد والإلتزام بسياسة وقوانين المنتدى عند فتح مواضيع وطلبات جديدة لك لاحقاً . حيث أنه يتوجب أن يكون العنوان للموضوع ذا صلة و وضوح للمطلوب . ومن ثم التفصيل والتوضيح بشكل صريح للمطلوب والمشكلة التي تواجهك وتريد حلاً لها . بعد الإطلاع على ملفك نرجو منك توضيح المطلوب بشكل مفصل . شكراً لك سعة صدرك ورحابته
  12. وعليكم السلام ورحمة الله وبركاته .. ما رأيك بدلاً من خوض التجارب على ملفات لا تشابه أو تطابق عملك ، أن تقوم بإرفاق ملف بسيط من عملك الذي تطبق عليه !! فيسهل على الأساتذة والإخوة الوصول الى فكرتك التي تريدها بشكل مباشر من واقع العمل
  13. تم إضافة النسخة 32 الى المشاركة الأولى 👍
  14. وعليكم السلام ورحمة الله وبركاته .. ملاحظتك قوية ، ولا اعلم عنها لأني لم الحظها في الأسام القليلة الماضية . لكن هل تقصد كحد اقصى من تجربتك 200 رسالة بشكل عام لجهات اتصال متنوعة ، ام ضمن نفس المحادثة لشخص واحد !!!
  15. ما شاء الله ،، فكرة جميلة جداً لمن يعاني من هذه المشكلة .. الجميل في فكرتك أنها تقوم بشكل ديناميكي بالمرور على جميع النماذج وفتحها ومطابقة أسماء الصور المستخدمة وتلك الموجودة في جدول النظام ، وحذف السجل من الجدول دون إتلاف قاعدة البيانات 👍 جزاك الله كل خير على هذه الفكرة الجميلة.
  16. انقر على الملف الذي قمت بتحميله زر يمين من الماوس واختر ( خصائص - Properties ) ، وقم بالتعليم كما في الصورة التوضيحية ثم افتح الملف مرة أخرى .
  17. من خلال ملفك المرفق ، لم اجد مشكلة . لذا اعطنا مثال على قيم وسجلات متنوعة لرؤية النتيجة.
  18. مبارك علينا وعليكم الترقية الجديدة وانضمامكم إلى أسرة خبراء القسم أستاذ @محب العقيدة . إلى الأمام دائماً ، ومن نجاح إلى أعلى
  19. وعليكم السلام ورحمة الله وبركاته .. بدايةً أهلاً وسهلاً بك أخي الكريم في المنتدى ، ونتمنى أن تجد ما تبحث عنه دائماً . وطبعاً ذلك يتحقق أولاً باتباع قواعد وسياسة المنتدى للحصول على نتيجة لطلبك ؛ بحيث يكون العنوان ذو شرح مختصر يدل على المشكلة . ومن ثم التوضيح في الطلب داخل المشاركة دون البخل ( ) في الكلمات على أصدقائك وأخوتك هنا . وكي تدعم شرحك وجوب وضرورة ارفاق ملف بسيط ليتم التعديل عليه بعد رؤية المشكلة على أرض الواقع .
  20. أخي طاهر ، هل هذا ما تريده ؟؟ إذا كان هو فعلاً ، فانظر ماذا سنفعل . أولاً انشاء مربع نص ولنفترض اسمه = txtRowNumber ، وسنجعل قيمته أو مصدر بياناته = "=1" ليقوم بعد السجلات الحالية في التقرير . ( الإضافات حتى لا نقوم بتعديل أي تركيبة في تقريرك وللتوضيح طبعاً ) ثانياً إنشاء مربع نص أيضاً للتاريخ ولنفترض اسمه = txtAutoDateDisplay . وسنجعل له قيمة مصدر بيانات بناءً على الاستعلام مصدر التقرير = =IIf([txtRowNumber]=Int(DCount("*","tbl_Loans","EmployeeID=" & [EmployeeID] & " AND Auto_Date=#" & [Auto_Date] & "#")/2)+1,[Auto_Date],"") حيث الهدف من فكرتي هو عدّ السجلات بناءً على مربع النص txtRowNumber وقسمتها على 2 للتوسيط وبالتقريب طبعاً حتى لة كان عدد السجلات 10 مثلاً فسيكون العرض في السجل 6 مثلاً . ثالثاً إنشاء مربع نص أيضاً للرقم وسأفترض اسمه = txtEmployeeIDDisplay . وسيكون له قيمة مصدر بيانات = =IIf([txtRowNumber]=Int(DCount("*","tbl_Loans","EmployeeID=" & [EmployeeID] & " AND Auto_Date=#" & [Auto_Date] & "#")/2)+1,[EmployeeID],"") وطبعاً قمت بإخفاء الحقول الأصلية . ولكن عليك تجربة الفكرة على سجلات كثيرة للتأكد من الفكرة . المرفق لتجربته :- Z1.zip
×
×
  • اضف...

Important Information