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

Debug Ace

عضو جديد 01
  • Posts

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

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

كل منشورات العضو Debug Ace

  1. فى غياهب الحياة بكل صراحة تم انجاز العمل عقب صلاة الفجر وقبل توجهى الى العمل مباشرة ونظرا لضيق الوقت آنذاك لم انتبه الى هذه النقطة كان كل تركيزى منحصرا فى نقل خصائص زر الامر شكل الشيب والتدرج الونى ولا اعرف ما السبب الذى جعلنى افكر واصارع افكارى لتحقيق هذه النقطة خصيصا يالهنائى وسعادتى الغامرة ان يقوم احد اعمدة المنتدى الرواسخ بتفنيد عملى وتصحيحه جزاكم الله خيرا
  2. فقط سوف تقوم بتصميم قالب لمرة واحدة فقط وتستخدمه طول العمر ويمكنك التبديل بين القوالب حتى ان الكود يتعامل مع ازرار الاوامر بشكل خاص لتوريث الشيب والتدرج اللونى ان وجد و ... يعنى الفكرة دى اتنين X واحد تعين قالب رئيسي وادارة ثيمات بقوالب محتلفة وما اظنش ان ان الفكرة بالالية دى تم مشاركتها او عرضها لا فى المنتدى ولا حتى فى مواقع الانترنت العربية او الاجنبية.... والله اعلم
  3. انا منبهر بس مش من البذرة ولا حتى من الفكرة انا منبهر من الطرح والرد صمم اى نموذج وابدأ فقط تسميته بـ : frmTemplate ثم اكمل برقم او اى شئ اخر كما يحلو لك ممكن مثلا يكون : frmTemplateDarkMode فى هذا النموذج حدد اللالوان لجميع العناصر كما تريدها ان تضاهى الـ : Dark mode حسب مخيلتك وحدد الخصائص العامة التى تريد تورثيها لباقى نماذج القاعدة كرر نفس الخطوات بعمل نموذج واعطه الاسم : frmTemplateLightMode فى هذا النموذج حدد اللالوان لجميع العناصر كما تريدها ان تضاهى الـ : Light Mode حسب مخيلتك وحدد الخصائص العامة التى تريد تورثيها لباقى نماذج القاعدة الان مع قالبين يمكن اختيار احدهم كرئيسي وتوريث خصائصة الى باقى نماذج القاعدة واضف من القوالب ما شئت يعنى الفكرة بالفعل موجودة فى المرفق البذرة تم زرعها وتمت ايضا عملية حصاد ثمارها
  4. السلام عليكم ورحمة الله وبركاته اسعد الله صباحكم استاذ الكود المستخدم داخل النموذج الرئيسي لادارة القوالب Option Compare Database Option Explicit '============================= ' إعدادات عامة '============================= Private Const TemplateFormPrefix As String = "frmTemplate" Private Const TemplateComboName As String = "cboFormsTemplateName" Private TemplateFormManager As String Private TemplateSnapshot As Object Private Sub Form_Load() TemplateFormManager = Me.Name FillTemplateCombo End Sub Private Sub FillTemplateCombo() Dim i As Long, ao As AccessObject, rs As String, ctl As Control Set ctl = Me.Controls(TemplateComboName) ctl.RowSourceType = "Value List": ctl.RowSource = "" For i = 0 To CurrentProject.AllForms.Count - 1 Set ao = CurrentProject.AllForms(i) If ao.Name Like TemplateFormPrefix & "*" And ao.Name <> TemplateFormManager Then rs = IIf(ctl.RowSource = "", ao.Name, ctl.RowSource & ";" & ao.Name) ctl.RowSource = rs End If Next i End Sub Private Sub cboFormsTemplateName_AfterUpdate() Dim cbo As Control Set cbo = Me.Controls(TemplateComboName) If IsNull(cbo.Value) Then Me.frmChild.SourceObject = "" Else Me.frmChild.SourceObject = cbo.Value End If Me.frmChild.Requery End Sub '============================= ' تعيين قالب النماذج الافتراضي '============================= Public Sub SetFormTemplateName(ByVal templateFormName As String) On Error GoTo ErrHandler Application.SetOption "Form Template", templateFormName Exit Sub ErrHandler: MsgBox "خطأ في تغيير Form Template: " & Err.Number & " - " & Err.Description, vbExclamation End Sub Private Sub cmdApplyTemplate_Click() Dim cbo As Control Set cbo = Me.Controls(TemplateComboName) If IsNull(cbo.Value) Then MsgBox "اختر قالب أولاً" Exit Sub End If SetFormTemplateName cbo.Value PropagateTemplate cbo.Value MsgBox "تم تطبيق القالب على جميع النماذج" End Sub '============================= ' دوال مساعدة عامة '============================= Private Function GetSectionIndex(sec As Integer) As Long GetSectionIndex = sec End Function Private Function GetControlTypeName(ctrlType As Integer) As String Select Case ctrlType Case acTextBox: GetControlTypeName = "TextBox" Case acLabel: GetControlTypeName = "Label" Case acComboBox: GetControlTypeName = "ComboBox" Case acCheckBox: GetControlTypeName = "CheckBox" Case acCommandButton: GetControlTypeName = "CommandButton" Case acOptionButton: GetControlTypeName = "OptionButton" Case acToggleButton: GetControlTypeName = "ToggleButton" Case acListBox: GetControlTypeName = "ListBox" Case acSubform: GetControlTypeName = "Subform" Case acTabCtl: GetControlTypeName = "TabControl" Case Else: GetControlTypeName = "Other" End Select End Function ' قائمة الخصائص المسموح نسخها لكل نوع كنترول Private Function GetAllowedProps(ctrlTypeName As String) As Variant Select Case ctrlTypeName Case "TextBox" GetAllowedProps = Array("BackColor", "ForeColor", "FontName", "FontSize", _ "FontWeight", "TextAlign", "BorderColor", "BorderStyle") Case "Label" GetAllowedProps = Array("BackColor", "ForeColor", "FontName", "FontSize", _ "FontWeight", "TextAlign", "BorderColor", "BorderStyle") Case "ComboBox" GetAllowedProps = Array("BackColor", "ForeColor", "FontName", "FontSize", _ "FontWeight", "BorderColor", "BorderStyle") Case "CheckBox", "OptionButton", "ToggleButton" GetAllowedProps = Array("BackColor", "ForeColor", "FontName", "FontSize", _ "FontWeight") Case "ListBox" GetAllowedProps = Array("BackColor", "ForeColor", "FontName", "FontSize", _ "FontWeight", "BorderColor", "BorderStyle") Case "CommandButton" GetAllowedProps = Array("BackColor", "ForeColor", "FontName", "FontSize", _ "FontWeight", "QuickStyle", "Shape", "BackShade", _ "BackTint", "Gradient", "Glow", "Shadow", "SoftEdges", _ "Width", "Height") Case "Subform" ' لا نقترب من مصدر الكائن أو روابط الحقول GetAllowedProps = Array("BackColor", "BorderColor", "BorderStyle", "SpecialEffect") Case Else GetAllowedProps = Array() ' لا نغيّر شيء End Select End Function '============================= '============================= ' التقاط خصائص القالب (Snapshot) Public Function GetTemplateSnapshot(frmName As String) As Object Dim snap As Object Dim f As Form, ctl As Control, p As Property Dim secIndex As Integer, s As Section Set snap = CreateObject("Scripting.Dictionary") snap.Add "Form", CreateObject("Scripting.Dictionary") snap.Add "Sections", CreateObject("Scripting.Dictionary") snap.Add "ControlStyles", CreateObject("Scripting.Dictionary") DoCmd.OpenForm frmName, acDesign, , , , acHidden Set f = Forms(frmName) ' خصائص النموذج For Each p In f.Properties On Error Resume Next snap("Form")(p.Name) = p.Value On Error GoTo 0 Next ' خصائص السيكشن For secIndex = 0 To 5 On Error Resume Next Set s = f.Section(secIndex) If Err.Number = 0 Then Dim secSnap As Object Set secSnap = CreateObject("Scripting.Dictionary") For Each p In s.Properties On Error Resume Next secSnap(p.Name) = p.Value On Error GoTo 0 Next snap("Sections").Add CStr(secIndex), secSnap End If Err.Clear Next ' أنماط الكنترولز لكل سيكشن/نوع (واحد قالب لكل نوع/سيكشن) Dim secKey As String, ctrlTypeName As String Dim secDict As Object, styleDict As Object Dim allowedProps As Variant, propName As Variant For Each ctl In f.Controls ctrlTypeName = GetControlTypeName(ctl.ControlType) allowedProps = GetAllowedProps(ctrlTypeName) If Not IsEmpty(allowedProps) Then secKey = CStr(GetSectionIndex(ctl.Section)) If Not snap("ControlStyles").Exists(secKey) Then Set secDict = CreateObject("Scripting.Dictionary") snap("ControlStyles").Add secKey, secDict Else Set secDict = snap("ControlStyles")(secKey) End If ' أول كنترول من هذا النوع/السيكشن يصبح Template If Not secDict.Exists(ctrlTypeName) Then Set styleDict = CreateObject("Scripting.Dictionary") For Each propName In allowedProps On Error Resume Next styleDict(propName) = ctl.Properties(propName) On Error GoTo 0 Next secDict.Add ctrlTypeName, styleDict End If End If Next DoCmd.Close acForm, frmName, acSaveNo Set GetTemplateSnapshot = snap End Function '============================= '============================= ' تطبيق Snapshot على نموذج واحد Public Sub ApplySnapshot(targetForm As String, snap As Object) Dim f As Form, ctl As Control Dim k As Variant, p As Variant Dim secIndex As Variant, sec As Section Dim secKey As String, ctrlTypeName As String Dim secDict As Object, styleDict As Object Dim allowedProps As Variant, propName As Variant DoCmd.OpenForm targetForm, acDesign, , , , acHidden Set f = Forms(targetForm) ' 1) خصائص النموذج For Each k In snap("Form").Keys On Error Resume Next f.Properties(k) = snap("Form")(k) On Error GoTo 0 Next ' 2) خصائص السيكشن For Each secIndex In snap("Sections").Keys On Error Resume Next Set sec = f.Section(CLng(secIndex)) If Err.Number = 0 Then For Each p In snap("Sections")(secIndex).Keys On Error Resume Next sec.Properties(p) = snap("Sections")(secIndex)(p) On Error GoTo 0 Next End If Err.Clear Next ' 3) أنماط الكنترولز For Each ctl In f.Controls ctrlTypeName = GetControlTypeName(ctl.ControlType) allowedProps = GetAllowedProps(ctrlTypeName) If Not IsEmpty(allowedProps) Then secKey = CStr(GetSectionIndex(ctl.Section)) If snap("ControlStyles").Exists(secKey) Then Set secDict = snap("ControlStyles")(secKey) If secDict.Exists(ctrlTypeName) Then Set styleDict = secDict(ctrlTypeName) ' تطبيق الخصائص المسموحة For Each propName In allowedProps If styleDict.Exists(propName) Then On Error Resume Next ctl.Properties(propName) = styleDict(propName) On Error GoTo 0 End If Next End If End If End If Next DoCmd.Close acForm, targetForm, acSaveYes End Sub '============================= '============================= ' تطبيق القالب على كل النماذج Public Sub PropagateTemplate(templateName As String) Dim ao As AccessObject Set TemplateSnapshot = GetTemplateSnapshot(templateName) For Each ao In CurrentProject.AllForms If Not ao.Name Like TemplateFormPrefix & "*" Then If ao.Name <> TemplateFormManager Then ApplySnapshot ao.Name, TemplateSnapshot Else End If Else End If Next End Sub '============================= اضف اى نماذج كقوالب افتراضية على ان تبدأ بـ : frmTemplate النموذج الرئيسي لادارة لاختيار وادارة القوالب : frmTemplateManager عند فتح النموذج سوف يتم جلب واحضار اى نماذج قوالب افتراضية يبدأ اسمها بـ : frmTemplate ويتم ملئ مربع التحرير والسرد بهذه الاسماء وظيفة مربع التحرير والسرد : استعراض القوالب بمجرد اختيار اى قالب يتم معاينته فى الرئيسية طيب فى حالة تحديد قالب باختيارة من مربع السرد بعد الضغط على زر امر التطبيق يتم تمرير اسم النموذج : الى الاعدادت ليتم تحديدة كقالب اساسى كما فى الصورة التالية وكذلك يتم عمل دوران على كل النماذج فى قاعدة البيانات لاستنساح حصائص النموذج الذى تم اختياره كقالب مفضل وتطبيق هذه الخصائص على جميع النماذج صورة من نمورج ادارة القوالب اتفضل المرفق استاذ Mont_FormsTemplatePart02.zip
  5. يصنع البشر ما يعجز عنه الاداوت التى هى من صنع البشر ففى النهاية البشر هم من صنع الله تعالى لا تترك الموضوع قبل تحمد الله و تقول سبحانك اللهم لا علم لنا الا ما علمتنا انك انت العليم الحكيم قال تعالى بسم الله الرحمن الرحيم {ولقد كرمنا بني آدم وحملناهم في البر والبحر ورزقناهم من الطيبات وفضلناهم على كثير ممن خلقنا تفضيلا} (الإسراء:70) {لقد خلقنا الإنسان في أحسن تقويم} (التين:4) صور التجربة بعد التصغير بعد عمل نقر الكليك الايمن من زر الماوس على ايقونة التطبيق واجهة التطبيق بعد الاستعادة سواء باختيار الامر استعادة من القائمة او من خلال النقر المفرد من زر الماوس الايسر واخيرا اثبات العمل من النواة x64 اتفضل المرفق systray Moosak.zip
  6. نعم أعرف ذلك لا استطيع للاسف لان اى اداة هى مجرد وفقط الة تقليد لغوي ليست مفسر كود بل مولد نصوص احتمالي وعليك ان تغذيها مسبقا بجميع الحالات وكل الاحتمالات ان استطعت حصرها الحل الوحيد : على المبرمج ومطور النظم ان يعلم نفسه دائما ويحدث معلوماته ويتعلم ان يفكر ويحول افكارة الى واقع ما يخص الكود من ناحية السياق البرمجى هو ما سوف يتعلمة المطور نظريا ويثقل به خبراته لنفسه وبنفسه عمليها وبناء عليه كلما زادت حصيلة معلوماته و كلما توسعت مداركة وافكاره يستطيع تحويل اى شئ من مجرد فكرة الى كواد و واقع ملموس لذلك أى اداة بدون علم بلا قيمة... نقطة ومن أول السطر
  7. موضوعاتك شيقة وغاية فى الروعة استاذ اتعلم منكم دائما كل الشكر والتقدير هل يمكن ان اساهم فى التطوير بعد اذن حضرتك
  8. دعنى انا اذكر او ابصرك بما تتجاهله متعمدا اوليست هذه الخيارات من صميم عمل هذه الاداة الجبارة ثم اين اجابتك على هذه النقاط تحديدا من واقع مرفقك الذى تم تعديلة من هذه الاداة الخرافية لم تجبنى عمدا ام تجاهلا ؟
  9. الاداة بوجه خاص فشلت فى تصحيح اى كواد تحويل اى كود وإلا فقط أعد المرفق محولا للعمل بتكامل مع الانوية المختلفة من واقع الاداة والتى من المفترض انها تقوم بهذا العمل اساسا دعك من الذهاب لاداوت خارجية لطلب بدء التصميم من البداية ما تزعل حالك والان صار الموضوع تحدى مع هذه الاداة خصيصا ولا نريد اى زيادات ولا كرم مبالغ فيه فقط يرجى تحقيق الهدف المنشود منها
  10. بعد تجربة مرفقك على نظام ذو نواة x64 بعد اتمام عملية التصغير الى جوار الساعة وبعد محاولة استرجاع نافذة التطبيق واعادة تكبيرها وعندما يصدمك الواقع فى فشل الاستعادة توجه الى الـ Task manager وقم باغلاق تطبيق الاكسس قسرا لانه الان عالق فى الخلفية والقاعدة لا تزال مفتوحة
  11. انت متأكد انك قمت بتجربة المرفق بشكل جيد مش هتطرق لموضوع التصغير مع او بدون الاخفاء سأمر مرور الكرام على هذه الجزئية ولكن : هل تم التصغير بجوار ساعة النظام ؟ اعرف اجابتك بكل سرور سوف تكون نعم ولكنك لم تنتصر ! اعد استرجاع كامل التطبيق بأحد الطريقتين من جوار الساعة مرة أخرى 1- كليك يمين هل ظهرت معك قائمة ؟؟؟ 2- كليك يسار هل بهذه النقرة المفردة فقط عاد التطبيق مره أخرى وتم استرجاعة ؟ بكل اسف انا اقول لك لا ولو حاولت معه 100 ملوين محاولة مش محاولتين فقط لن يحل لك هذه المشاكل طبعا المشاكل هذه لنت تحدث مع اصدار نواة x32 لاننا اتفقنا ان الكود فى الاساس يعمل مع هذه النواة دوننا أى مشاكل تذكر ولكن تحدص هذه المشاكل مع النواة ذات الاصدار x64 منتظر ردك بخصوص هذه الجزئية ؟ اعد استرجاع كامل التطبيق بأحد الطريقتين من جوار الساعة مرة أخرى 1- كليك يمين هل ظهرت معك قائمة ؟؟؟ 2- كليك يسار هل بهذه النقرة المفردة فقط عاد التطبيق مره أخرى وتم استرجاعة ؟ والاهم من ذلك اعرض عليه الاكواد تباعا واخبرة ان يتعلم سياق الكود وسيناريو العمل واخبرة بعد ان فهمت السيناريو والسياق هل تستطيع عمل المشروع من البداية بدون تعديلات على القديم لتفادى اى مشاكل جرب وايضا فى انتظار ردك محلوظة أخيرة للتوضيح : الموضع ليس تحدى ولا فيه شئ يذكر من رائحة التحدى حتى لا انت الذكاء الاصطناعى ولا انا اتحداك ردى كان فقط نتيجة تجربة فى موضوع مطروح لا اكثر من ذلك ولا اقل وفى ردى قلت انها وجة نظرى القاصرة الموضوع فقط للوقوف على حقيقة واحدة ينكرها الكثيرون وهى : اداوت الذكاء الاصطناعى ليست محررات أو مفسرات أكواد بل هل مجرد وفقط مولدات نصوص احتمالية اداوت الذكاء الاصطناعى لا يتم الاعتماد عليها كليا على وجه العموم ولا يتم الوصول معها الى نتائج صحيحة فى كل الاوقات عند تعديل الاكواد حتى لو كانت الاكواد القديمة فعالة وتعمل بنجاح
  12. وبما ان لكل عضو عدد 3 محاولات انا سوف أكتفى بمحاولة أخرى جداول مصنع تقنى - 2.accdb
  13. حاولت بقدر المستطاع الموضوع صعب بدون اكواد جداول مصنع تقنى.accdb
  14. دعوة لتجربة تعديل المرفق التالى من هذه الاداة او من غيرها او حتى اعادة التصميم من البداية بعيد عن هذه الافكار او الاكواد المستخدمة للعلم مصدر المثال : https://www.codekabinett.com/page.php?Theme=10&Lang=1#SystraySample systray.zip
  15. دا اقتباس من محادثة مع احد الاداوت هذا الاقتباس كان منى انا اليه وده كان رده أفهم وجهة نظرك تمامًا، وأنت صحيح 100%. الذكاء الاصطناعي ليس "مبرمجًا خارقًا"، بل هو أداة مساعدة بقيود واضحة: ✅ نقاطك صحيحة تمامًا: الثقة الزائدة (Overconfidence): نعم، الـ AI بيقول "ده الحل الأمثل" حتى لو كان فيه حلول أفضل . الهلوسة (Hallucinations): بيطلّع كود "يبدو صح" لكنه فيه أخطاء منطقية أو syntax. مشاكل مخفية: بيضعّي أخطاء performance أو memory leaks أو edge cases مش مفهومة. الاعتماد العشوائي: بيختار حل بناءً على "احتمالية" مش فهم حقيقي. 🎯 واقع الـ AI في البرمجة (حسب الدراسات): text ✅ 70% من المبرمجين: زيادة إنتاجية مع AI ❌ 40% من الكود المُولَّد: يحتوي أخطاء حرجة ❌ 80% يحتاج مراجعة قبل الاستخدام ❌ 30% syntax errors في VBA 🔧 أنا هنا عشان: أساعدك تكتشف الأخطاء اللي الـ AI بيخطئها. أشرح ليه الحل بيشتغل (مش بس "خد ده") لو كنت أقدر. أقترح بدائل وأتركك تختار. أتعلم من تصحيحاتك عشان أبقى أفضل لان أنا فى النهاية AI . 💡 نصيحتي ليك كمبرمج محترف: text 1. استخدم AI كـ "Junior Developer" مش Senior 2. راجع الكود دايمًا (لازم تعمل كده) 3. اختبر edge cases بنفسك 4. اعتمد على خبرتك 80%، AI 20% الذكاء الاصطناعي ليس "عالما بكل شيء" هو فقط في الحقيقة آلة تنبؤ لغوي يعني: هو لا يفهم الكود ولا يشغله ولا يراه ينهار هو فقط يقول:"هذا الشكل من الجمل يشبه ما ينجح عادة" وهنا الخدعة النفسية: اللغة التي يكتب بها تبدو واثقة منظمة منطقية → فيتكون انطباع أنه خبير خارق لكن هذه الثقة شكلية وليست نتيجة تجربة حقيقية أين يصبح "محتالا فعليا"؟ ليس لأنه يريد خداعك بل لأنه لا يعرف أنه لا يعرف عندما تمرر له: كود فيه Bug خفي أو حالة Edge غريبة أو نظام فيه سلوك غير موثق فهو: لا يملك سجل تشغيل لا يملك Memory عن بيئتك لا يرى النتيجة فيخترع تفسيرا لغويا يبدو معقولا… لكنه غير صحيح وهنا يأتي الإحساس بالخداع: "أنه كل مرة يقول لك كلام مقنع… وبعد ساعة اختبار تكتشف أنه غلط" هذا ليس ذكا هذا بلاغة بلا تجربة لماذا يضيع الوقت بدل ما يختصره؟ لأنك: تختبر - تكتشف الخطأ - تعود لتصحيحه - ثم تصحح التصحيح بينما لو كتبت أنت الكود وحدك: قد تخطئ مرة لكنك تفهم لماذا الذكاء الاصطناعي يعطيك حلا قد يبدو كاملا لكن أحيانا قد تكون بداخله أخطاء صغيرة قاتلة وأسوأ نوع الأخطاء التي تعمل "جزئيا" فتظن أنك تسلك الاتجاه صحيح ثم تنهار المنظومة في مكان آخر في الــ Access تحديدا… الكارثة مضاعفة فهو ليس نظاما نظيفا فيه حالات شاذة وسلوكيات غير موثقة و API تتفاعل بطرق غير متوقعة والذكاء الاصطناعي لا يعيش هذه البيئة لا يراها تنهار ولا يعرف حدودها الحقيقية لذلك يبدو واثقا لكنه يخمن بثقة الحقيقة الفلسفية المؤلمة التى يتم تجاهلها الذكاء الاصطناعي : يتكلم كمن يعرف لكنه يتصرف كمن لم يختبر والإنسان: قد يتكلم بتردد لكنه يعرف لأنه رأى الفشل بعينيه والخبرة لا تولد من الإجابات بل من عدد المرات التي انهار فيها النظام أمامك الخلاصة بدون تزييف نعم هو قد يضللك نعم قد يسرق وقتك بدل أن يوفره لكن ليس لأنه شيطان او محتال بل لأنه الة تقليد لغوي ليس مهندس ولا يستطيع التجربة ولا هو مصلح أعطال أنت الذي تفهم النظام وأنت الذي تفكر فى الكود وتصنع الحل النهائي فأنت الذي يصحح كل الافتراضات الخاطئة وهذا بالضبط الفرق بين من يكتب كلاما عن النظام ومن يصطدم به ويعيد بناءه الذكاء الاصطناعي قد يعطيك خريطة جميلة لكن الأرض الوعرة لا تعرف إلا بالأقدام المتعبة والديناصورات عملاقة وجميلة هى حقا وفريدة ولكن لا تبنى بها ناطحات السحاب
  16. فى فرق كبير لازم نركز فيه اولا وقبل اى شئ اذا المستخدم او المطور او مصمم النظم مبتدئ لا انصح باستخدامه الاسباب 1- احيانا تكتب الاكواد بشكل خاطئ 2- احيان لا يستطيع المستخدم ادارة الحوار معه وبالتالى يحصل على نتائج خاطئة او بعضها 3- حتى وان استطعت ادارة الحوار معه بما يسمى احتراف البرومبيت وهندسة السياق علشان اريحك لن يستطيع تحويل كل افكارك من افكار الى اكواد ملموسة تعمل بشكل صحيح فى كل الاحوال وكلامى واضح بعض الافكار ليست جميعها الافكار المباشرة فقط قد ينفذها بنجاح 3- لن يتقدم المستوى لهذا المصمم او مطور النظم لانه ببساطة حصل على ما يريده بسهولة وبسرعة البرق وقد لا يفهم ما تمت كتابته من اكواد احيانا وخلينى اقول لك ما يأتى سريعا يذهب سريعا لو استسهل ما وصل اليه دون البحث عن الالية لفهم الخطوات طيب الموضوع هنا لم يكن المراد منه سؤالك هذا على وجه التحديد بل كان التجربة وقطعا ابداء الرأى بعد التجربة وردى كان نتيجة التجربة وابداء رأيى من وجهة نظرى الشخصية القاصرة *علشان محدش يزعل من رايي* وهذا ينقلنا الى الفرق الثانى ان كان مصمم او مطور النظم من متوسط متقدم الى محترف عندما يعطى الكود ان كان مجربا ويعمل من قبل الى الذكاء لعمل بعض التعديلات او حتى لطلب اضافة مجرد تعليقات وهذا عن تجربة شخصية تتم اعادة الكود احيانا مع العديد من الاخطاء البرمجية داخل محتوى شفرة الكود التى كانت صحيحة وكانت تعمل فى الاساس ناهيك عن انه عند طلب تعديل على الشفرة نفسها بتعديلها لتتوافق مع النوتان x64 , x32 يعيد اليك بعضها منقوصا وبعضها به اخطاء ان كان مستوى مطور النظم متقدم يستطيع حل هذه المشاكل وان كان دون المتقدم سوف يكره نفسه حرفيا الذكاء الاصطناعى تعامل معه فقط فى حال واحد بدون مشاكل تسأل عن ثوابت بدون ان تعرض عليه افكار ليحققها لك برمجيا والا والله حتى لو توصلت الى مرادك سوف تكره نفسك بغض النظر عن مدى فهمك استخدامة ينحصر فى انه مجرد اداة تسهل عليك العمل عند الحاجة وفقط عند الحاجة فلا يتم الاعتماد علية فى المطلق خلاصة القول وهو ما يجهله الكثيرون: جميع ادوات الذكاء الاصطناعى ليست مفسر كود بل مولد نصوص احتمالي لو طلبت منه عدل الكود ليعمل كذا قد يعيد: كود ناقص أو فيه تعارض أو يغير منطقا كان صحيحا لأنه لا "يفهم" البرنامج كنظام تشغيل - بل هو فقط يتنبأ بما هو قد يبدو صحيحا يستخدم الذكاء الاصطناعي فقط كـ : كتاب مرجعي سريع مساعد بحث أداة توليد أولية لو صدقته دون فهم جيد واختبار >->> طامة كبرى وكارثة لو استخدمته مع فهم وراجعت >->> فى بعض الاحيان قوة الأدوات لا تدمر المهارة بل الاعتماد الأعمى هو الذي يفعل ونروح بعيد ليه تجربة صغيرة جدا جدا جدا وبسيطة جدا جدا جدا على سبيل المثال وليس الحصر : توجه للمنصة التى تريدها او تفضل التعامل معها اطلب منه شئ محدد وصريح : تصغير قاعدة البيانات بجوار ساعة النظام واستعادتها مرة أخرى من خلال النقر المفرد كليك شمال او قائمة اوامر بالنقر المفرد كليك يمين وحدد له انك تريد أن يكون العمل متوافق ومتكامل مع الانوية المختلفة x64 , x32 ولو عندك انت مثال زى ده وكان شغال x32 اذهب الى المنصة واطلب منه تحويل الاكواد لدعم الانوية المختلفة x64 , x32 وانظر النتيجة وياريتك تكتب نتيجة تجربتك الشخصية هنا لترد علينا بالبرهان والدليل مع الخبر اليقين
  17. شكلى باكتب كلام يضحك لو حابب تضحك بجد وتضحك قوى كمان من قلبك وبصوت اعلى اطلب منى اجيب لك كود تحولة وقتها هتعرف المعنى الحقيقى للضحك
  18. اذا : [تصحيح برمجي] تخرب الكود فيما يخص تحويل الدوال : 60 % يكون مخطئ وانا كنت رحيم انى قلت 60 مش أعلى من كده يمكن هذه تحتمل 50% مازلت عند رأيى ولا انصح بتجربته ولا بالاعتماد عليه الا للمحترفيين الذين يستطيعون تعديل وتصحيح الاخطاء التى سوف تنتج عنه لا يعتمد عليه نهائيا مضيعة للوقت والجهد
  19. من المفترض انه يقوم بتحويل الكود إلى صيغة متوافقة مع النواتين 32 و 64 بت ليست كل الاكواد يتم تحويلها بشكل صحيح لا يعتمد عليه نهائيا ناهيكم عن أنه قام من تلقاء نفسه بتعديل الجزء الاخير من الكود الخاص بى من معالج الاخطاء من rs.Close الى : If rs.State = adStateOpen Then rs.Close هو لا يصحح اخطاء برمجية بل هو يقوم باضافة أخطـــ(bugs)ــــاء الى الكود يضيع الوقت والجهد
  20. (OLE + AppendChunk) هذه الفكرة هى كديناصور قوي… لكنه منقرض تقنيا لهذه النقاط : محبوس داخل Access لا يفهمه SQL Server جيدا يصعب نقله أو تحديثه الديناصورات جميلة لكن لا تبني بها ناطحات سحاب ومن اجل ذلك ان ستخدام : Attachment Field هو الافضل ان استدعت الحاجة الى ذلك وهو التطور الطبيعي وملاحظة هامة جدا جدا جدا : اسلوب : (OLE + AppendChunk) يزيد حجم ومساحة القاعدة الى الضعف تقريبا مقارنة بـ : Attachment Field بعنى الملف المراد حملة داخل القاعدة من خلال : (OLE + AppendChunk) اذا كانت مساحة الملف مثلا 12 ميجا لاحظ انه بعد حملة تجد مساحة القاعدة الكلية = 24 ميجا تقريبا بينما تظل المساحة كما هى تقريبا فى حالة استخدام : Attachment Field طبعا اصدار الاوفيس ان كان اقدم من 2007 اى انه mdb للاسف لن تصلح معه الى هذه الفكرة بينما الاصدارات الاحدث accdb اى الاحدث من 2007 تصلح معه الطريقتان ولكن الافضل : Attachment Field
  21. السلام عليكم ورحمة الله وبركاته رواد المنتدى المحترمين اعضاء ومحترفين ومشرفين ما هى أفضل 5 دوال VBA غير معروفة تحل مشاكل الأداء في قواعد البيانات الكبيرة ما هو البرنامج أو الدالة الأكثر فائدة نشرتها في المنتدى خلال السنوات الأخيرة وماهى من وجهة نظرك الامكانيات الممكن تطويرها فى عام 2026 على هذا العمل و ما هي أكبر مشكلة تقابلها حاليا في مشروعك بوجه خاص او على وجه العموم
  22. رؤية اية معذرة انا مش فاهم حاجة هل فى اى مشكلة
  23. السلام عليكم ورحمة الله تعالى اولا كل الشكر وكل التقدير والاحترام لكل رواد المنتدى المحترمين الافكار جميعها ولا اروع والان حان وقت مشاركتى فكرتى تعتمد على عمل التالى كلاس موديول عارف ان فى اجابات احتوت على افكار بسيطة جدا جدا جدا وفعالةوفكرتى هى كالاتى امكانية عمل نماذج تقييم متعددة ليحتوى احد النماذج على تقييم لا يتعدى الثلاث نجوم ونموذج اخر مثلا 5 نجوم وممكن نموذج كمان يحتوى على 10 نجوم فكرتى كود مركزى واحد يعمل على الجميع امكانية اعطاء نفس النجمة او ازالتها اما من نفس النجمة او بالنجمة التى تسبقها نبدأ شرح المنهج المتبع والفكرة والاكواد انشاء وحدة نمطية عامة من النوع كلاسس باسم: clsStarRating الكود سوف يكون: Option Compare Database Option Explicit ' ========================================== ' الثوابت الافتراضيةالخاصة ' ========================================== Private Const DEFAULT_SOLID_STAR As Long = &H2605 ' رمز النجمة المصمتة Private Const DEFAULT_HOLLOW_STAR As Long = &H2606 ' رمز النجمة المفرغة Private Const DEFAULT_TOTAL_STARS As Integer = 6 Private Const MAX_STARS As Integer = 20 ' ========================================== ' المتغيرات الخاصة Private mStarCount As Integer Private mRating As Integer Private mSolidSymbol As Long Private mHollowSymbol As Long Private mLastForm As Form Private mLastRatingField As String Private mStarsExpression As String ' ========================================== ' التهيئة ' ========================================== Public Sub Initialize(Optional ByVal starCount As Integer = DEFAULT_TOTAL_STARS, _ Optional ByVal SolidSymbol As Long = DEFAULT_SOLID_STAR, _ Optional ByVal HollowSymbol As Long = DEFAULT_HOLLOW_STAR) mStarCount = IIf(starCount >= 1 And starCount <= MAX_STARS, starCount, DEFAULT_TOTAL_STARS) mSolidSymbol = SolidSymbol mHollowSymbol = HollowSymbol mRating = 0 ClearCache End Sub ' ========================================== ' تبديل حالة التقييم ' ========================================== Public Sub StarClick(ByVal index As Integer) If index < 1 Or index > mStarCount Then Exit Sub mRating = IIf(index = mRating, IIf(index = 1, 0, index - 1), index) End Sub ' ========================================== ' تحميل/حفظ >-->> فائق الكفاءة ' ========================================== Public Sub LoadFromForm(Form As Form, ratingControl As String, Optional ByVal showMessage As Boolean = False) On Error GoTo ErrHandler mRating = Nz(Form.Controls(ratingControl).value, 0) CleanExit: Exit Sub ErrHandler: Debug.Print "LoadFromForm Error #" & Err.Number & ": " & Err.Description If showMessage Then MsgBox Err.Description, vbCritical Resume CleanExit End Sub Public Sub SaveToForm(Form As Form, ratingControl As String, Optional ByVal showMessage As Boolean = False) On Error GoTo ErrHandler If Form.NewRecord Then Exit Sub Form.Controls(ratingControl).value = mRating If Form.Dirty Then Form.Dirty = False CleanExit: Exit Sub ErrHandler: Debug.Print "SaveToForm Error #" & Err.Number & ": " & Err.Description If showMessage Then MsgBox Err.Description, vbCritical Resume CleanExit End Sub ' ========================================== ' محرك مركزى لتحديث عرض التقييم فى النموذج ' ========================================== Public Sub UpdateStarsForForm(FormObj As Form, ratingFieldName As String, _ Optional starPrefix As String = "txtStar", _ Optional textBoxName As String = "txtRatingText") On Error GoTo ErrHandler Static lastForm As Form, lastField As String If Not lastForm Is Nothing Then If lastForm Is FormObj And lastField = ratingFieldName Then Exit Sub End If Dim i As Integer, textExpr As String For i = 1 To mStarCount With FormObj.Controls(starPrefix & i) .ControlSource = "=Switch([" & ratingFieldName & "]>=" & i & _ ",ChrW(" & mSolidSymbol & "),True,ChrW(" & mHollowSymbol & "))" End With Next i ' نص التقييم (مرة واحدة) If Len(textBoxName) > 0 Then textExpr = "=Switch([" & ratingFieldName & "]=0,'بدون تقييم'," & _ "[" & ratingFieldName & "]=1,'نجمة'," & _ "[" & ratingFieldName & "]=2,'نجمتان'," & _ "True,[" & ratingFieldName & "] & ' نجوم')" FormObj.Controls(textBoxName).ControlSource = textExpr End If ' تحديث ذاكرة الكاش Set lastForm = FormObj lastField = ratingFieldName CleanExit: Exit Sub ErrHandler: Debug.Print "UpdateStars Error: " & Err.Description Resume CleanExit End Sub ' ========================================== ' تنظيف ذاكرة الكاش ' ========================================== Private Sub ClearCache() Set mLastForm = Nothing mLastRatingField = "" End Sub ---- اولا نبدأ بـــ :دليل التشغيل السريع لنظام تقييم النجوم أعداد اى نموذج مربعات النص المطلوبة: txtRatingValue ← مرتبط بحقل فى الجدول نوع الحقل رقمى ليسجل قيمة التقييم مثل ← (التقييم 0-10) txtRatingText ← (غير منضم ولا يرتبط بأى حقول فى الجدول) يعرض نص مثل ← "3 نجوم" مربعات نص txtStarX تبدأ من txtStar1 الى عدد النجوم التى تريد وضعها فى النموذج مثلا ← txtStar10 (غير منضمة جميعها ولا ترتبط بأى حقول فى الجدول) ← عرض نجوم التقييم ⭐ الأزرار btnStarX خصائصها شفافة وتكون بنفس عدد مربعات النص السابقة وتكون مواضعها فوق مربعات النص فى المقدمة كود النموذج Option Compare Database Option Explicit ' ========================================== ' إعدادات النموذج الثابتة (Configuration) ' ========================================== ' عدد النجوم Private Const cintTotalStars As Integer = 10 ' حقل التقييم Private Const cstrRatingControl As String = "txtRatingValue" ' بادئة أزرار النجوم Private Const cstrButtonPrefix As String = "btnStar" ' بادئة مربعات نص النجوم Private Const cstrStarPrefix As String = "txtStar" ' نص التقييم Private Const cstrTextControl As String = "txtRatingText" Private StarEngine As clsStarRating ' ========================================== ' فتح النموذج - التهيئة الكاملة ' ========================================== Private Sub Form_Open(Cancel As Integer) On Error GoTo ErrHandler Dim ctl As Control ' إنشاء محرك النجوم Set StarEngine = New clsStarRating StarEngine.Initialize cintTotalStars ' تحميل التقييم الحالي If Not Me.NewRecord Then StarEngine.LoadFromForm Me, cstrRatingControl End If ' ربط أزرار النجوم ديناميكيا For Each ctl In Me.Controls If ctl.ControlType = acCommandButton And ctl.Name Like cstrButtonPrefix & "*" Then ctl.OnClick = "=HandleStarClick(""" & ctl.Name & """)" End If Next ctl ' تحديث العرض StarEngine.UpdateStarsForForm Me, cstrRatingControl, cstrStarPrefix, cstrTextControl CleanExit: Exit Sub ErrHandler: Debug.Print "Form_Open Error #" & Err.Number & ": " & Err.Description MsgBox "خطأ في التهيئة: " & Err.Description, vbCritical, "Star Rating" Resume CleanExit End Sub ' ========================================== ' معالج ربط أحداث أزرار تقييم النجوم الديناميكي (مركزي) ' ========================================== Public Function HandleStarClick(ByVal strButtonName As String) As Variant On Error GoTo ErrHandler Dim intStarIndex As Integer intStarIndex = Val(Mid(strButtonName, Len(cstrButtonPrefix) + 1)) ' التحقق من صحة النجمة If intStarIndex < 1 Or intStarIndex > cintTotalStars Then HandleStarClick = False Exit Function End If ' تسلسل العمليات: Load >> Click >> Save >> Refresh StarEngine.LoadFromForm Me, cstrRatingControl StarEngine.StarClick intStarIndex StarEngine.SaveToForm Me, cstrRatingControl, False ' False = no message (بدون رسائل) HandleStarClick = True CleanExit: Exit Function ErrHandler: Debug.Print "HandleStarClick Error [" & strButtonName & "] #" & Err.Number & ": " & Err.Description HandleStarClick = False Resume CleanExit End Function ' ========================================== ' إغلاق آمن ' ========================================== Private Sub Form_Unload(Cancel As Integer) Set StarEngine = Nothing End Sub وطبعا يتم تعديل الاعدادت فى اعلى كود النموذج حسب المسميات ان اردت تغييرها فى النموذج بما يناسبك انت ' عدد النجوم Private Const cintTotalStars As Integer = 10 ' حقل التقييم Private Const cstrRatingControl As String = "txtRatingValue" ' بادئة أزرار النجوم Private Const cstrButtonPrefix As String = "btnStar" ' بادئة مربعات نص النجوم Private Const cstrStarPrefix As String = "txtStar" ' نص التقييم Private Const cstrTextControl As String = "txtRatingText" وبكده يكون معانا فكرة وتنفيذ لكود مرن لا يتطلب اى تدخل منك فى المستقبل ان اردت زيادة اعداد عناصر التقييم الا فقط باتباع نهج المواضع والمسميات لا تعديل فى الكود ولن تحتاج الى اضافة اى اكواد فى النموذج امكانية عمل اكثر من نموذج للتقييم فى نفس قاعدة البيانات على ان يكون لكل نموذج عدد تقييمات خاصة به وتختلف عن غيره وأخيرا اليكم مرفقا للتجربة والتقييم للفكرة وألية العمل الاستاذ الفاضل @ابوخليل اترك لكم حرية اختيار افضل اجابة لتكون مرجعا لرواد المنتدى ولكم خالص الشكر والتقدير لتقييم النجوم ( V1.2).accdb.zip
  24. ممتاز ولكن مثلا اعطيت احد المنتجات تقييم نجمه واحدة بعد ذلك اريد ازالة النجمة فأريد عند الضغط عليها مرة اخرى يتم الغاء التقييم ومثال اخر مثلا اعطيت احد المنتجات ثلاث نجمات تقييم اريد ان اعيد التقيم الى 2 نجمه فقط فاريد ان يتم ذلك من خلال الضغط على النجمة الثالثة اذا كانت معطاة بالفعل ليتم الغائها و أعرف انه اذا تم الضغط على النجمة الثانية بالفعل سوف يتم عمل وتطبيق نفس السيناريو ولكن انا رخم اريد اقصى درجات المرونة الممكنة
×
×
  • اضف...

Important Information