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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    179

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

  1. هذا ليس الكود الذي ارفقته لك بدايةً .. ثم أنه لا بد من أن تقوم بالتفريق بين حقل وعنصر مربع نص الحقل أحد مكونات الجدول . أما العنصر T4 الذي تقصده فهو مربع نص مصدره في جدوله = الحقل TENDER_NO شكراً لك ..
  2. دلالة على انك لم تقرأ الكود وتتفحصه اخي الكريم .. لاحظ الجزء التالي :- t4Value = Me.T4 userName = Environ("Username") computerName = Environ("ComputerName") sql = "INSERT INTO hestable (oldrec, [User], Comname, curdata) " & _ "VALUES ('" & Replace(t4Value, "'", "''") & "', '" & Replace(userName, "'", "''") & "', '" & Replace(computerName, "'", "''") & "', Now());" On Error GoTo ErrHandler CurrentDb.Execute sql, dbFailOnError جملة تنفيذ استعلام اضافة داخل الجدول أولا . ثم :- DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True جملة حذف السجل ثانياً
  3. الخلل في طريقة تنفيذك ونقلك للفكرة . ما لم تقم بارفاق ملفك مع العلم انك قمت باختيار الاجابة ... فكيف هذا !!!!
  4. وعليك السلام ورحمة الله وبركاته .. الق نظرة القابلة للتطوير على هذه الفكرة في الموضوع التالي :-
  5. الله يعطيك الصحة أستاذنا خليفة ,, وجزاك الله خيراً على هديتك المقبولة ..
  6. وعليكم السلام ورحمة الله وبركاته .. يبدو أنك تريد نقل الأفكار إلى مشروعك مباشرةً .. صحيح ؟؟ طيب ، ومشاركةً مع الأستاذ @kkhalifa1960 ، هذه فكرة أخرى من خلال زر الحذف نفسه . حيث استعملت الفكرة التالية في الزر فقط :- Private Sub Btn_Del_Click() Dim Response As VbMsgBoxResult Dim t4Value As Variant Dim userName As String Dim computerName As String Dim sql As String Response = MsgBox("هل أنت متأكد أنك تريد حذف هذا السجل؟", vbYesNo + vbQuestion + vbMsgBoxRight, "") If Response = vbYes Then If IsNull(Me.T4) Or Me.T4 = "" Then MsgBox "لا يمكن تسجيل الحذف لأن الحقل T4 فارغ", vbExclamation + vbMsgBoxRight, "" Exit Sub End If t4Value = Me.T4 userName = Environ("Username") computerName = Environ("ComputerName") sql = "INSERT INTO hestable (oldrec, [User], Comname, curdata) " & _ "VALUES ('" & Replace(t4Value, "'", "''") & "', '" & Replace(userName, "'", "''") & "', '" & Replace(computerName, "'", "''") & "', Now());" On Error GoTo ErrHandler CurrentDb.Execute sql, dbFailOnError DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True Else MsgBox "تم إلغاء عملية الحذف", vbInformation + vbMsgBoxRight, "" End If Exit Sub ErrHandler: MsgBox "حدث خطأ أثناء تسجيل الحذف", vbCritical + vbMsgBoxRight, "خطأ" End Sub TrackDelete.zip
  7. أين المرفق الذي تريد التعديل عليه 😅 ؟؟؟ مع أن الأمر هيّن إن شاء الله
  8. وعليكم السلام ورحمة الله وبركاته .. أخي الكريم المشكلة واضحة من الرسالة ، حيث أن لديك thma_Person مفقود . فقد يكون حقل أو عنصر داخل تقرير أو نموذج .. إلخ غير موجود في قاعدة بياناتك .
  9. كلا أخي الكريم 😅 ، الخطأ في طريقة التنفيذ . لذا قمت بإضافة دالة بسيطة تقوم بتحديث الحقل الخاص بمسار الصور من خلال الدالة التالية :- Public Sub UpdateImagePaths() Dim dbPath As String Dim newBasePath As String Dim sql As String dbPath = CurrentProject.Path newBasePath = dbPath & "\Images\" sql = "UPDATE tblImportExcel SET PicPath5 = '" & newBasePath & "' & Mid(PicPath5, InStr(PicPath5, 'Images') + 7);" DoCmd.SetWarnings False DoCmd.RunSQL sql DoCmd.SetWarnings True End Sub واستدعاءها في حدث عند الفتح للنموذج أو اي نموذج يعمل في بداية المشروع . انظر ملفك وانقله على اي مكان تريد وجربه الآن . البرنامج.zip
  10. وعليكم السلام ورحمة الله وبركاته.. دون تحميل الملف المرفق ، فقط حول الحقل الى حقل مرفقات . ولكنك هنا ستواجه مشكلة في تضخم حجم قاعدة البيانات مستقبلاً اخي الكريم. الكثير من المواضيع تحدثت عن هذه المشكلة وكان الحل بحفظ الصور والمرفقات بمجلد بجانب قاعدة البيانات.
  11. هههههه نفس المبدأ تقريباً ، ولكن هنا عند التحميل يفرض القيمة دائماً وهي أسلم وأأمن .. المهم اطلاق سراحه بدون قيود 😅
  12. آمين يا رب العالمين .. وإياكم معلمي الفاضل .. وحيث أن الفكرة ينقصها شيء واحد ، وهو عند تحميل البيانات ستجد فقط السجل الأول هو من يعرض البلدية في الكومبوبوكس ( داخل النموذج الفرعي الثاني ) .. وهنا أعتقد لأن مصدره ( الكومبوبوكس الخاص بالبلدية ) يحتوي شرط للفلترة ولزوم حذف الشرط يظهر لنا القيم الحقيقية من مصدرها لكل سجل . جرب الفرق ، بما أننا نقوم بتعيين مصدر القيم للكومبوبوكس عند تحديث اسم الولاية ( صحيح ؟؟ )
  13. تم تعديل النسخة 32 ، شكراً لك معلمي الفاضل للمتابعة
  14. في الكومبوبوكس "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 وكانت النتيجة كالتالي :- إلا أنني غير راضٍ عن الفكرة 😢 . رغم أن أحد التقويض في الحلول هو أن النماذج الفرعية = نماذج مستمرة !!!!
  15. بما أن أفكار معلمي أبو خليل لا تنتهي ( مشكوراً على جهوده التي نتعلم منها ) . وددت المشاركة على الهامش في ملف المشاركة الأصلية كالتالي .. في مربع النص "مكان الميلاد" الحدث نفسه عند الخروج ( كما هي رغبة أخي طاهر ) :- 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
  16. بالضبط ، أخي الكريم .. الأمر SendKeys له تأثير على مفتاح الـ NumLock . ولكن هناك دوال يمكن ان تتفقد حالته وتعيد تشغيله عندما تكون حالته = Off يمكن استخدام التعبير & vbCrLf & لإضافة سطر جديد . على سبيل المثال :- vbCrLf & "= "
  17. ههههه ، ولا يهمك أخي .. خليني أوضح لك الفكرة بإجابات على اسئلتك .. نعم بالضبط حيث أن SelStart هو رقم يمثل موقع بداية المؤشر داخل النص ، ويبدأ العد من 0 ( يعني أول حرف في النص موقعه = 0 ) نعم بالضبط ، اجعل المتغير beforeText يحتوي على كل النص الذي يسبق موقع المؤشر كلام سليم بالضبط ، اجعل المتغير afterText يحتوي على كل النص الذي يأتي بعد المؤشر السطر الأول يعيد المؤشر إلى ما بعد النص الذي تم إدراجه السطر الثاني يجعل تحديد النص = 0 . أي عند تنفيذ الإضافة النصية من الزر فإنه سيتم نقل التركيز الى مربع النص وبالتالي سيتم تحديد كامل النص ، ونحن لا نريد هذا طبعاً ، وبالتالي المهمة المطلوبة هي فقط أن يتم وضع المؤشر في المكان الجديد ( الذي تم تحديده قبل الإضافة طبعاً ) بدون تظليل النص .
  18. تمام اخي الكريم .. بداية وحتى تتوضح فكرتي بالتنفيذ ، سنعتمد على حدث عند النقر لمربع النص 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
  19. من باب التوضيح إن كنت قد فهمت المطلوب بشكل صحيح .. هل الصورة أدناه تطبق للمطلوب ؟؟؟
  20. 💣 تحميل اللعبة للنواتين :- Minesweeper v 4.0 - 64.accde.zip Minesweeper v 4.0 - 32.zip
  21. إمكانية تسجيل وإضافة أسماء اللاعبين ( دون الإعتماد على أي جداول ) . إمكانية استرجاع اللاعب آخر مرحلة وصلة لها عند عودته الى اللعبة بأي وقت . ضبط وتحسين بعض الملاحظات واختصار الكثير من الأكواد ودمجها ضمن دوال مساعدة وتقليل التكرار . كما هو الحال بالإضافة لأسماء اللاعبين ، يمكن أيضاً حذف اسم اي لاعب . صورة توضيحية للمرحلة الأخيرة ( الحادية عشر ) للمستوى المبتدئ ؛ مع إمكانية استرجاع المرحلة التي وصل لها اللاعب عند عودته لللعبة مرة أخرى بأي وقت . انتظرونا
  22. اذا كانت قاعدة البيانات على سطح المكتب ( على سبيل المثال ) مع مجلد الصور فأنه سيختلف المسار المخزن في الجدول للمرفقات باختلاف اسم المستخدم للويندوز .. فمثلاً في جهازي :- C:\Users\Foksh\Desktop\Project وقد يكون في جهازك ( على سبيل المثال أيضاً ) :- C:\Users\Belal\Desktop\Project رغم ان كلاهما باعتقادك على سطح المكتب . ولذا اعتقد انه يمكن حل المشكلة دون أكواد بحيث يتم وضع مجلد الصور عند الأساس في القرص D مثلاً أو أي قرص آخر قد يكون موجوداً في أي جهاز من تلك التي تستخدمها . أو اتجاهك لدالة تقوم بتحديث مسار الصور عند فتح القاعدة أو هناك سلوكات أخرى متعددة قد تساعدك كجدول الإعدادات بحيث يكون مسار المجلد محدداً في جدول الإعدادات اذا كان مشروعك كبيراً ولديك القدرة على التحكم وضبط هذه المسألة .
×
×
  • اضف...

Important Information