اذهب الي المحتوي

أبو إبراهيم الغامدي

الخبراء
  • Content count

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

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

  • Days Won

    5

أبو إبراهيم الغامدي last won the day on December 10 2017

أبو إبراهيم الغامدي had the most liked content!

السمعه بالموقع

222 Excellent

9 متابعين

عن العضو أبو إبراهيم الغامدي

البيانات الشخصية

  • Gender (Ar)
    ذكر
  • Job Title
    موظف
  • بلد الإقامة
    السعودية
  • الإهتمامات
    قواعد بينات أكسس

اخر الزوار

1,094 زياره للملف الشخصي
  1. أبو إبراهيم الغامدي

    انشاء التسمية التوضيحية للحقول في جدول برمجيا

    حسناً.. قمت بعمل نموذجين الأول لإنشاء الجدول.. مع إنشاء حقلين للبيانات الحقل الأول: بيانات رقمية صحيحة طويلة تعداد تلقائي الحقل الثاني: بيانات نصية بطول 20 حرف. الثاني لإضافة أو تعديل عنوان الحقل لجدول تم نأسيسه. مربعات التحرير والسرد لتسهيل الإجراء :: إليك المرفق:اشاء.accdb أهلا بك أستاذ عبدالله.. بما أنه يمكن إنشاء الجداول مع صيغة ACCDE فيمكن إنشاء وتعديل الجدول عن طريق الشفرة. يمكن ذلك عن طريق الاتصال بقاعدة البيانات المرتبطة عن طريق الشفرة بالصيغة التالية Option Compare Database Option Explicit Dim DB As DAO.Database Dim TDF As DAO.TableDef Set DB = OpenDatabase(REMOTE_DATABASE) Set TDF = DB.CreateTableDef(TABLE_NAME) '... AND SO ON........... تقبل الله منا ومنكم.. آمين
  2. أبو إبراهيم الغامدي

    انشاء التسمية التوضيحية للحقول في جدول برمجيا

    أهلا بك أبا ياسين... استخدم الشفرة التالية لمعالجة المشكلة Option Compare Database Option Explicit Function ADD_FIELD_CAPTION(TABLE_NAME, FIELD_NAME, FIELD_CAPTION) Dim DB As DAO.Database Dim TDF As DAO.TableDef Dim FLD As DAO.Field Dim PRP As DAO.Property '-- Set DB = CurrentDb Set TDF = DB.TableDefs(TABLE_NAME) Set FLD = TDF.Fields(FIELD_NAME) Set PRP = FLD.CreateProperty("CAPTION", dbText, FIELD_CAPTION) FLD.Properties.Append PRP Debug.Print FLD.Properties("CAPTION") End Function أظن مثلك لا يحتاج إل شرح المحتوي أقترح عليك إنشاء الجدول عن طريق المنهج Database.CreateTableDef Method (DAO) لكي يتوحد الإجراء وتسلم من الأخطاء غير المتوقعة.
  3. وأنا كذلك أعجبتني الفكرة! lab.accdb
  4. السلام عليكم ورحمة الله حسب تصويري السابق لحطة العمل أرجو أن يحوز المرفق على رضاك Error In Import.zip
  5. أعلا بك عزيزي نعم.. إليك الخطة.. _ نقوم بالاتصال بملف أكسل على هيئة قاعدة بيانات، ثم نقوم بفتح ورقة البيانات كمصدر لسجل البيانات. _ بما أن الجدول الذي سنرحل إلية البيانات قد أنشئ في قاعدة البيانات الحالية فسنقوم بفحص البيانات القادمة من مصدر سجل البيانات على النحو التالي: * التعامل مع السجل الأول.. __ فحص طول الرقم القومي فإذا لم يساوي 14 رقما فسوف يرسل السجل المفحوص إلى متغير للسجلات التي بها خطأ مع بيان نوع الخطأ. __ إذا كان السجل سليما من ناحية الرقم القومي فسنقوم بإدراج السجل في جدول البيانات.. * التعامل مع السجل التالي __ فخص الرقم القومي من ناحية الطول ومن ناحية التكرار... إلخ. __ فحص السجل من ناحية تكرار رقم السجل مع السجل الذي سبق إدراجه في جدول البيانات ... إلخ. _ عند الانتهاء من فحص جميع السجلات سنقوم بعرض السجلات التي بها خطأ في عنصر قائمة تحرير وسرد لمراجعتها واتخاذ الإجراء المناسب حبالها. _ سأقوم بتطبيق الخطة في المشاركة القادمة، فإذا كان لديك أي تعليق بشأن الخطة أرجو التكرم بكتابنه، كما أرجو منك التكرم بإرفاق ملف أكسل يحتوي على بيانات كافية باحتمالات الخطأ المتوقع وجوده في سجل البيانات.
  6. أبو إبراهيم الغامدي

    ضبط التقرير على طابعة بعد تغيير البرنامج الى accde

    أهلا بك سلمان.. أولا يجب أن يكون ظهور نموذج تعيين الطابعات الافتراضية من خلال إقلاع البرنامج فقط، لأن ظهوره مبني على أحد أمرين: _ أنك لم تقم بتعيين الطابعة الافتراضية. _ أو أن الطابعة المعينة غير متوفرة في النظام حاليا. :: هناك إشكالية مع قائمة التحرير والسر، ومربع التحرير والسرد إذا كانت وجهتها من اليمين إلى اليسار مع الخصيصة: العمود المنضم Bound Column إذا كان مصدر الصف يتكون من أكثر من عمود. ولتصحيح الخطأ المحتمل الذي وقع في الشفرة فيجب نعيين العمود الذي يحمل القيمة الافتراضية برمجيا على النحو التالي Private Sub cmAssign_Click() Call SET_PROPERTY_VALUE(CInt(Me.lbPrintersType.Column(0)), Me.cbPrintersName) Call LB_UPDATE End Sub قمت بإجراء بعض التحسينات في المرفق التالي SETUP DEFAULT PRINTER.accdb
  7. أبو إبراهيم الغامدي

    ضبط التقرير على طابعة بعد تغيير البرنامج الى accde

    أحتاج إلى نص الرسالة أستاذ سلمان..
  8. أبو إبراهيم الغامدي

    ضبط التقرير على طابعة بعد تغيير البرنامج الى accde

    أهلا أستاذ رمهان.. أرى أن أفكارنا متطابقة تماماً! نعم.. فكرة الأستاذ رمهان سهلة التطبيق ولا تحتاج إلى شفرة معقدة. سيتضمن الجدول عمودين على الأقل عمود يعرف الطابعة والعمود الآخر يحمل اسم الطابعة؛ يستخدم معرف الطابعة كمؤشر لاسم الطابعة عند التعيين.. :: الفكرة الأساسية هي أننا بحاجة إلى متغير يمكن أعادة تغير قيمته برمجيا.. كان بالإمكان استخدام ثوابت عامة تحمل أسماء الطابعات ومن ثم تعيين هذا الثابت كطابعة إفتراضية عند طبعاعة التقرير، ونقوم يتغير قيمة هذا الثابت في كل مرة يتغير فيها اسم الطابعة!.. نعم يكون هذا مقبولا إذا كان المستخدم هو المبرمج. .: هذا الإجراء غير قابل للتطبيق. :: يوفر أكسس ما يسمى بالخصائص المعرفة من قبل المبرمج؛ هذه الخصائص يمكن تعريفها والتحكم بها وإعادة اسناد قيمها برمجيا.. وتظل ثابتة في قاعدة البيانات إلى أن يقوم المبرمج بتغير قيمها أو حذفها نهائياً. سوف أقوم باستخدام هذه الطريقة مقابل جدول البيانات لأني أتوقع من الأستاذ رمهان أن يقوم بتطبيق الفكرة عن طريق جدول البيانات... الشفرة التي تعتني بإضافة وتعديل وحذف الخصائص المعرفة من قبل المستخدم مسردة في التالي.. Sub ADD_PROPERTY(prpName As Variant, prpValue As Variant) On Error GoTo ERR_HANDLER Dim DB As DAO.Database, PRP As DAO.Property Set DB = CurrentDb Set PRP = DB.CreateProperty(prpName, dbText, prpValue) DB.Properties.Append PRP EXIT_SUB: Set DB = Nothing Set PRP = Nothing Exit Sub ERR_HANDLER: If Err.Number = 3367 Then 'MsgBox Err.Number & vbCrLf & Err.Description Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub Sub SET_PROPERTY_VALUE(PRP_NAME, PRP_VALUE) Dim DB As DAO.Database Set DB = CurrentDb DB.Properties(PRP_NAME).Value = PRP_VALUE DB.Properties.Refresh Set DB = Nothing End Sub Sub REMOVE_PROPERTY(PRP_NAME) Dim DB As DAO.Database Set DB = CurrentDb PRP_NAME = DB.Properties(PRP_NAME).Name DB.Properties.Delete PRP_NAME Set DB = Nothing End Sub + لا أحبذ أن تكون صلاحية الإضافة والحذف متوفرة للمستخدم.. أما بالنسبة للمبرمج فيمكنه إنشاء نموذج يقوم بواسطه من إدارة هذه الخصائص، أو عن طريقة نافذة تحرير الشفرة السريعة. + الخصائص التي قمت بإنشاءها بسيطة وغير احترافية، وقمت بكتابتها بالعربي.. كل ذلك من أجل توصيل الفكرة فقط... أسماء الخصائص التي أنشأتها هي: طابعة ليزرية، طابعة نفثية، طابعة نقطية، طابعة ترميزية. + سوف تكون قيمة كل خصيصة من هذه الخصائص اسما للطابعة التي تلائم هذه الخصيصة.. + قمت بإنشاء وظيفتين دوارتين: ألأولى تبحث عن الخصائص التي أنشأتها والقيمة التي تحمها؛ ثم تمررها إلى الوظيفة الثانية التي تبحث في الطابعات التي يوفرها النظام؛ فإذا كانت قيمة الخصيصة خالية أو تحمل اسما لطابعة غير متوفرة في النظام فإن الوظيفة الثانية تعيد قيمة خاطئة؛ وبناء على هذه القيمة يطلق البرنامج نافذة تحث المستخدم بتعيين اسما للطابعة الجديدة لكل خصيصة تحمل قيمة خاطئة.. (الوظيفة الثانية تعمل من داخل الوظيفة الألى). + إذا قام المستخدم بتعيين اسما جديد سوف تختفي الخصيصة من القائمة.. للمعلومية لم أقم بإنشاء نموذج لإدارة قيم هذه الخصائص من قبل المستخدم بطريقة منظمة.. أعتذر عن ذلك. الشفرة المتعلقة بالوظيفتين في المسرد التالي Function ASSIGN_CUSTOM_PRINTER() Dim PR As Property Dim PT As Variant, I As Integer For Each PR In CurrentDb.Properties If PR.Name Like "طابعة*" Then If IS_PRINTER_AVAILABLE(PR.Value) = False Then PT = PT & I & "," & PR.Name & "," & PR.Value & "," End If End If I = I + 1 Next 'Debug.Print PT ASSIGN_CUSTOM_PRINTER = PT End Function Function IS_PRINTER_AVAILABLE(PRNT_NAME) As Boolean IS_PRINTER_AVAILABLE = False Dim PRNT As Printer For Each PRNT In Printers If PRNT.DeviceName = PRNT_NAME Then IS_PRINTER_AVAILABLE = True End If Next End Function تعيد الوظيفة الأولى: رقم الخصيصة، اسم الخصيصة والقيمة التي تحملها لكل الخصائص ذات القيمة الخاطئة؛ وبناءً عليه أقوم بفحص طول الببانات فإذا كان أكبر من صفر فهذا يعني أن هناك خصائص تحمل بيانات غير مطابقة.. البيانات العائدة من الوظيفة الأولى أستخدمتها كمصدر بيانات لعنصر قائمة التحرير والسرد في النموذج الذي يظهر كمربع حوار يحث المستخدم بتعيين القيم الجديد.. الشفرة موضحة في المسرد التالي.. Sub SHOW_PRINTER_LIST() If Len(ASSIGN_CUSTOM_PRINTER) Then Call CUSTOM_PRINTER_DIALOG End If End Sub Sub CUSTOM_PRINTER_DIALOG() F.lbPrintersType.RowSource = "" F.lbPrintersType.RowSource = ASSIGN_CUSTOM_PRINTER F.Visible = True End Sub الشفرة التالية هي لفحص القيم عند إقلاع البرنامج وفتح نموذج خدمة الطباعة Function INITIALIZE() DoCmd.OpenForm "FRM_PRINT_CERVICES" Call SHOW_PRINTER_LIST End Function الشفرة التالية لتعيين الطابعة الافتراضية قبل الطباعة Sub DEFAULT_PERINTER(PRINTER_NAME) Set CURRENT_PRINTER = Application.Printer Application.Printer = Application.Printers(CurrentDb.Properties(PRINTER_NAME).Value) End Sub :: هذا كل ما يتعلق بالفكرة وتطبيقها.. مع المثال.. SET DEFAULT PRINTER.accdb
  9. أبو إبراهيم الغامدي

    ضبط التقرير على طابعة بعد تغيير البرنامج الى accde

    أهلا بك سلمان.. كان المقصود من مشاركتي هو التطبيق العملي لفكرة الاستاذ شيفان فقط.. أما بالنسبة لتثبيت وضعية الطابعة الافتراضية لكل تقرير فسوف يكون حسب المفهوم التالي.. - تحديد أنواع الطابعات التي سوف يستخدمها البرنامج (النفثية، الليزرية، النقطية، الباركود،.. ألخ) - تحديد اسم الطابعة لكل نوع من الانواع السابقة.. - تحديد اسم الطابعة لكل تقرير طالما الطابعة متوفرة؛ يجب الاخذ بعين الاعتبار تغير اسماء الطابعات وبالتالي نحن بحاجة إلى معرفة ما إذا كانت الطابعة لا تزال متوفرة عند إقلاع البرنامج أو عند تحميل التقرير على الأقل.. - إيجاد طريقة لتثبيت القيمة الافتراضية وفحصها في كل مرة وفقا للمفاهيم السابقة.. سوف أقوم بترجمت المفاهيم السابقة عمليا في المشاركة التالية بإذن الله..
  10. أبو إبراهيم الغامدي

    تجميع عدة نسخ فى النسخة الحالية

    وعليكم السلام زرحمة الله وبركاته نعم.. في الشفرة التالية استخدمت متغير قبل أن تسنده إلى قاعدة البيانات! Private Sub Ok_Click() addsql = "INSERT INTO data IN 'D:\Import.mdb'SELECT Data.* FROM Data ;" db.Execute addsql End Sub والمفترض أن تسنده إلى قاعدة البيانات التي تريد أنت تجمع فيها البيانات وهي هنا القيمة الراجعة من مربع النص Me.TFichier بهذه الطريقة.. Private Sub Ok_Click() Set db=CurrentDB addsql = "INSERT INTO data IN '"& Me.TFichier &"'SELECT Data.* FROM Data ;" db.Execute addsql End Sub اقترح عليك استخدام الشفرة التالية بدلا من الشفرة أعلاه Private Sub Ok_Click() Set db = OpenDatabase(Me.TFichier) addsql = "INSERT INTO Data SELECT Data.* FROM Data;" db.Execute addsql End Sub تنبيه:: إذا كان الجدول الذي تجمع فيه البيانات مفهرس على أساس قيم فريدة (عدم تكرار البيانات) فلن يتم نقل البيانات ولن تحصل رسالة خطأ.. ولهذا يجب توخي الحذر... لحل هذه المشكلة يمكن اتباع التالي.. إذا كنت تسخدم الترقيم التلقائي يجب استبعاده لأن أكسس سوف يتولى هذا عنك!.. وبناءً عليه يجب إدارج أسماء الحقول مفرقة في عبارة ... Select باستثناء الحقل الذي يحمل الترقيم التلقائي. إذا كنت تسخدم قيم فريدة خاصة فيجب عليك استخدام أحد معاملات تدوير السجلات بعد أخذ أعلى قيمة لهذا الحقل ووضعها في متغير وتزيد علية الرقم 1 في كل دورة للسجلات.
  11. أبو إبراهيم الغامدي

    مطلوب تعديل على برنامج اخفاء شاشة أكسس

    تكمن المشكلة في شريط المهمام Taskbar، إذا كانت خاصية دمج عنواين التطبيقات على وضعية الإخفاء (وهي الوضعية الافتراضية)(وويندوز 7 وما بعده) فسوف يأخذ تطبيق أكسس الأيقونة الافتراضية (ويفرضها على جميع قواعد البيانات المفتوحة) وبناء على هذه المعطيات ستكون النتيجة مخيبة لمطوري قواعد البيانات أكسس لأنه ليس بوسعك فرض وضعية التوسع لهذه الخاصية على مستخدم وويندوز إذا لم يرغب فيها، وليس من الجيد تغيير أيقونة طبيق أكسس من أجل قاعدة البيانات خاصتك! هذا كل ما في الأمر
  12. أبو إبراهيم الغامدي

    مطلوب تعديل على برنامج اخفاء شاشة أكسس

    أهلا بك أبا عبير هذا تطبيق على مثالك لخاصية التصغير إلى شريط المهام باستخدام زر التصغير في النموذج أرجو أن أن يلبي طلبك MinimizeToTaskbar.zip
  13. أبو إبراهيم الغامدي

    ماطريقه الحاق حقلين بالتوالي في حقل combobox

    أهلا بك.. هذه إحدى الطرق للحل.. addcbox.accdb
  14. أبو إبراهيم الغامدي

    رسائل التحذير (التنبيه) طريقة جديدة و حلوة

    شكرا لك أستاذ عبد الله.. شرح سهل في وقت قياسي
  15. أبو إبراهيم الغامدي

    هل يوجد كود واحد لمنع رسائل الخطأ اكسس

    إذا كانت أخطاء المحرر لايمكن إختابارها داخل محرر الشفرة؛ فأعتقد أنه من الممكن تصيدها باستخدام الوظيفة ()Eval، إذ أن هذه الوظيفة مهمتها الأساسية هي تقييم التعابير وإعادة النتايج التي تخرج عن تلك التعابير؛فاذا كانت التعبير يحتوي على وظائف وإجراءات مفقودة فإن الوظيفة ()Eval ستعيد رسالة خطأ بالرقم 2425 مفادها "يحتوي التعبير على وظيفة مفقودة".. وبهذا نكون سحبنا الخطأ إلى داخل محرر الشفره وبالتالي يمكننا تصيده بالطريقة المعتادة.. Control VBE Error.accdb
×