شايب
03 عضو مميز-
Posts
304 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
2
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو شايب
-
اولا اعتذر منك استاذي الفاضل د.محمد عن تأخري في الرد حيث اعاني من وعكة صحية شديدة الجواب نعم اذا كان البرنامج بصيعة 2003 ولكن وربما حديثي قد لايروق لبعض الاساتذة فانا لن اعود للاصدارات الاقدم حتى وان احتوت على ميزتين افتقدناها في اصدارات 2007 فما فوق
-
في الاصدارات ماقبل 2007 اي 2003 ومادون كانت هناك ميزة الاذونات والامان على مستوى المستخدم وهذه نبذه عنها من موقع مايكروسوف يشبه الأمان على مستوى المستخدم في Access آليات الأمان على الأنظمة المستندة إلى الخادم، فهو يستخدم كلمات المرور والأذونات للسماح بالوصول إلى العناصر الموجودة في قاعدة البيانات أو تقييد وصول الأفراد أو مجموعات من الأفراد إليها. في Access 2003 أو الإصدارات السابقة، عند تطبيق الأمان على مستوى المستخدم في قاعدة بيانات Access، يمكن لمسؤول قاعدة البيانات أو مالك عنصر التحكم في الإجراءات التي يمكن للمستخدمين الفرديين أو مجموعات المستخدمين تنفيذها على الجداول والاستعلامات والنماذج والتقارير وحدات الماكرو في قاعدة البيانات. على سبيل المثال، يمكن لمجموعة واحدة من المستخدمين تغيير الكائنات في قاعدة بيانات، ويمكن لمجموعة أخرى إدخال البيانات فقط في جداول معينة، ويمكن لمجموعة ثالثة عرض البيانات فقط في مجموعة من التقارير. وللوصول على هذه الميزه افتح برنامج اكسس ثم فتح وقبل اختيار الملف اختر فتح خاص ثم اختار الملف بعد فتح القاعدة من قائمة ملف اختار معلومات ستجدمن ضمن الخيارات ادارة المستخدمين والاذونات الاذونات والامان على مستوى المستخدم للاصدارات 2003 ولكن تعمل في الاصدارات بشرط عدم ترقية قاعدة البيانات الصورة المرفقة للاذونات التي استخدمت في البرنامج الحالي هل يمكن كسرها هنا اتوقف ونترك الامر للاساتذة فمن تحدث في غير فنه اتى بالعجائب اخونا الشايب
-
طبيعي لانه ترقيم تلقائي ولدينا اكثر من طريقة لتلافي ذلك نجعل الترقيم بالكود باستخدام dmax او نجعل النموذج غير منضم وطالما الاستاذ خليفة مشارك فاتوقف هنا وندع الامر للاساتذة اخونا الشايب
-
بل يعمل اخي الملف مرفق Database1(19).accdb
-
استخدم دالة العد في حدث بعد التحديث لحقل الجهة او في زر امر او في الحدث الذي تراه مناسب لبرنامجك ضع الامر التالي Dim x As Integer x = DCount("*", "table1", "[num]=" & [Num] & "and [from]='" & [From] & "'") If x > 1 Then If MsgBox("هذه القيمة مسجلة مسبقا", vbYesNo, "تكرار") = vbYes Then DoCmd.CancelEvent Me.Undo Else End If End If الشايب
-
ربط اوليات المراسلات الاولية مع بعضها البعض
شايب replied to زياد الحسناوي's topic in قسم الأكسيس Access
الحقيقة ان الحاجة ام الاختراع من اكبر مشاكل برامج الاتصالات الادارية موضوع سداد القيد وهو ما اشار اليه الاستاذ زياد واسماه ربط اولويات المراسلة عند عدم سداد القيد يكون هناك انقطاع في تتبع المعاملة بل وفقدان للمعاملات لذا كانت فكرة القيد الموحد وطالما اتجهنا لقيد موحد فان جدول واحد رئيسي يكفي وما يتبعه من جدول تابع للحركة "في البداية اهملناه ثم تنبهنا الى اهمية وجوده" ولعمل افضل نحتاج الى جدول اضافي اختياري للجهات الصادرة اليها او الواردة منها المعاملة لكي لا يترك للمستخدم الاجتهاد في كتابة هذه الاسماء فاحدهم في حقل الجهة الواردة منها المعاملة يكتب وزارة الموارد البشرية وموظف اخر يكتب الموارد وثالث ... ورابع ... الخ العفو يا ابا خليل فوالله ما انا الا تلميذ من تلاميذكم ولي الشرف ان اكون كذلك رحم الله امرىء عرف قدر نفسه الشايب -
ربط اوليات المراسلات الاولية مع بعضها البعض
شايب replied to زياد الحسناوي's topic in قسم الأكسيس Access
هذا اقنباس من ردي في الموضوع السابق -
اخفاء واظهر الحقول باستخدام If لا تعمل عند أختيار معين
شايب replied to زياد الحسناوي's topic in قسم الأكسيس Access
ياهلا ومرحبا باستاذنا الفاضل محمد 🌹 -
استمتعت بمشاهدة العرض التوضيحي والبرنامج جميل واضح ويمكن لاي شخص العمل عليه بكل سهولة لدي بعض الامور البسيطة وتبقى وجهة نظر شخصية لاخينا شايب في شاشة اضافة مشترك لماذا يوجد حقل للديانة في بعض الحقول استخدمت قناع الادخال وهو امر قد يكون مزعج لبعض المستخدمين بالنسبة لمصدر القائمة البلد ولكل القوائم من رأي اخينا شايب عدم استخدام قائمة القيم واستخدم الجداول كمصدر واذا كان لدينا عدد كبير من القوائم ممكن استخدام جدول واحد ونتحكم في المصدر لكل قائمة عن طريق الاستعلام بمعيار محدد مسبقا لكل مجموعة من البيانات بالنسبة لصورة المشترك اعتقد انك استخدمت حقل من نوع مرفق وهذا الامر سوف يسبب زيادة حجم قاعدة البيانات والافضل حفظ الصور في مجلد اخونا الشايب
-
اخفاء واظهر الحقول باستخدام If لا تعمل عند أختيار معين
شايب replied to زياد الحسناوي's topic in قسم الأكسيس Access
نعم يؤدي الغرض ولكننا استخدمنا التحديث عن طريق مصدر السجلات هذا في بداية الامر ولكن بعد الاستخدام الفعلي في بيئة عمل حقيقية وبعد الاستماع ومناقشة المستفيدين اضطررنا الى اضافة جدول ثالث للتفاصيل ولم نعد نحتاج الى تحديث وانما اضافة للجدول التابع والهدف من ذلك لتتبع الاجراء للمعاملة من بدايتها للنهاية بالتاريخ والوقت لكل اجراء وايضا تفصيل الاجراء ... الخ الحقيقة اي عمل لا يخلو من نقص ومن اخطاء ويتم تداركها بعد ذلك واحيانا نعمل برنامج وفقا لمتطلبات الجهة وبعد الانتهاء نجد ان الطلبات اختلفت وما نعمله من تعديلات واضافات يفوق الجهد المبذول في بناء البرنامج و لذلك اسباب عديدة ولكن لا اود ان استغرق في التفاصيل مع الاعتذار لصاحب المشاركة فقد خرجنا عن المسار اخونا الشايب -
شاركونا التهنئة بارتقاء اخوين عزيزين على قلوبنا الى مجموعة الخبراء
شايب replied to ابوخليل's topic in قسم الأكسيس Access
الستر زين ياعمنا العود 🌹 -
اخفاء واظهر الحقول باستخدام If لا تعمل عند أختيار معين
شايب replied to زياد الحسناوي's topic in قسم الأكسيس Access
لو كنت مبرمج لاختصرت هذة الحقول الثمانية الى اثنين فقط واحد مربع تحرير وسرد يتغير مصدره بناء على ما يتم اختياره والاخر حقل نصي ييستخدم للاضافة او التعديل وفقا لطبيعة البرنامج ويمكن التعامل مع اكثر من جدول و حينها يمكن اختصار اسطر من الاكواد والاستفاد من خاصية tag متغييرة بالكود لتحديد الجدول الهدف او بدون علامة باستخدام متغيير رقمي في رأس النموذج اخيرا البعض من المبرمجين يلزموا انفسهم بما لا يلزم وهنا اتذكر قبل سنوات عملنا برنامج للاتصالات الادارية بالوزارة مكون من جدول رئيسي واحد وجدول مساعد واحد للقيم الثابتة ورقم واحد للمعاملة من البداية للنهاية ووجدنا انتقاد وتشكيك مع ذلك نجح البرنامج واستمر العمل به لسنوات الى ان تركت العمل مع ذلك فان الاخ شايب يفضل المتابعة بصمت فقد ادركه الصباح اخونا الشايب -
شاركونا التهنئة بارتقاء اخوين عزيزين على قلوبنا الى مجموعة الخبراء
شايب replied to ابوخليل's topic in قسم الأكسيس Access
اختيار موفق مع تمنياتي لهم بالتوفيق -
شرف كبير لاخينا شايب ان تكون وجهة نظره مشابهة لوجهة نظر اساتذتنا الكبار والخبراء الافاضل احسن الله اليكم فنحن نتعلم و نكتسب الخبرة من متابعة ردودكم اخونا الشايب
-
اخونا شايب يعتقد ان حقل واحد يمكن ان يقوم بالمطلوب وخصوصا ان البحث سيكون في حقل الاسم وحتى لو اردنا البحث في اكثر من حقل او كافة الحقول يكفي حقل واحد للمعيار ويمكن الفلترة بمعيار في الاستعلام كما فعل استاذنا الخبير او الفلترة بالكود او البحث عن السجل المطابق بدون فلترة وانتقال المؤشر للسجل المطابق او حتى بدون الحاجة لحقل المعيار اذا استخدمنا نماذج غير منضمة ولكن هذا امر اخر اخونا الشايب
-
اختيارين من قائمة يتم فلترة اختيارهم فى قائمة اخرى
شايب replied to ahmad soliman's topic in قسم الأكسيس Access
الاخ العزيز شايب لا يهتم لامر افضل اجابة بالنسبة لوضع مثال الحقيقة انه في الفترة الاخير هناك عدد كبير من المشاركات تضع وصف مشكلة بدون مرفق او مرفق بدون بيانات والادهى من ذلك عدم متابعة الموضوع وهذا امر محبط اخيرا فكرة الاخ شايب كما اشار سابقا عمل جدولين بعلاقة واحد الى متعدد وبدون الحاجة حقل نعم لا ولا حاجة ايضا لاستعلام تحديث ثم عمل كود بسيط للمرور على ماتم اختياره من مربع القائمة واستخدامه كمعيار استعلام كمصدر للقائمة المنسدلة On Error GoTo a Dim k As String Dim i As Integer For i = 0 To c_2.ListCount - 1 If c_2.Selected(i) = True Then k = k & c_2.Column(0, i) & "," End If Next i Me.c_3.RowSource = "SELECT * FROM tbl_Towns_Blocks " & _ "WHERE tbl_Towns_Blocks.id IN (" & Left(k, Len(k) - 1) & ")" DoCmd.GoToControl "c_3" Me.c_3.Dropdown Exit Sub a: Me.c_3.RowSource = "" وهنا استخدمنا امر معالجة الخطأ لافراغ القائمة المنسدلة وهو استخدام قد لا يروق لبعض الخبراء وبالامكان استخدام For Each بدلا من for next ليكون الامر On Error GoTo a Dim s As Variant Dim t As String t = "" For Each s In Me.c_2.ItemsSelected t = t & "" & Me.c_2.ItemData(s) & ", " Next t = Left(t, Len(t) - 2) Me.c_3.RowSource = "SELECT * FROM tbl_Towns_Blocks " & _ "WHERE tbl_Towns_Blocks.id IN (" & t & ")" DoCmd.GoToControl "c_3" Me.c_3.Dropdown Exit Sub a: Me.c_3.RowSource = "" في جميع الاحوال هي مجرد مشاركة من غير متخصص ويترك الامر للاساتذة والخبراء اخونا الشايب CopyList (1)(1).accdb -
اختيارين من قائمة يتم فلترة اختيارهم فى قائمة اخرى
شايب replied to ahmad soliman's topic in قسم الأكسيس Access
مشاركة مع الاستاذ خليفة اعتقد ان الافضل ان يكون لدينا جدول للمدن وجدول اخر للاحياء ونعمل مربع قائمة متعددة الاختيار لاسماء المدن وقائمة منسدلة لاسماء الاحياء يتم تحديد مصدرها من خلال كود استعلام بمعيار in اخونا الشايب -
مع ان خونا شايب مبتدئ في الاكسس والحاسب بشكل عام واغلب الحوار هنا بين محترفين واساتذة ولم يستوعب منه الا اقل القليل الا انه يعتقد ان الملف التنفيذي يمكن استخراج محتوياته لذا بعض المحترفين يقومون بعمل ملف تنفيذي مشفر ومضغوط لتصعيب عملية الفك ومع ذلك فهناك ادوات تقوم بفك التشفير والضغط ولكن هذا موضوع كبير ويحتاج الى خبرات في الهندسة العكسية بالنسبة للملف برنامج بيع.accde لم يعمل معي لكوني استخدم اصدار 64 بت اخيرا الاخ شايب لم يقم بتنصيب البرنامج لكونه لا يقوم بتشغيل اي ملف exe حتى لو كان من اخ عزيز وثقه مثل استاذنا ودكتورنا المبجل د حلبي فهو يتمثل بالقول يؤتى الحذر من مكمنه لذا اكتفى باستخلاص ملف الاكسس اخونا شايب
-
بالتوفيق والشكر لله وحده مع ذلك فان الاخ العزيز شايب سبق ان اشار في موضوع سابق ان الفلترة اثناء الكتابة ليست الخيار الافضل وخصوصا عند وجود عدة مستخدمين للبرنامج اضافة الى مشاكل في ازاحة الاحرف اما بالنسبة لي لو كنت مبرمج لاخترت الفلترة بعد التحديث و استخدمت قائمة منسدلة قابلة للفلترة عند كتابة كل حرف وحينها ساكون جمعت بين الفكرتين بعد التحديث لسجلات الجدول وعند التغيير للقائمة المنسدلة ولكن لو حرف امتناع لامتناع فلا انا مبرمج ولن اعمل برنامج اخونا الشايب
-
في مرفقك الاخير لا يوجد سجل باسم سليمان فقط سعيد ومازن وحسن وحسين وانا اضفت محمد ومحمود و البحث يعمل جرب الان Database1(1).accdb
-
جربت عمليات البحث عدة مرات ولم اواجه هذه المشكلة واتمنى اذا احد اخر جرب يفيدنا هذا الامر اذا كان النموذج مستمر اما في مثالك النموذج مفرد وعند كتابة الحرف الاول يقوم بعرض اول اسم يطابق الحرف مثلا كتبت س يكون اول اسم معروض سعيد ولكن عند كتابة حرف ل يكون المكتوب سل فيعرض سليمان وهكذا
-
بداية هذا الامر لا يشكل اي مانع بل يمكن البحث او الفلترة وبالتالي لا داعي لاي تعديلات الان للفلترة نحتاج الى اضافة حقل غير منضم كما اشار دكتور حسين وانا اسميت الحقل tx_name وسوف اتحدث عن طريقتين للوصول للمطلوب الطريقة الاولىالبحث بعد التحديث وهذا الافضل وخصوصا عند تقسيم البرنامج لعمل اكثر من مستخدم في الوقت نفسه ولتنفيذ الطريقة في حدث بعد التحديث للحقل tx_name نضع الامر التالي DoCmd.ApplyFilter , "[cus_name]= '" & [tx_name] & " '" ولو اردنا البحث بجزء من الاسم نستخدم * للدالة على الاحرف المفقودة ليكون الامر DoCmd.ApplyFilter , "[cus_name]like '*" & [tx_name] & "*'" الطريقة الثانية وهي الفلترة اثناء الكتابة وهي مطلوب صاحب المشاركة وهنا في حدث عند التغيير للحقل tx_name نضع الامر Dim strWhere As String Dim strtxt As String If Me.tx_name.Text <> "" Then strtxt = Me.tx_name.Text strWhere = "[cus_name] like '*" & strtxt & "*'" Me.Filter = strWhere Me.FilterOn = True Else Me.Filter = "" Me.FilterOn = False End If Me.tx_name.SetFocus Me.tx_name.SelStart = Len(Me.tx_name.Text) وللتحكم في موقع المؤشر نضع في حدث عند مفتاح اعلى الامر التالي If KeyCode = 32 Then Me.tx_name.Value = Me.tx_name.Text & Chr$(32) Me.tx_name.SelStart = Len(tx_name.Text) End If الملف مرفق اخونا الشايب Database1.accdb
-
معلومة جديدة وقيمة الف شكر استاذنا الغالي اخونا الشايب
-
موضوع يهم شريحة كبيرة من مرتادي الموقع وجهد كبير من اساتذنا الكبار ابو خليل وضاحي بما اني مبتدئ وغير متخصص فاعتقد وبناء فهمي القاصر ان هناك حمايتان في ثنايا الموضوع حماية للبيانات من اي تعديل او حذف او اضافة او استعلام غير مصرح به والحماية الاخرى تتعلق بمنع نسخ البرنامج او الاستفادة منه لغير المصرح لهم اخيرا اعتقد ان بعض مصممي البرامج يهتم بموضوع الحماية الثانية اكثر من اهتمامه بتصحيح الاخطاء او اختبار البرنامج بشكل مكثف قبل بيعه وبالذات البرامج التي تحتوي على اكواد من كل بحر قطرة مع تمنياتي للجميع بالتوفيق اخونا الشايب