-
Posts
12,496 -
تاريخ الانضمام
-
Days Won
233
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو ابوخليل
-
ما شاء الله لا قوة الا بالله .. اخي فادي ولا اجمل .. سلمت أناملك سبحان الذي منحك الصبر والتمكن.. على هذا العمل الرائع والدقيق الحقيقة هذه الجمل البرمجية الجميلة تدرس وتحفظ كمرجع مهم للغاية لذا تم السطو على كم سطر منها .. فأعتذر .. زادك الله علما انا كنت اعمل على طلب الأخ سلمان وقت طلب مني ذلك ولكني توقفت لمشكلات ظهرت امامي وقد تمت معالجتها بفضل الله الفكرة التي يجب ان يكون تصميم الجداول قائم عليه كالتالي : 1- وجود حقل غير قابل للتكرار في جميع الجداول خاصة الجدول الفرعي الخارجي 2- خصائص العلاقة بين الجدول الرئيس والفرعي ( في القاعدة الحالية لاباس من توالي التحديث والحذف وهو جيد لاختصار عملية الحذف .. اما في القاعدة الخارجية فممنوع ويكفي التكامل فقط) 3- اضافة حقل نعم لا من اجل تأكيد التصدير وايضا الحذف 4- عمل تصفية بين تاريخين لحصر السجلات المراد اجراء العمليات عليها 5- لا يلزم الانتظار لشهر او غيره في عملية الحذف وانما تتم مباشرة بعد الترحيل تم العمل على النحو التالي وهي وجهة نظر تخصني وتحقيقا لما تفضل السائل بتأكيده : ((( وكما ذكرت ان هذه الفواتير خاصه بالزكاة والدخل ولاتحتمل الخطاء ))) لذا : لا يسمح باختيار قاعدة الببانات الخارجية من قبل المستخدم وانما توضع بجانب قاعدة البيانات الاساسية تم الضبط ولا خوف من اي خطأ مقصود او غير مقصود هذا للترحيل والحذف : Dim strPath As String strPath = CurrentProject.Path & "\Zakat2.accdb" DoCmd.SetWarnings False DoCmd.RunSQL "INSERT INTO [;DATABASE=" & strPath & "].TBInvoiceMain2 " & _ "SELECT TBInvoiceMain.* FROM TBInvoiceMain " & _ "WHERE TBInvoiceMain.chekForDel=True" DoCmd.RunSQL "INSERT INTO [;DATABASE=" & strPath & "].TBInvoiceSub2 " & _ "SELECT TBInvoiceSub.* FROM TBInvoiceMain " & _ "INNER JOIN TBInvoiceSub ON TBInvoiceMain.ID = TBInvoiceSub.ID " & _ "WHERE TBInvoiceMain.chekForDel=True" DoCmd.RunSQL "DELETE TBInvoiceMain.*, TBInvoiceMain.chekForDel FROM TBInvoiceMain " & _ "WHERE TBInvoiceMain.chekForDel=True" DoCmd.SetWarnings True وهذا للاسترجاع : lngInvoiceNumber = CLng(Trim(Me.Text1)) DoCmd.SetWarnings False DoCmd.RunSQL "INSERT INTO TBInvoiceMain " & _ "SELECT * FROM [;DATABASE=" & strPath & "].TBInvoiceMain2 " & _ "WHERE InvoiceNumber = " & lngInvoiceNumber DoCmd.RunSQL "INSERT INTO TBInvoiceSub " & _ "SELECT * FROM [;DATABASE=" & strPath & "].TBInvoiceSub2 " & _ "WHERE InvoiceNumber = " & lngInvoiceNumber DoCmd.SetWarnings True MsgBox "تم الاسترجاع", , "" Zakat.rar
-
المفهوم لشرحك انك تريد التالي : المستخدم سامي .. يحق له البحث في سجلاته التي ادخلها وسجلها هو .. سواء محمية او مفتوحة + سجلات زملائه المفتوحة فقط ومثله احمد وجميع المستخدمين اذا صح انت بحاجة ايضا الى يوزر مدير يبحث في الكل .. لأن هذا شيء منطقي
-
قصدي انها لا يتم حذفها مباشرة .. وهذا الذي ذكرته انت ان يتم حذفها بعد شهر الحذف الآلي لا انصح به ما المانع ان يكون هناك زر للحذف وحقل يبين عدد السجلات وتاريخ ترحيلها .. بل حقول .. لنفترض ان الترحيل يتم كل 10 ايام .. يتم عرض نموذج مستمر كل سجل امامه زر للحذف وفي السجل حقلين واحد بعدد السجلات والآخر تاريخ الترحيل .
-
شكرا اخي موسى .. الملف رائع وجميل .. وأجر نقلك على الله واعتب على اخونا السائل في تجهيزه لمثال سيء في التسميات رغم انه من الاعضاء المتميزين وغالبا امثلته رصينة بالنسبة لادخال المعايير هذه محاولة مني UsingTransactionNoClass_2.rar
-
عليكم السلام .. اهلا ابا حاتم رأيي ان تستغني عن عملية البحث هذه .. لتجنب بعض المحاذير التي قد تحدث والطريقة الآمنة ان تعمل استعلام في البرنامج الأول يظهر السجلات التي مضى عليها اكثر من شهر .. لكي تلحقها بالقاعدة الثانية . ثم تحذفها اما عملية الحذف فهي ايضا خطيرة لأننا نضع في اعتبارنا جميع الاحتمالات ( قد لا تصل السجلات الى القاعدة الثانية لأسباب عدة يعرفها غالب المبرمجين ) فأرى ان تكون عملية الحذف وهمية لفترة محددة ( من اجل زيادة الأمان) وتتم لاحقا على فترات الحذف الوهمي هي اضافة حقل نعم/لا للتحكم في ظهور السجلات من عدمه
-
فك الحظر عن قواحد البيانات من خلال : PowerShell
ابوخليل replied to ابو جودي's topic in قسم الأكسيس Access
جزيت خيرا ابا جودي الحقيقة انه اي ملف من ميكروسوفت اقوم بتنزيله _اذا غير مضغوط _ اضطر الى فتح خصائص هذا الملف واعطل هذا الحظر -
دعنا نتبع طريقة الاستاذ جعفر .. وحقيقة هي الطريقة النظامية التي تحترم خصوصية العميل و هي خفض امان برنامجنا فقط .. وابقاء الحماية على اي ملف اكسس آخر يتم تشغيله وتتم من خلال أضافة موقع قاعدة البيانات ( المجلد ) إلى المواقع الموثوقة. وجعله مجلدا موثوقًا وبما في داخله من ملفات اكسس. يتم ذلك يدويا في مركز التوثيق ضمن خيارات اكسس . وبما انك ذكرت ان الاجهزة الاخرى لا تحتوي على اكسس كامل فيمكن معالجة الامر برمجيا واضافة توثيق مجلد البرنامج لاحظ ان موقع البرنامج سيكون ثابت في مكان محدد .. ولو تم تغيير الموقع مستقبلا فستعود الحماية طبعا الموقع وتحديده او تغييره متاح لك من خلال سطر الكود في المرفقات ملف ريجستري يقوم باعطاء الثقة لمجلد محدد .. للتجربة : ارفع مستوى الحماية في اكسس عندك .. وافتح قاعدة بيانات محددة للتأكد ان الحماية فعالة غير الامتداد الى txt وافتح الملف وغير اسم المجلد وموقعه حسب ما لديك .. واحفظ واغلق ثم اعد تسمية الامتداد انتبه لرقم اصدار اكسس .. فالموجود في الملف 14 لأكسس 10 شغل الملف اذهب بعدها للمقارنة بين القواعد التي خارج المجلد الهدف والقاعدة التي داخله ---------------------------------------------------------------------------------------------------- نعم يمكن .. انا استخدم ملفات باتش bat. يتم تشغيلها اثناء او بالاصح في نهاية عملية التنصيب ,, واستخدمها لاغراض اخرى وليست للأمان وانما استخدم ملفات exe لخفض الأمان لم اجرب reg فلعلك تجرب وتخبرنا بالنتيجة ( يمكنك كتابة الاسطر داخل برنامج التحزيم .. ان كان يدعم ذلك ) AccessTrusted.rar
-
معالجة جميلة استاذ فادي وهذه محاولة مني لإدراج الترقيم في الجدول Dim rs As Recordset Dim i As String Dim ii As Integer Dim x As Integer Set rs = CurrentDb.OpenRecordset("Query1") rs.MoveLast rs.MoveFirst i = Me.GRADE1.Column(1) ii = Me.GRADE1.Column(2) Do While Not rs.EOF rs.Edit rs!code_stagiere = i & (ii + x) rs.Update x = x + 1 rs.MoveNext Loop baseAA.rar
-
جزاك الله خير يا ابا فايز على دعواتك الطيبة سوف اضرب لك مثلا يقرب المسألة لك لو كنت في بيت وتفاجأت ان لا يوجد ماء ولا اتصال بالهاتف والسبب ان هذه الاشياء لا تعمل الا بالكهرباء .. والكهرباء مقطوعة وكي تعمل هذه الاشياء يجب ان تذهب الى قاطع الكهرباء خارج البيت وتفتحه بالضبط هذا ما يحدث في اكسس .. محرك اكسس الموجود على الجهاز قد عطل تنفيذ الاكواد والماكرو في ملفك عند الفتح .. فأصبح ملفك معاقا 😶 وبشكل ادق : محرك اكسس هو من يفتح الملف والحماية في المحرك سابقة للفتح .. لذا : اما التدخل من الخارج وتخفيض الأمان قبل فتح الملف ... او التدخل يدويا وتخفيض الامان لاحظ انه بعد التعديل يدويا يطالبك باعادة تشغيل ملفك انا اتصور ان المسألة ابسط مما نتصور .. خاصة اذا ارسلت البرنامج الى عميل معلوماته محدودة يكفي تصوير خطوات العملية .. او فيديو صغير .. ولا يلزم ان تتم عملية تخفيض الأمان من خلال برنامجك وانما يمكن من خلال فتح اكسس جديد ثم / ملف / خيارات / مركز التوثيق / امان الماكرو / ثم حدد آخر سطر للاسفل وموافق للجميع اتمنى ان يكون ردي هذا مفيدا
-
البحث والتفحص يكون من خلال تقرير او من خلال نموذج محمي هكذا تنحل مشكلتك لانه لا يتصور التعديل على بيانات تاريخية وهنا يجب التنبيه ان الادخال يكون عبر نموذج ( ادخال بيانات ) حتى لا يتم عرض ما سبق ادخاله
-
السلام عليكم في اعمالي دوما اجعل خصائص النماذج والتقارير منبثق ( pop Up) = نعم و النمط النموذجي (modal ) = نعم وكذلك التقارير مخالفا في ذلك طريقة الاستاذ جعفر .. حيث اوضح في احدى مشاركاته انه يتجنب هذه الخصيصة . ولكن في معمعة التصميم اجعلها كلها = لا والسبب انني احتاج الى فتح اكثر من نموذج وتقرير والتعامل معها في نفس الوقت واحيانا انتهي من المشروع واضبط الجميع على الخصيصة = نعم ثم يطرأ تعديلات في المشروع على اكثر من نموذج وتقرير وهنا انا ملزم بتغيير الخصيصة الى = لا من اجل تسهيل العمل والتنقل احيانا يكون التعديل على 3 او 4 نماذج او اكثر ولكم ان تتخيلوا ان المشروع احيانا يشتمل على اكثر من 20 نموذجا ومثلها او اكثر من التقارير وفي النهاية ومن باب الحرص على الضبط .. اقوم بفتح جميع النماذج والتقارير للتأكد من ان الخصيصة على ما يرام ، وهذا لا شك مرهق ويأخذ من الجهد والوقت الكثير .. لذا هداني الله لدالة تقوم بالعمل نيابة عني في جزء من الثانية تجدون ادناه الدالة لتفعيل الخصائص المختارة .. ولاحظوا انه يمكن عكس العملية وبسهولة الدالة عامة لجميع الخصائص .. عليك اختيار الخصيصة فقط لتعميمها على جميع النماذج ومثلها ايضا على جميع التقارير 'تطبيق على جميع النماذج Public Function funforms() Dim frm As Object For Each frm In CurrentProject.AllForms DoCmd.OpenForm frm.Name, acDesign Forms(frm.Name).PopUp = True Forms(frm.Name).Modal = True Forms(frm.Name).ShortcutMenu = False DoCmd.Close acForm, frm.Name, acSaveYes Next End Function ' ومثلها للتقارير Public Function funreports() Dim rep As Object For Each rep In CurrentProject.AllReports DoCmd.OpenReport rep.Name, acDesign Reports(rep.Name).PopUp = True Reports(rep.Name).Modal = True Reports(rep.Name).ShortcutMenuBar = "cmb_Copy_Sort_Filter" 'قائمة استاذنا جعفر المختصرة DoCmd.Close acReport, rep.Name, acSaveYes Next End Function
- 1 reply
-
- 2
-
شكرا ابا جودي ((( أهم دوال الوقت والتاريخ مجمعة فى وحدة نمطية عامة واحدة ))) تستحق موضوع يخصها
-
كود او استعلام لتحديث تاريخ النفاد دفعة واحدة
ابوخليل replied to محمد التميمي's topic in قسم الأكسيس Access
تفضل New.rar -
عدم امكانية التعديل على البيانات بعد انتهاء اليوم
ابوخليل replied to زهراء محمد's topic in قسم الأكسيس Access
انا عادة لا اطرح حلولا لموضوع بادر بالاجابة عنه احد اخوتي .. خاصة الخبراء منهم .. ولكني كنت اعمل على المثال حينما كان الاستاذ عمر يشارك الأمر يسير : 1- افتح النموذج الفرعي على التصميم 2- انقر بزر الفأرة الأيمن على اي حقل 3- اختر من القائمة : التنسيق الشرطي اذا واجهاتك بالعربية او condition formating مؤكد ستتضح لك المسألة ملحوظة : انا قمت بتطبيق الشرط على جميع الحقول كل واحد على حدة كي يتم حماية السجل بالكامل يمكنك الاكتفاء بتطبيقه على حقل واحد -
عدم امكانية التعديل على البيانات بعد انتهاء اليوم
ابوخليل replied to زهراء محمد's topic in قسم الأكسيس Access
مشاركة مع اخي الاستاذ عمر حل آخر باستخدام التنسيق الشرطي sick2.rar -
عليكم السلام اعتقد لو وضعت هذا السطر في اعلى الكود سيتجاوز الخطأ ولن تظهر الرسالة ، ولكن لن يتم التحديث على الحقل On Error Resume Next
-
النموذج المستمر عيبه ان يكون الشرط على حقل منضم لحل هذه المشكلة يجب اللجوء الى التنسيق الشرطي ولكن التنسيق الشرطي لا يخدم الأزرار والتسميات لذا يجب التحايل وتحويل الزر الى مربع نص واجراء التنسيق الشرطي عليه انظر الى المثال المعدل .. يمكنك اجراء تحسينات على الزر المصنوع Database3.rar
-
الرسالة هذه تفيد عدم وجود بيانات تم اضافة سطر لتوضيح الحالة ملحوظة حتى تظهر المادة يجب ادخال تاريخ موجود في الجدول ExamTimeTable Dim i As String todd.Requery i = Nz(DLookup("[crs_cd]", "[ExamTimeTable]", "[edate] =#" & [Forms]![GyabF]![todd] & "#"), "") If i = "" Then MsgBox "لا يوجد اختبار في هذا التاريخ", , "" Else Me.crs_cd = i End If اذا لا تريد الرسالة والتنبيه يظهر تكتفي بهذه Dim i As String todd.Requery i = Nz(DLookup("[crs_cd]", "[ExamTimeTable]", "[edate] =#" & [Forms]![GyabF]![todd] & "#"), "") Me.crs_cd = i Gyab3.rar
-
مطلوب نقاش واتفاق على على تسمية الخاصية (افضل اجابة)
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
جزاك الله خيرا ابا احمد الآن يمكننا العمل على هذه الخصيصة بلا حرج بمجرد الشكر من صاحب الموضوع او اي رد منه يدل على حصوله على حاجته . -
عليكم السلام Dim i As String todd.Requery i = DLookup("[crs_cd]", "[ExamTimeTable]", "[edate] =#" & [Forms]![GyabF]![todd] & "#") Me.crs_cd = i Gyab2.rar
-
الفكرة حلوة ولكن تنفيذها استغرق منك استعلامات ونموذج فرعي وقوائم وخلف هذه القوائم اكواد وجمل برمجية طويلة .. انظر لطريقتي في تنفيذ الفكرة الاولى في Database6 والتي استخدمها في برامجي للحجب الثانية في Database7 وهي اختصار للأولى واستخدمها للاختيار عند الطباعة Downloads.rar