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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    183

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

  1. لن اخالف نظرة معلمي الثاقبة والصائبة والسليمة 10000% . كلامك صحيح من الجهة المنطقية ، ولكن من يرغب بالتشفير لن يأبه بهذا المنطق وسيتجه إلى إخفاء جميع السجلات ، مع العلم أن ما تفضلتم به عين الصواب والدقة عند التعامل مع التواريخ والتصفية .... إلخ . حيث ان ردي بناءً على سؤال السائل رغم أن الإجابة ستجعله مستقبلاً يلحظ أهمية نظرتكم معلمي @ابوخليل .
  2. التشفير لن يكون أثناء تسجيل البيانات ، بل عند الحفظ أو الخروج من النموذج ، ولذلك قد تكون فكرة التوسع في عملية التشفير بحيث يتم تطبيقها على السجل الحالي أمر مرهق لقاعدة البيانات . تتبع الفكرة السابقة في إجابتي .. الحقول الرقمية والتاريخ يمكن تشفيرها بحيث نجعل نوع الحقل في الجداول نصية وليست حقول رقمية أو تاريخ و وقت ( بناءً على فكرتي السابقة طبعاً ) التطويرات والتحديثات والتعديلات متاحة لك كيفما شئت . وأشعر بأنك متمكن من التعديل والتطوير كيفما تريد
  3. أخي الكريم ، لماذا لا تبحث عن طريقة التنفيذ المستقر والآمن لأي فكرة تريدها ؟؟ فأنا لم أجرب الحدث من خلال النموذج كما في فكرة الأستاذ خليفة جزاه الله خيراً ، ولذا ننتظر الإجابة من صاحب الإجابة بخصوص فكرته
  4. رغم أن ملفك الذي ارفقته لا يحمل أسماء الحقول التي أخبرتنا بها في رأس الموضوع ، وهذا شيء مربك لك . فلو أنك من البداية أرفقت ملفك لكنت الآن قد انتهيت من مشكلتك منذ الرد الأول .. على العموم , هذا ملفك الذي ارسلته بالتطبيق الكامل .. FMK.zip
  5. هذا ليس الكود الذي ارفقته لك بدايةً .. ثم أنه لا بد من أن تقوم بالتفريق بين حقل وعنصر مربع نص الحقل أحد مكونات الجدول . أما العنصر T4 الذي تقصده فهو مربع نص مصدره في جدوله = الحقل TENDER_NO شكراً لك ..
  6. دلالة على انك لم تقرأ الكود وتتفحصه اخي الكريم .. لاحظ الجزء التالي :- 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 جملة حذف السجل ثانياً
  7. الخلل في طريقة تنفيذك ونقلك للفكرة . ما لم تقم بارفاق ملفك مع العلم انك قمت باختيار الاجابة ... فكيف هذا !!!!
  8. وعليك السلام ورحمة الله وبركاته .. الق نظرة القابلة للتطوير على هذه الفكرة في الموضوع التالي :-
  9. الله يعطيك الصحة أستاذنا خليفة ,, وجزاك الله خيراً على هديتك المقبولة ..
  10. وعليكم السلام ورحمة الله وبركاته .. يبدو أنك تريد نقل الأفكار إلى مشروعك مباشرةً .. صحيح ؟؟ طيب ، ومشاركةً مع الأستاذ @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
  11. أين المرفق الذي تريد التعديل عليه 😅 ؟؟؟ مع أن الأمر هيّن إن شاء الله
  12. وعليكم السلام ورحمة الله وبركاته .. أخي الكريم المشكلة واضحة من الرسالة ، حيث أن لديك thma_Person مفقود وهو نموذج .. غير موجود في قاعدة بياناتك .
  13. كلا أخي الكريم 😅 ، الخطأ في طريقة التنفيذ . لذا قمت بإضافة دالة بسيطة تقوم بتحديث الحقل الخاص بمسار الصور من خلال الدالة التالية :- 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
  14. وعليكم السلام ورحمة الله وبركاته.. دون تحميل الملف المرفق ، فقط حول الحقل الى حقل مرفقات . ولكنك هنا ستواجه مشكلة في تضخم حجم قاعدة البيانات مستقبلاً اخي الكريم. الكثير من المواضيع تحدثت عن هذه المشكلة وكان الحل بحفظ الصور والمرفقات بمجلد بجانب قاعدة البيانات.
  15. هههههه نفس المبدأ تقريباً ، ولكن هنا عند التحميل يفرض القيمة دائماً وهي أسلم وأأمن .. المهم اطلاق سراحه بدون قيود 😅
  16. آمين يا رب العالمين .. وإياكم معلمي الفاضل .. وحيث أن الفكرة ينقصها شيء واحد ، وهو عند تحميل البيانات ستجد فقط السجل الأول هو من يعرض البلدية في الكومبوبوكس ( داخل النموذج الفرعي الثاني ) .. وهنا أعتقد لأن مصدره ( الكومبوبوكس الخاص بالبلدية ) يحتوي شرط للفلترة ولزوم حذف الشرط يظهر لنا القيم الحقيقية من مصدرها لكل سجل . جرب الفرق ، بما أننا نقوم بتعيين مصدر القيم للكومبوبوكس عند تحديث اسم الولاية ( صحيح ؟؟ )
  17. تم تعديل النسخة 32 في نفس المشاركة ، شكراً لك معلمي الفاضل للمتابعة
  18. في الكومبوبوكس "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 وكانت النتيجة كالتالي :- إلا أنني غير راضٍ عن الفكرة 😢 . رغم أن أحد التقويض في الحلول هو أن النماذج الفرعية = نماذج مستمرة !!!!
  19. بما أن أفكار معلمي أبو خليل لا تنتهي ( مشكوراً على جهوده التي نتعلم منها ) . وددت المشاركة على الهامش في ملف المشاركة الأصلية كالتالي .. في مربع النص "مكان الميلاد" الحدث نفسه عند الخروج ( كما هي رغبة أخي طاهر ) :- 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
  20. بالضبط ، أخي الكريم .. الأمر SendKeys له تأثير على مفتاح الـ NumLock . ولكن هناك دوال يمكن ان تتفقد حالته وتعيد تشغيله عندما تكون حالته = Off يمكن استخدام التعبير & vbCrLf & لإضافة سطر جديد . على سبيل المثال :- vbCrLf & "= "
  21. ههههه ، ولا يهمك أخي .. خليني أوضح لك الفكرة بإجابات على اسئلتك .. نعم بالضبط حيث أن SelStart هو رقم يمثل موقع بداية المؤشر داخل النص ، ويبدأ العد من 0 ( يعني أول حرف في النص موقعه = 0 ) نعم بالضبط ، اجعل المتغير beforeText يحتوي على كل النص الذي يسبق موقع المؤشر كلام سليم بالضبط ، اجعل المتغير afterText يحتوي على كل النص الذي يأتي بعد المؤشر السطر الأول يعيد المؤشر إلى ما بعد النص الذي تم إدراجه السطر الثاني يجعل تحديد النص = 0 . أي عند تنفيذ الإضافة النصية من الزر فإنه سيتم نقل التركيز الى مربع النص وبالتالي سيتم تحديد كامل النص ، ونحن لا نريد هذا طبعاً ، وبالتالي المهمة المطلوبة هي فقط أن يتم وضع المؤشر في المكان الجديد ( الذي تم تحديده قبل الإضافة طبعاً ) بدون تظليل النص .
  22. تمام اخي الكريم .. بداية وحتى تتوضح فكرتي بالتنفيذ ، سنعتمد على حدث عند النقر لمربع النص 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
  23. من باب التوضيح إن كنت قد فهمت المطلوب بشكل صحيح .. هل الصورة أدناه تطبق للمطلوب ؟؟؟
×
×
  • اضف...

Important Information