-
Posts
707 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
13
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو أبو إبراهيم الغامدي
-
اضافةالاسعار تلقائى بعد اختيار الاصناف من كمبوبوكس متعدد
أبو إبراهيم الغامدي replied to jo_2010's topic in قسم الأكسيس Access
وأنا كذلك أعجبتني الفكرة! lab.accdb -
رسالة توضح نوع الخطأ عند الاستيراد من اكسيل
أبو إبراهيم الغامدي replied to N_ELMASRY's topic in قسم الأكسيس Access
السلام عليكم ورحمة الله حسب تصويري السابق لحطة العمل أرجو أن يحوز المرفق على رضاك Error In Import.zip -
رسالة توضح نوع الخطأ عند الاستيراد من اكسيل
أبو إبراهيم الغامدي replied to N_ELMASRY's topic in قسم الأكسيس Access
أعلا بك عزيزي نعم.. إليك الخطة.. _ نقوم بالاتصال بملف أكسل على هيئة قاعدة بيانات، ثم نقوم بفتح ورقة البيانات كمصدر لسجل البيانات. _ بما أن الجدول الذي سنرحل إلية البيانات قد أنشئ في قاعدة البيانات الحالية فسنقوم بفحص البيانات القادمة من مصدر سجل البيانات على النحو التالي: * التعامل مع السجل الأول.. __ فحص طول الرقم القومي فإذا لم يساوي 14 رقما فسوف يرسل السجل المفحوص إلى متغير للسجلات التي بها خطأ مع بيان نوع الخطأ. __ إذا كان السجل سليما من ناحية الرقم القومي فسنقوم بإدراج السجل في جدول البيانات.. * التعامل مع السجل التالي __ فخص الرقم القومي من ناحية الطول ومن ناحية التكرار... إلخ. __ فحص السجل من ناحية تكرار رقم السجل مع السجل الذي سبق إدراجه في جدول البيانات ... إلخ. _ عند الانتهاء من فحص جميع السجلات سنقوم بعرض السجلات التي بها خطأ في عنصر قائمة تحرير وسرد لمراجعتها واتخاذ الإجراء المناسب حبالها. _ سأقوم بتطبيق الخطة في المشاركة القادمة، فإذا كان لديك أي تعليق بشأن الخطة أرجو التكرم بكتابنه، كما أرجو منك التكرم بإرفاق ملف أكسل يحتوي على بيانات كافية باحتمالات الخطأ المتوقع وجوده في سجل البيانات. -
أهلا بك سلمان.. أولا يجب أن يكون ظهور نموذج تعيين الطابعات الافتراضية من خلال إقلاع البرنامج فقط، لأن ظهوره مبني على أحد أمرين: _ أنك لم تقم بتعيين الطابعة الافتراضية. _ أو أن الطابعة المعينة غير متوفرة في النظام حاليا. :: هناك إشكالية مع قائمة التحرير والسر، ومربع التحرير والسرد إذا كانت وجهتها من اليمين إلى اليسار مع الخصيصة: العمود المنضم 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
-
أهلا أستاذ رمهان.. أرى أن أفكارنا متطابقة تماماً! نعم.. فكرة الأستاذ رمهان سهلة التطبيق ولا تحتاج إلى شفرة معقدة. سيتضمن الجدول عمودين على الأقل عمود يعرف الطابعة والعمود الآخر يحمل اسم الطابعة؛ يستخدم معرف الطابعة كمؤشر لاسم الطابعة عند التعيين.. :: الفكرة الأساسية هي أننا بحاجة إلى متغير يمكن أعادة تغير قيمته برمجيا.. كان بالإمكان استخدام ثوابت عامة تحمل أسماء الطابعات ومن ثم تعيين هذا الثابت كطابعة إفتراضية عند طبعاعة التقرير، ونقوم يتغير قيمة هذا الثابت في كل مرة يتغير فيها اسم الطابعة!.. نعم يكون هذا مقبولا إذا كان المستخدم هو المبرمج. .: هذا الإجراء غير قابل للتطبيق. :: يوفر أكسس ما يسمى بالخصائص المعرفة من قبل المبرمج؛ هذه الخصائص يمكن تعريفها والتحكم بها وإعادة اسناد قيمها برمجيا.. وتظل ثابتة في قاعدة البيانات إلى أن يقوم المبرمج بتغير قيمها أو حذفها نهائياً. سوف أقوم باستخدام هذه الطريقة مقابل جدول البيانات لأني أتوقع من الأستاذ رمهان أن يقوم بتطبيق الفكرة عن طريق جدول البيانات... الشفرة التي تعتني بإضافة وتعديل وحذف الخصائص المعرفة من قبل المستخدم مسردة في التالي.. 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
-
أهلا بك سلمان.. كان المقصود من مشاركتي هو التطبيق العملي لفكرة الاستاذ شيفان فقط.. أما بالنسبة لتثبيت وضعية الطابعة الافتراضية لكل تقرير فسوف يكون حسب المفهوم التالي.. - تحديد أنواع الطابعات التي سوف يستخدمها البرنامج (النفثية، الليزرية، النقطية، الباركود،.. ألخ) - تحديد اسم الطابعة لكل نوع من الانواع السابقة.. - تحديد اسم الطابعة لكل تقرير طالما الطابعة متوفرة؛ يجب الاخذ بعين الاعتبار تغير اسماء الطابعات وبالتالي نحن بحاجة إلى معرفة ما إذا كانت الطابعة لا تزال متوفرة عند إقلاع البرنامج أو عند تحميل التقرير على الأقل.. - إيجاد طريقة لتثبيت القيمة الافتراضية وفحصها في كل مرة وفقا للمفاهيم السابقة.. سوف أقوم بترجمت المفاهيم السابقة عمليا في المشاركة التالية بإذن الله..
-
تجميع عدة نسخ فى النسخة الحالية
أبو إبراهيم الغامدي replied to N_ELMASRY's topic in قسم الأكسيس Access
وعليكم السلام زرحمة الله وبركاته نعم.. في الشفرة التالية استخدمت متغير قبل أن تسنده إلى قاعدة البيانات! 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 في كل دورة للسجلات. -
مطلوب تعديل على برنامج اخفاء شاشة أكسس
أبو إبراهيم الغامدي replied to أبو عبير 2005's topic in قسم الأكسيس Access
تكمن المشكلة في شريط المهمام Taskbar، إذا كانت خاصية دمج عنواين التطبيقات على وضعية الإخفاء (وهي الوضعية الافتراضية)(وويندوز 7 وما بعده) فسوف يأخذ تطبيق أكسس الأيقونة الافتراضية (ويفرضها على جميع قواعد البيانات المفتوحة) وبناء على هذه المعطيات ستكون النتيجة مخيبة لمطوري قواعد البيانات أكسس لأنه ليس بوسعك فرض وضعية التوسع لهذه الخاصية على مستخدم وويندوز إذا لم يرغب فيها، وليس من الجيد تغيير أيقونة طبيق أكسس من أجل قاعدة البيانات خاصتك! هذا كل ما في الأمر -
مطلوب تعديل على برنامج اخفاء شاشة أكسس
أبو إبراهيم الغامدي replied to أبو عبير 2005's topic in قسم الأكسيس Access
أهلا بك أبا عبير هذا تطبيق على مثالك لخاصية التصغير إلى شريط المهام باستخدام زر التصغير في النموذج أرجو أن أن يلبي طلبك MinimizeToTaskbar.zip -
ماطريقه الحاق حقلين بالتوالي في حقل combobox
أبو إبراهيم الغامدي replied to جاسر بلمعروف's topic in قسم الأكسيس Access
أهلا بك.. هذه إحدى الطرق للحل.. addcbox.accdb -
رسائل التحذير (التنبيه) طريقة جديدة و حلوة
أبو إبراهيم الغامدي replied to عبد الله قدور's topic in قسم الأكسيس Access
شكرا لك أستاذ عبد الله.. شرح سهل في وقت قياسي -
هل يوجد كود واحد لمنع رسائل الخطأ اكسس
أبو إبراهيم الغامدي replied to f16's topic in قسم الأكسيس Access
إذا كانت أخطاء المحرر لايمكن إختابارها داخل محرر الشفرة؛ فأعتقد أنه من الممكن تصيدها باستخدام الوظيفة ()Eval، إذ أن هذه الوظيفة مهمتها الأساسية هي تقييم التعابير وإعادة النتايج التي تخرج عن تلك التعابير؛فاذا كانت التعبير يحتوي على وظائف وإجراءات مفقودة فإن الوظيفة ()Eval ستعيد رسالة خطأ بالرقم 2425 مفادها "يحتوي التعبير على وظيفة مفقودة".. وبهذا نكون سحبنا الخطأ إلى داخل محرر الشفره وبالتالي يمكننا تصيده بالطريقة المعتادة.. Control VBE Error.accdb -
ماهو السبب في كون الصف الأول ثخين؟
-
جداول و استعلامات و نماذج غنية بالالوان
أبو إبراهيم الغامدي replied to أبو آدم's topic in قسم الأكسيس Access
أعتذر إليك أستاذ أدام.. الصحيح أن العبارة تكتب في محرر الشفرة بهذه الطريقة DateFiled.Format="[blue]yyyy/mm/dd" ولكنها في الجدول تكتب مباشرة بدون علامة التنصيص.. كما في المرفق NA Colour All.accdb -
جداول و استعلامات و نماذج غنية بالالوان
أبو إبراهيم الغامدي replied to أبو آدم's topic in قسم الأكسيس Access
بالنسبة للتاريخ لابد أن تدمج مع تنسيق اللون تنسيق التاريخ أيضا.. على النحو التالي DateFiled.Format("[blue]yyyy/mm/dd") -
تحديد وقت بداية ونهاية اليوم
أبو إبراهيم الغامدي replied to سلمان الشهراني's topic in قسم الأكسيس Access
لأن الشرط ينتهي عند الساعة الثانية صباحا.. لمعالجة المشكلة.. في نهاية الحد الثاني من التعبير أضف +1 فقط بهذه الطريقة SELECT TB_conform.Date1, TB_conform.tem, TB_conform.ser FROM TB_conform WHERE ((([Date1] & " " & [tem]) Between CDate([Forms]![FM_report]![text1] & " " & [Forms]![FM_report]![Time1]) And CDate([Forms]![FM_report]![text2] & " " & [Forms]![FM_report]![Time2])+1)); -
تحديد وقت بداية ونهاية اليوم
أبو إبراهيم الغامدي replied to سلمان الشهراني's topic in قسم الأكسيس Access
تحياتي لك استاذ رهمان.. هذا هو التعبير الصحيح لشرط استخراج الوقت المحدد.. لأن الوقت لوحده يعتبر قيمة عائمة بين 24 ساعة ولابد من تحديد اليوم الذي يقع فيه الوقت.. للأسف استاذ سلمان بياناتك التي أدرجتها ليست ضمن مجال الوقت الذي حددته وبالتالي لن تحصل على نتيجة.. -
بالنسبة لوضع التكبير للنموذج (الرئيسية) تمت معالجته بسهولة.. لكن بالنسبة لاستقرار النموذج (Main) في الأعلى لم أحصل على نتيجة مرضية لأن إعادة التكبير تفقد النموذج (Main) التركيز (البقاء في الأعلى).. ومع هذا وضعت حلا أرجو ألا يخيب ظنك.. Minimize.zip
-
أضف الشفرة التالية إلى النموذج الرئيس.. وإذا لم تنفع سوف أقوم بتعديل Win API Function لتتلائم مع طلبك Private Sub Form_Activate() DoCmd.Maximize End Sub
-
هل يمكن انشاء مجلد محمي بكلمة سر عن طريق الاكسس؟
أبو إبراهيم الغامدي replied to sandanet's topic in قسم الأكسيس Access
هذا تفكير منطقي! كما أن معظم خصائص وندوز يمكن معالجتها بلفة VBS؛ وبالتالي يمكن استخدام الشفرة في أكسس... الرابط التالي يقدم مثال لما طلبت.. https://gallery.technet.microsoft.com/scriptcenter/How-to-create-a-folder-and-81df72cf#content -
ارسال رسائل قصيرة عن طريق موقع بالك باستخدام اكسس
أبو إبراهيم الغامدي replied to fwares's topic in قسم الأكسيس Access
كل مزود خدمة له إعدادت تخصه من ناحية الأبي والبورت.. لكن الإجراء واحد.. في اعتقادي أن جميع مزودي خدمة الرسائل يوفرون خدمة الشفرة المصدرية لمنتجاتهم.. لو بحثت في الموقع أو تصلت على المزود سوف يقوم بخدمتك! -
الرجاء المساعدة فى وضع مسار للصور
أبو إبراهيم الغامدي replied to safwat Maher's topic in قسم الأكسيس Access
أعتذر إليك عن هذا التقصير.. قمت بإصلاح الخطأ.. كل منتج له نموذج صورة يخصه.. لست ملزما بإغلاق صورة المنتج الظاهرة لترى صورة المنتج الأخرى إليك التعديل:Scc2.zip -
ارسال رسائل قصيرة عن طريق موقع بالك باستخدام اكسس
أبو إبراهيم الغامدي replied to fwares's topic in قسم الأكسيس Access
إذا كنت تقصد موقع BulkSMS فالموقع يقدم الدعم لمستخدمي أكسس.. الرابط التالي فيه مثال من الموقع لدعم مستخدمي أكسس http://developer.bulksms.com/eapi/libraries/supported/msaccess/ وهذا هو المثال: BulkSMS MS Access Samples.zip -
جمع قيم تقريرجدولي أفقيا و راسيا
أبو إبراهيم الغامدي replied to AboSaad17's topic in قسم الأكسيس Access
إليك التعديل db333.zip