نجوم المشاركات
Popular Content
Showing content with the highest reputation on 03/03/20 in all areas
-
الآن سؤالك كامل وواضح 🙂 لما تُدخل البيانات ، سؤاء في الجدول او الاستعلام او النموذج ، ترى ان طرف السجل عليه هذه العلامة : . هذه العلامة معناها انك في وضع إدخال المعلومة / تعديلها / تحديثها ، ولكنك لم تحفظها بعد ، فلما تخرج من السجل (خروجك من الحقل الى حقل آخر معناه انك لازلت على نفس السجل) ، سواء الى السجل السابق او التالي او اي سجل او حتى خروجك من الجدول / الاستعلام / النموذج (لأن الاكسس تلقائيا يحفظ السجل في هذه الحالات) ، هنا فقط الاكسس يحفظ بيانات السجل ، وعليه تختفى هذه العلامة 🙂 بعض الاوقات في النموذج نكون نُدخل البيانات ، والاكسس لا يكون قد حفظ السجل ، لهذا السبب ، لا تظهر هذه المعلومة الجديدة في التقرير (لانها اصلا غير محفوظة في الجدول) 🙂 والطريقة هي ان نُجبر البرنامج على حفظ السجل قبل طباعة التقرير ، وهناك عدة طرق لذلك ، ومنها : 1. النقر على زر Refresh All (مثل ما عملت انت) والذي يضطر البرنامج الى دفع ثمن باهض ، بتحديثه سجلات جميع الجداول (وهذا يأخذ وقت اذا كان عدد الجداول كثير او في شبكة) التي في البرنامج (واذا كنت تشتغل في بيئة اكثر من مستخدم وهناك من يدخل البيانات ، فحتى بياناتهم يتم تحديثها غصبا عنهم) ، 2. استخدام الكود ، قبل سطر طباعة التقرير (هذا الكود الاسرع) : يحفظ البيانات فقط اذا تم عمل تغيير عليها if me.dirty then me.dirty=false او سيتم حفظ البيانات بغض النظر اذا تم تعديل عليها او لا docmd.runcommand accmdsaverecord 3. استخدام الكود ، قبل طباعة التقرير (وهذا ابطئ ، لأنه يضطر الى تحديث بيانات الجدول ، ثم جلبها الى النموذج) : me.Refresh او me.Requery . جعفر3 points
-
السلام عليكم ورحمة الله استخدم هذا الكود Sub UnhideSheets() Dim Sh As Worksheet For Each Sh In Worksheets Sh.Visible = xlSheetVisible Next End Sub3 points
-
2 points
-
السلام عليكم مرفق نموذج لحساب الضريبة اضافة الضريبة للمبلغ او اقتطاع من المبلغ TAX.rar2 points
-
2 points
-
هذه المعالة واسحب نزولاً (لا تحصل على نتيجة الا اذا كانت الخلية F و الخلية G غير فارغتين وتحتوي اعداداً فقط) =IF(OR(NOT(ISNUMBER(F8)),NOT(ISNUMBER(G8))),"",G8*F8) الملف مرفق Alpha.xlsx2 points
-
السلام عليكم عمل قائمة فرعية لفتح النماذج انظر للملف المرفق اتمنى يفيدك للامانه هذه الاكواد منقولة تحباتي اختبار.rar2 points
-
احد المؤسسات التي تستعمل احد برامجي ، عندها 16 مستخدم ، وحوالي 2200 عملية تعامل مع البيانات يوميا ، من سجلات جديدة ، او تحديث او حذف ، او تصفح ، واكثر من مليون ونصف سجل بين مختلف جداول البرنامج ، لهذا السبب ، مافي مجال إلا ان يكون البرنامج في كامل لياقته 🙂 جعفر2 points
-
2 points
-
السلام عليكم 🙂 نعمل البرنامج ، ثم نقسمه الى قسمين ، 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.zip1 point
-
السلام عليكم 🙂 رجاء مراجعة موضوع النسخة 2 من هنا : واجهة هذه النسخة: البرنامج يقوم بهذه الخطوات التي يوصي بها المحترفين (كما هو موضح في الصورة اعلاه) ، طريقة العمل: 1. اختار ملف اكسس ، 2. اذا الملف محمي بكلمة سر ، فيمكن كتابته في المربع المخصص ، حيث سيتم حفظه في ذاكرة الكمبيوتر ، والتي يجب عليك ان تدخلها يدويا للقيام بالخطوات 2 و 3 لمرة واحدة ، بينما البرنامج سيدخلها تلقائيا للخطوات التالية ، 3. يجب ان تمسك مفتاح الشفت ، ثم تضغط على زر Decompile ، ولا تترك الزر إلا لما ينتهي البرنامج من عمله ، عندما نرى الخطوات 8 و 9 🙂 هذه النسخة اسرع من النسخة السابقة ، وافضل 🙂 جعفر Decompile_3.zip1 point
-
1 point
-
1 point
-
الحمدلله 🙂 الظاهر القلة من الاعضاء يعرف اهمية هذا البرنامج (وخصوصا بنسخته الاخيرة 🙂 ) فياريت ، وبدون امارة عليكم اخواني @kaser906 و @محمد سلامة و @سلمان الشهراني ان تعطونا بعض تجاربكم ، حتى يستفيد الجميع 🙂 جعفر1 point
-
هذه طريقة اخرى Private Sub Command2_Click() 'Me.Child0.SetFocus Screen.PreviousControl.SetFocus End Sub جعفر1 point
-
وعليكم السلام اخى الفاضل هل هذا ما تريد ؟ تقبل تحياتى وتمنياتى لك وللجميع بالتوفيق New 1.accdb1 point
-
السلام عليكم و رحمة الله و بركاته اخواني و اساتذتي رواد منتدانا الغالي كل عام و انتم و الامه الاسلاميه بخير و صحة و عافيه و عيدكم مبارك هديتي متواضعه كعلمي و ارجو من الله ان يكون بها فائدة لاخواني المبتدئين على وجه الخصوص برنامج المعاملات : يقوم بحفظ بيانات المعاملات و من ثم يتم تصنيف المعاملات الى 6 فئات 1: منجزة تحت الاجراء : لم تتجاوز الثلاثة ايام و ينطبق على الفئة الرابعة 2: منجزة متأخرة : ما بين 4 الى 10 ايام و ينطبق على الفئة الخامسة 3: منجزة متأخرة جداً : اكثر من 10 ايام و ينطيق على الفئة السادسة 4: غير منجزة تحت الاجراء : 5: غير منجزة متأخرة 6: غير منجزة متأخرة جداً - تدوين كامل بيانات المعاملة واضافة اكثر من مرفق للمعاملة الواحدة و تصفح المرفقات ( يتم فك الضغط عن الملف بالدرايف C و حفظ جميع صور المعاملات المراد استعراضها من البرنامج بالملف Photos و يمكن تغيير المسار بالدخول على الكود ) علماً بأن الصور فقط بالامتداد JPEG - هناك عملية متابعه يتم من خلالها عرض المعاملات الغير منجزة و عرض تقرير بها - تقرير يشتمل على رسوم بيانيه للاحصاء و المقارنة يوضح النسبة المئويه لعدد المعاملات المنجزة لجهة او اربعة جهات كحد اقصى كما يوجد احصاء لجميع المعاملات المنجزة و الغير منجزة ( تقريرين حسب نوع المقارنة ) - ارسال بريد الكتروني لجميع المعاملات التي لم تنجز في اكثر من 3 ايام و تدوين تاريخ و وقت ارسال الايميل تلقائي - التحكم في نص الرسالة و و عنوانها و الجهة المراد ارسال نسخة من البريد اليها - صلاحيات للمستخدمين تتكون من مستويين : 1: كامل الصلاحيات : و بتحديدها يتم الدخول على كامل البرنامج 2: صلاحية محدودة : وفيها فقط يتم استعراض السجلات و عمل الاحصائيات و المقارنات 3: تحديد كامل الصلاحية او الصلاحية المحدودة يتم من خلال مربع اختيار CheckBox 4: شاشة لمتابعة دخول و خروج المستخدمين ليتابعها المسئول مع ملاحظة بأن سجلات هذا الجدول ستكون في ازدياد بعدد مرات الدخول الى البرنامج و ينصح بشدة التخلص منها و حذفها في حالة عدم الحاجة اليها . البرنامج مفتوح و بدون الشفت او اخفاء الاكسس ايضاً ليتمكن اخواني المبتدئين من الاستفادة من الاكواد الموجودة فيه اسأل الله عز و جل التوفيق للجميع اخوكم : يوسف Documentation.rar1 point
-
1 point
-
1 point
-
1 point
-
حياك الله أخي @أحمد الفلاحجى اشغلتنا مشاغل الدنيا كنت قبل اسبوع اقدم برنامج تدريبية في جهة عملي عن إنشاء قواعد البيانات باستخدام برنامج اكسيس ودللتهم على هذا المنتدى المبارك ومشرفيه وخبراء المتميزين . والفترة القادمة سأحاول تعلم لغة #C بتقنية asp.net الله يسهل دعواتكم اشكر لك سؤالك1 point
-
وعليكم السلام بارك الله فيك وجزاك الله كل خير منور اخى صالح @ابوآمنة تقبلوا تحياتى وتمنياتى لكم وللجميع بالتوفيق وعليكم السلام بارك الله فيك وجزاك الله كل خير منور اخى صالح @ابوآمنة تقبلوا تحياتى وتمنياتى لكم وللجميع بالتوفيق وعليكم السلام بارك الله فيك وجزاك الله كل خير منور اخى صالح @ابوآمنة تقبلوا تحياتى وتمنياتى لكم وللجميع بالتوفيق1 point
-
تحيه وتقدير للقائمين على هذا الصرح الكبير لقد ادمنت هذا المنتدى يوميا وبفترات طويله لحبى للتعلم وهذا الصرح اصبح هو الخيار الاول لى شكرا لكم مع التمنى بالتقدم والازدهار1 point
-
حياك الله 🙂 الكود الذي عندك يشتغل ، لما عندك سجلات ، ولكن في بداية السنه ، وحيث لا يوجد سجل ، اي الحقل no لا توجد له قيمة ، المعادلة ستعطيك نتيجة Null وبالتالي ستحصل على رسالة خطأ ، فلازم نعالج هذا الموضوع ، و أحد الطرق هي الدالة nz ، والتي نطلب منها استبدال Null بالرقم صفر ، فيعمل الكود بالطريقة الصحيحة 🙂 بدلا عن t2 = DMax("[no]", "hesab", j) + 1 استعمل t2 = nz(DMax("[no]", "hesab", j),0) + 1 جعفر1 point
-
1 point
-
1 point
-
وعليكم السلام 🙂 انا ما اعرف اسماء الحقول في الجدول ، لذلك يجب ان تغير اسمائها في الكود 🙂 الموجود عندك 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 الى اسمه الصحيح في النموذج 🙂 جعفر1 point
-
عندما اقوم بادخال بيانات مثل خصم علي الفاتورة واذهب لطباعة الفاتورة من تقرير لايعطيني صافي الفاتورة الا عندما اقوم بعمل refresh All من قائمة home كما هو موضح في الصورة اريد كود بديل لزر refresh all1 point
-
1 point
-
1 point
-
الاخول الكرام عندي في المرفق مجلد فيه ملفات اكسيل وملف اخر رئيسي والكل مخزن بسطح المكتب في الملف الرئيسي كود للاستاذ المحترم عماد غازي اريد فضلا تعديل الكود لاستدعاء اسماء الملفات كما موضح في الشرح بالمرفق تحياتي Desktop.rar1 point
-
1 point
-
حياكم الله 🙂 لما انتهي من برنامج ، او عمل تعديل على برنامج ، وقبل ان ارسله الى الزبون ، فاقوم بتمريره عبر هذا البرنامج ، والذي يضمن لي ان البرنامج اصبح في كامل لياقته ، وهذه العملية إجبارية لي ، وليست اختيارية 🙂 جعفر1 point
-
1 point
-
شكراً استاذ محسن و لي انا بهذا الشأن هذا الماكرو (عسى ان ينال الإعجاب) Option Explicit Sub S_H_Test_NEW() Dim D As Worksheet: Set D = Sheets("Data") Dim M As Worksheet: Set M = Sheets("المطلوب") Dim ARR(): ARR = Array("S", "G", "C", "H") Dim Obj As Object, i%, Chek%, t% Set Obj = CreateObject("Scripting.Dictionary") M.Range("K2").CurrentRegion.ClearContents i = 2 Do Until D.Range("F" & i) = vbNullString For t = 1 To 4 Chek = Chek + (UCase(M.Cells(2, t)) = _ UCase(D.Cells(i, ARR(t - 1)))) Next If Chek = -4 Then _ Obj.Add i, D.Cells(i, "F") i = i + 1: Chek = 0 Loop If Obj.Count Then _ M.Cells(2, "k").Resize(Obj.Count) = _ Application.Transpose(Obj.items) Set Obj = Nothing: Set D = Nothing: Set M = Nothing Erase ARR End Sub الملف من جديد MY_search_MD_SH.xlsm1 point
-
1 point
-
اخى الفاضل استخدم واخبرنا بالنتيجه nz([text]);0) او ارفق مثال تقبل تحياتى وتمنياتى لك وللجميع بالتوفيق1 point
-
تم التعديل على الملف ليعمل كما تريد لا حاجة لادراج الترقيم (اكسل يفعلها أوتوماتيكياً) يمكنك التحرك داخل الشيت حتى ولو كان اليوزر ظاهراً Sort_Please.xlsm1 point
-
السلام عليكم اخى الفاضل تفضل الملف بعد التعديل ارجو ان يفيد و يفى بالغرض مطلوب النقل.xlsm1 point
-
السلام عليكم معكم ساجدة العزاوي من العراق اول مشاركة لي في المنتدى فديو مميز سهل رائع لاقى صدى واسع ينفع للكل للمدارس لدوائر الدولة للقطاع الخاص فديو عملته بـ 8 اجزاء ولما شفت كثيرين استفادوا منه عملت فديوين بعنوان في الاكسل متعة وسعادة وفرح فاصبح 10 اجزاء وساكمله باجزاء اخرى ... لانه رائع ومميز وسريع هناك من يريد تنسيبه لنفسه اترككم مع الفديو بحث بالاسم في TEXTBOX فيتم الفلترة الى LISTBOX وثم الى TEXTBOXES اكسل ساجدة العزاوي1 point
-
كيف يمكن تعبئة جدول مرتيب ابجديا فقط من خلال الكتابة في الصف رقم 2 للمزيد انظر الى هذا الملف WRITE_JUST IN ROW_2.xlsm1 point
-
ربما يكون المطلوب Sub creatB() Dim OBJECTfso Dim OBJECTfolder Dim OBJECTfils Dim ws As Worksheet Set ws = ActiveSheet ws.Range("a2:a100").ClearContents Set OBJECTfso = CreateObject("scripting.filesystemobject") Set OBJECTfolder = OBJECTfso.getfolder("C:\Users\pc\Desktop\med") ws.Cells(1, "a").Value = "the file founf in " & OBJECTfolder.Name & "Are" For Each OBJECTfils In OBJECTfolder.Files ws.Range("a" & Rows.Count).End(xlUp).Offset(1) = OBJECTfils.Name 1: Next Set OBJECTfolder = Nothing Set OBJECTfils = Nothing Set OBJECTfso = Nothing End Sub1 point
-
1 point
-
العفو العفو اخي الكريم عامر ... لو وزعت هذه الكلمات علي اعضاء المنتدى لكفتهم .. بارك الله فيك1 point