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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. وعليكم السلام 🙂 هناك مجموعة امثلة لملفات الاكسل اللي من موقع النور : . . . . . رجاء تشوفها ، واذا المطلوب غير هذا ، رجاء تخبرنا 🙂 جعفر
  2. شكرا جزيلا اخوي كاسر 🙂 هذه فكرة ان شاء الله استخدمها للنسخة التالية 🙂 بحيث ، نجمع هذا العمل مع Backup ، سواء بزر او عند الخروج من البرنامج 🙂 جعفر
  3. وعليكم السلام 🙂 بعض الاوقات ، وهذا حصل معي ، يعطب الكومبوبوكس !! فلا تحاول وتعمل اي شيء ، سوى حذفه وعمله من جديد (لا تنسخ الكائن/الكومبوبوكس القديم ، نعم تقدر تنسخ الكود) 🙂 جعفر
  4. اخي walaaasim انت تكتب في موضوع من سنة 2006 ، فلا تتوقع ان يرد عليك احد !! رجاء اكتب موضوع جديد واشرح فيه اللي تريد ، واشر الى هذا الموضوع ، وان شاء الله تلقى الرد المطلوب 🙂 جعفر
  5. وعليكم السلام 🙂 1. الكود ناقص ، فلم تقل انه يعطي هذه القيمة لأي حقل ، 2. عبارة Select خطأ ، لأنها تتكلم عن جدول ، بينما الاشارة الموجودة هي لنموذج ، 3. غير معروف اذا كانت الوحدة النمطية تحتوي على نفس عدد المتغيرات التي تحاول ان ترسلها من هذا الكود. جعفر
  6. السلام عليكم 🙂 هناك 3 طرق لعمل الذي تريده ، فإختار الطريقة التي تناسبك 🙂 . 1. اختيار السجل كاملا: الكود Private Sub Form_Current() Me.my_ID = Me.Text1 End Sub والتنسيق الشرطي واحد للحقول كلها Expression is: [my_ID]=[iid] . 2. اختيار كل حقل بطريقة مستقلة ، وبيانات الحقل المتشابهة كلها ستظهر : الكود Private Sub Text1_Click() Me.my_ID = "1|" & Me.Text1 End Sub Private Sub Text2_Click() Me.my_ID = "2|" & Me.Text2 End Sub والتنسيق الشرطي للحقل iid Expression is: Mid([my_ID],1,InStr([my_ID],"|")-1)=1 And Mid([my_ID],InStr([my_ID],"|")+1)=[iid] للحقل fName Expression is: Mid([my_ID],1,InStr([my_ID],"|")-1)=2 And Mid([my_ID],InStr([my_ID],"|")+1)=[fName] . 3. اختيار كل حقل بطريقة مستقلة ، وكل حقل له استقلاليته : الكود Private Sub Text1_Click() Me.my_ID = "1|" & Me.Text1 & "|" & Me.Text2 End Sub Private Sub Text2_Click() Me.my_ID = "2|" & Me.Text1 & "|" & Me.Text2 End Sub والتنسيق الشرطي للحقل iid Mid([my_ID],1,InStr([my_ID],"|")-1)=1 And Mid([my_ID],InStr([my_ID],"|")+1,InStr(3,[my_ID],"|")-3)=[iid] And Mid([my_ID],InStr(3,[my_ID],"|")+1)=[fName] للحقل fName Mid([my_ID],1,InStr([my_ID],"|")-1)=2 And Mid([my_ID],InStr([my_ID],"|")+1,InStr(3,[my_ID],"|")-3)=[iid] And Mid([my_ID],InStr(3,[my_ID],"|")+1)=[fName] . جعفر 1174.RemainFocus_OutsideForm.accdb.zip
  7. السلام عليكم 🙂 رجاء معاينة qry_All ، وسترى اننا بحاجة الى المزيد من البيانات ، مثل الشهر (من اين نأخذه ، هل من النموذج) ونقارنه مع اي حقل في الجدول 🙂 رجاء تعبئة بيانات الجداول المطلوبة 🙂 جعفر HR.zip
  8. تفضل 🙂 1174.RemainFocus_OutsideForm.accdb
  9. اخي الفاضل 🙂 وبعد 10 مشاركات في هذا الموضوع ، وانت شايف اننا ما فاهمين طلبك ، اما آن الاوان ان تخبرنا بالضبط شو اللي تريده ، وبالتفصيل ، لوسمحت !! جعفر
  10. الحمدلله 🙂 الظاهر القلة من الاعضاء يعرف اهمية هذا البرنامج (وخصوصا بنسخته الاخيرة 🙂 ) فياريت ، وبدون امارة عليكم اخواني @kaser906 و @محمد سلامة و @سلمان الشهراني ان تعطونا بعض تجاربكم ، حتى يستفيد الجميع 🙂 جعفر
  11. هذا نفس الكود السابق ، ولكن على النموذج المستمر ، واذا ما كان اللي تريده ، فرجاء New 1.accdb
  12. رد اخي احمد و ردي انا يعطون نفس النتائج ، ويكونون في حدث النقر على الزر 🙂 جعفر
  13. هذه طريقة اخرى Private Sub Command2_Click() 'Me.Child0.SetFocus Screen.PreviousControl.SetFocus End Sub جعفر
  14. حياك الله 🙂 جعفر
  15. وعليكم السلام 🙂 راجع العلاقات بين الجداول عندك ، فهي اللي تمنع ادخال مادة غير موجودة في جدول آخر !! جعفر
  16. حياك الله 🙂 الكود الذي عندك يشتغل ، لما عندك سجلات ، ولكن في بداية السنه ، وحيث لا يوجد سجل ، اي الحقل no لا توجد له قيمة ، المعادلة ستعطيك نتيجة Null وبالتالي ستحصل على رسالة خطأ ، فلازم نعالج هذا الموضوع ، و أحد الطرق هي الدالة nz ، والتي نطلب منها استبدال Null بالرقم صفر ، فيعمل الكود بالطريقة الصحيحة 🙂 بدلا عن t2 = DMax("[no]", "hesab", j) + 1 استعمل t2 = nz(DMax("[no]", "hesab", j),0) + 1 جعفر
  17. وعليكم السلام 🙂 انا ما اعرف اسماء الحقول في الجدول ، لذلك يجب ان تغير اسمائها في الكود 🙂 الموجود عندك j = "Year(datee) = " & Year(Me.datee) t2 = DMax("[no]", "hesab", j) + 1 اضف السطر الثاني j = "Year(datee) = " & Year(Me.datee) j = j & " And [Sanad]='" & Me.t1 & "'" t2 = DMax("[no]", "hesab", j) + 1 غير [Sanad] الى اسمه الصحيح في الجدول ، وغير Me.t1 الى اسمه الصحيح في النموذج 🙂 جعفر
  18. الآن سؤالك كامل وواضح 🙂 لما تُدخل البيانات ، سؤاء في الجدول او الاستعلام او النموذج ، ترى ان طرف السجل عليه هذه العلامة : . هذه العلامة معناها انك في وضع إدخال المعلومة / تعديلها / تحديثها ، ولكنك لم تحفظها بعد ، فلما تخرج من السجل (خروجك من الحقل الى حقل آخر معناه انك لازلت على نفس السجل) ، سواء الى السجل السابق او التالي او اي سجل او حتى خروجك من الجدول / الاستعلام / النموذج (لأن الاكسس تلقائيا يحفظ السجل في هذه الحالات) ، هنا فقط الاكسس يحفظ بيانات السجل ، وعليه تختفى هذه العلامة 🙂 بعض الاوقات في النموذج نكون نُدخل البيانات ، والاكسس لا يكون قد حفظ السجل ، لهذا السبب ، لا تظهر هذه المعلومة الجديدة في التقرير (لانها اصلا غير محفوظة في الجدول) 🙂 والطريقة هي ان نُجبر البرنامج على حفظ السجل قبل طباعة التقرير ، وهناك عدة طرق لذلك ، ومنها : 1. النقر على زر Refresh All (مثل ما عملت انت) والذي يضطر البرنامج الى دفع ثمن باهض ، بتحديثه سجلات جميع الجداول (وهذا يأخذ وقت اذا كان عدد الجداول كثير او في شبكة) التي في البرنامج (واذا كنت تشتغل في بيئة اكثر من مستخدم وهناك من يدخل البيانات ، فحتى بياناتهم يتم تحديثها غصبا عنهم) ، 2. استخدام الكود ، قبل سطر طباعة التقرير (هذا الكود الاسرع) : يحفظ البيانات فقط اذا تم عمل تغيير عليها if me.dirty then me.dirty=false او سيتم حفظ البيانات بغض النظر اذا تم تعديل عليها او لا docmd.runcommand accmdsaverecord 3. استخدام الكود ، قبل طباعة التقرير (وهذا ابطئ ، لأنه يضطر الى تحديث بيانات الجدول ، ثم جلبها الى النموذج) : me.Refresh او me.Requery . جعفر
  19. وعليكم السلام 🙂 مع اني لا ارد على اسئلة المستخدمين والامور الامنية ، لأنها مو نقطة قوتي ، ولكن بعملية بحث بسيطة ، وجدت الكثير والكثير من هذه المواضيع ، واليك واحدة منها: جعفر
  20. السلام عليكم 🙂 نعمل البرنامج ، ثم نقسمه الى قسمين ، 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
  21. وعليكم السلام 🙂 رجاء تعطينا تفاصيل اكثر حتى نقدر نساعدك 🙂 جعفر
  22. وعليكم السلام 🙂 جرب هذا الكود: =IIf(IsError([Text61]-[Text63]);"";[Text61]-[Text63]) جعفر
  23. وعليكم السلام 🙂 رجاء عمل التالي: 1. ادخل بيانات في جدول الاشهر ، وبيانات اخرى في الجداول الاخرى حسب الحاجة ، 2. ماهي العلاقة بين جدول الاشهر وبقية الجداول ؟ ثم على اساس هذه البيانات ، اعمل يدويا النتيجة التي تريدها على اكسل ، وارفق لنا كل ذلك ، وان شاء الله خير 🙂 جعفر
×
×
  • اضف...

Important Information