اذهب الي المحتوي
أوفيسنا

محمد طاهر عرفه

إدارة الموقع
  • Posts

    8,496
  • تاريخ الانضمام

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

  • Days Won

    36

كل منشورات العضو محمد طاهر عرفه

  1. من ملف الاكسيل DATA IMPORT EXTERNAL DATA NEW DATABASE QUERY و ختار MICROSOFT ACCESS و انقر عليه مرتين ليظهر مربع حوار لاختيار الملف و ختار ملف الاكسس ستظهر لك تفاصيله اختار منها الاستعلام الذي تريد و انقر علي الحقول المطلوبة ( تحديد الحقول المطلوب استرجاعها ) ثم انتقل للشاشة التالية لاختيار الحقول التي سيتم عمل شروط عليها و يليها شاشة أخري بها ترتيب البيانات ثم الشاشة الاخيرة فى المعالج و منها تختار RETURN DATA TO MS EXCEL و يمكنك حفظ الاستعلام الذي أنشأتهه بصيغة MS QUERY و انهي عمل المعالج سيسألك عن الخلية التي تريد ادراج الاستعلام الذي كونته فيها و بذلك تحصل علي ما تريد
  2. تم نقل الملف الي قسم الاكسيس العام من دورة الاكسيس لكي يكون واضحا بذاته لنتوقف قليلا أولا مع تصميم الجداول هل يوفي التصميم التالي متطلبات البرنامج لديك ؟؟ جدول الطلبة و بياناتهم و مرتبط به جدول الرغبات و به كود الطالب و كود المادة جدول الشركات و به بياناتها و مرتبط به جدول الفرص المتاحة و به كود الشركة و كود المادة و عدد الفرص المتاحة جدول المواد و به كود المادة و اسمها و لنؤجل كيفية عمل التوزيع الي حين الاتفاق علي الجداول
  3. شرح استعلامات التوحيد من هنا مرفق المثال Q8.rar
  4. اذا أغلب الظن أن الملف حدث له تلف افتح ملف جديد ثم جرب ادراج الشرائح اليه واحدة تلو الأخري من قائمة Insert Slides from files
  5. توجد أمثلة علي طرق الاضافة الثلاثة من نموذج بدون مصدر بيانات ،و التي أحب أن أسميها اضافة علي الطاير إضافة سجل باستخدام SQL من نموذج بدون مصدر بيانات إضافة سجل باستخدام DAO من نموذج بدون مصدر بيانات إضافة سجل باستخدام ADO من نموذج بدون مصدر بيانات و هي آمنة من حيث تكرار الاضافة حيث أنها تعتمد علي الترقيم التلقائي ، و لكن تحتاج الي تعديلها الي نفس التطبيق من حيث استخدام Dmax مع حقل رقمي و اضافة دالة الاختبار لكي تناظر الحالة التي نناقشها الآن و ساقوم باعداد المثال بالطريقة الأخري ( بأجزائها الثلاثة ) قريبا بإذن الله :d ، فهل هناك طرق أخري يمكن اعتبارها ووضعها فى المثال للمقارنة الي الطبيعة غير الطرق الثلاث ؟؟ و ستبقي نقطة المناقشة أي الطريقتين أفضل ؟؟ و قد نستطيع مناقشتها من الآن أو تأجيلها لحين اعداد المثال و طبعا المقارنة ستكون فى الحالة التي ندرسها حاليا ، و هي حالة الحقل الرقمي مع استخدام dmax للترقيم مع دالة الاختبار و ذلك لكل من حالتي النموزج المرتبط و النموذج الغير مرتبط ( الطاير ) :d
  6. هل جربت فتح الملف من مكانه او فتح برنامج الباور بوينت ، ثم اختيار فتح من قائمة ملف ، و اختيار الملف .؟؟؟ ربما أيضا يكون اصدار الاوفيس مختلف علي الجهازين فافتحه من الجهاز الذي عليه الاصدار الاعلي ( غالبا الجهاز الثاني ) ، ثم اختار حفظ باسم و اختار نوع الملفات للاصدار السابق
  7. جميل جدا :) :yess: يبدو أنه لايوجد شيء فى الاكسس الا و لو حل :lol: و انا شخصيا متشوق لمعرفة ثمرتها ، حيث أن تخيلها صعب الي حد ما :pp:
  8. هذا أفضل :yess: و سأعيد التفكير فى الموضوع بصوت عال قبل تعديل المثال: دالة الاختبار تقوم باستدعاء آخر رقم مسجل لمستخدم رقم1 فى زمن ز1 و نقارنها بما هو فى النموذج ، ثم تغير القيمة فى النموذج قبل الانتقال الي السجل التالي أو قبل الحفظ اذا لزم الامر و عملية الانتقال و الحفظ تحدث فى زمن ز2 و المشكلة لو قام مستخدم رقم 2 بعمل الاختبار و التسجيل معا فى توقيت بين ز1 و ز2 ، فلو قام بعمل الاختبار بعد ز2 فسيأخذ رقم جديد و لو قام بالتسجيل قبل ز1 فسيكون الرقم الذي سجله قد أخذ فى الاعتبار و هذا معناه تنفيذ الدالة بالكامل من قبل مستخدم 2 فى زمن تنفيذ جزء من الدالة ( ز2 - ز1 ) من قبل مستخدم رقم 1 و رغم أننا نتحدث عن أجزاء من الثانية ، الا أن وقوع الخطأ ممكن نتيجة لأي ظرف مثل اختلاف سرعة اداء الأجهزة مثلا ، فسيكون الزر الذي تفضل أبو هادي بوضع الكود الخاص باعادة الاختبار له فى وضع آمن ، حيث أن عدم التمكن من الذهاب للسجل الجديد معناه أن الرقم الحالي قد تم حجزه من قبل مستخدم آخر ، و سيتكرر الاختبار الي أن يتم حجز رقم غير متعارض . و كود الاخ أبو هادي يعتمد علي اختبار حدوث خطأعدم امكانية الذهاب الي سجل جديد (الخطأ رقم رقم 2105 ) و هذا معناه أن الرقم تم تسجيله من قبل مستخدم آخر لذا لم يمكن حفظ السجل و الذهاب الي السجل الجديد ؟؟ و لكن سيكون مازال هناك خطأ وارد فى الزر الأول ( زر الحفظ ) . و الذي قد ينتج عنه استبدال بيانات سبق تسجيلها فى الجدول أو هل يوجد اقتراح بديل بالنسبة لزر الحفظ ، و الذي حتي الآن سنضع فيه نفس الكود ثم اغلاق النموذج بعد التمكن من الذهاب الي سجل جديد دون حفظ الجديد . أم هناك اقتراحات بديلة بتنفيذ الاختبار بطريقة أخري بالنسبة لزر الحفظ ؟؟ Private Sub Command4_Click() On Error Resume Next Do Err.Clear If Me.NewRecord Then Me.id = checkid() DoCmd.GoToRecord , , acNewRec Loop Until Err.Number <> 2105 DoCmd.Close End Sub و الأن نقطة أخري للمناقشة ، هل الوضع هكذا أفضل أم أن نجعل النموذج بددون مصدر بيانات و نسجل البيانات علي الطاير ؟؟
  9. للأسف مازلت لم أعثر الا علي أن القيمة الافتراضية لخاصية الcaption لل label تكون هي اسم الكائن المرتبط متبوعة ب ":" و يمكن استغلال هذه العلاقة طالما لم نغير قيمة الcaption أو اسم الكائن . و هذا طبعا يضعفها كخاصية يمكن الاعتماد عليها ----------------- و استكمالا لموضوع القيمة الافتراضية ، فهذا كود من التعليمات عدلته قليلا الي التعامل مع مربع نص و تلوينه و جعله المربع الافتراضي ، أي أن خصائصه تصبح هي الخصائص الافتراضية لأي مربع نص فى النموذج الجديد أي تطبيق لموضوع الخصائص الافتراضية للكائنات بالكود أي الكود ينشيء نموذج جديد ، و فيه ينشيء مربع نص بخصائص معينة ، ثم يجعله مربع النص الافتراضي بعد تغيير خصائص لون الخلفية و الخط فيه فتصبح هذه الخصائص مطبقة علي كل مربعات النص التي سيتم انشاءها فى النموذج و طبعا الكود قابل للتطبيق علي باقي الكائنات Sub SetDefaultProperties() Dim frm As Form, ctlDefault As Control, ctlNew As Control ' Create new form. Set frm = CreateForm ' Return Control object representing default command button. Set ctlDefault = frm.DefaultControl(acTextBox) ' Set some default properties. With ctlDefault .BackColor = RGB(255, 255, 0) .FontWeight = 700 .FontSize = 12 End With ' Create new command button. Set ctlNew = CreateControl(frm.Name, acTextBox, , , , 500, 500) ' Set control's caption. 'ctlNew.Value = "officena" ' Restore form. DoCmd.Restore End Sub DefaultControl.rar
  10. السلام عليكم ما شاء الله ، تطبيق كامل علي الاكسيل :yess: هل هو الأخ ابو أحمد الذي يشارك هنا فى قسم الاكسيل ؟؟ مع الشكر لك و له ، و اذا لم يكن هو فلتدعوه للمشاركة معنا فى المنتدي :d مع ملاحظة أن مستوي تأمين الماكرو = متوسط ، يكفي للتشغيل ( بعد اعادة تشغيل الملف ثانية ) و اختيار تفعيل الماكرو عند السؤال . و بصفة عامة لا ينصح باختيار مستوي منخفض تحت أي ظرف تحسبا للملفات غير ملعومة المصدر ، و التي قد تكون بها اكواد ضارة ، و هذا طبعا ليس مقصود به هذا الملف ولكن بصفة عامة حيث أن الخيار سيبقي مفعلا مع كل الملفات الي ان تغيره ، و يوجد فى قسم خلاصة المشاركات مثال علي التحكم في مستوي التأمين بالكود مع تحياتي
  11. اخي أبو هادي ، أرجو التوضيح أكثر ما بنيت عليه الكود ، هو أن الرقم المحجوز علي النموذج يتم تغييره تلقائيا عند الحفظ أو الانتقال الي السجل التالي اذا كان قد تم تسجيله خلال فترة مليئ بيانات النموذج و كذلك الحال بالنسبة للمستخدمين الآخرين ، فاذا كان الرقم الظاهر علي النموذج قد تم تسجيله ، فيتم استبداله عند الحفظ أو الانتقال الي سجل آخر باستخدام الدالة . مع الشكر :d
  12. الطريقة الأولي و هي تغيير تنسيق مربع نص أو أي كائن آخر ، و من ضمن ذلك حذف تسميته ثم نختار من قائمة FORMAT SET CONTROL DEFAULTS اي ان الكائنات التي ستضاف من نوع هذا الكائن ، ستكون لها خصائص مماثلة لهذا الكائن الذي جعلناه افتراضيا فاذا حذفنا تسميت مربع نص و جعلنا لون الخلفية أصفر قبل جعله الافتراضي ، فستكون كل مربعات النص التي سننشأها بعده خلفيتها صفراء و بدون تسمية و هناك طريقة أخري من وضع التصميم لنموذج أو تقرير نضغط علي ايقونة ال CONTROL BOX رقم 3 فى الرسم ثم نختار الكائن المراد وضع خصائص افتراضية له و ليكن مربع النص مثلا (رقم 2 فى الصورة ) و نختار خصائص (رقم 1 ) فتظهر لنا لاخصائص الافتراضية لمربعات النص التي ستضيفها لاحقا و من ضمنها خاصية AUTOLABEL : أي يتم الحاق تسمية به عند اضافة كائن من هذا النوع لاحقا و يمكن تغيير أي خصائص أخري مثل التنسيق مثلا فيكون ما نختاره هنا هو الخصائص لكل مربعات النص التي سنضيفها لاحقا ، فنوفر بذلك الوقت فى تنسيقها و كذلك الحال بالنسبة لباقي الكائنات مع تحياتي
  13. اذا كانت مجموعة الاختيارات يتم تسجيل قيمتها فى حقل فى الجدول فسيمكن تغييرها تبعا لكل سجل أنشيء مجموعة الخيارات ثانية و عندما يسألك هل تريد تخزين القيمة فى الجدول ام تذكرها فقط ، اختار تسجيلها فى الحقل الذي اعددته لذلك ، علي أن تكون نوعية البيانات به مناسبة لخيارات التي اخترتها كقيم مناظر للمجموعات فى ال option group
  14. بالفعل نسيت اضافة دالة الاختبار الي الزر الآخر مثل زر الحفظ تم التعديل باضافة السطر الي كود سجل جديد ليصبح Me.id = checkid() DoCmd.GoToRecord , , acNewRec Me.id = Nz(DMax("[id]", "names") + 1) أي اضافة Me.id = checkid() و أشكرك علي التنبيه :)
  15. مبدأيا أعتقد أن Label = تسمية فأنا أيضا أستخدم النسخة الانجليزية و صراحة لم أفكر فى هذا الموضوع لأن أول ما أفعله فى النموذج هو اختيار جميع التسميات المرتبطة بالكائنات ثم Cut paste لفصلها عن كائناتها لأنها تتعبني عند التنسيق أما عن وجود علاقة برمجية بينها فلا يخطر ببالي حاليا سوي أن القيمة الافتراضية لخاصية الcaption لل label تكون هي اسم الكائن المرتبط متبوعة ب ":" و أنه يمكن استخدام خاصية AutoLabel لتفعيل أو ابطال انشاء lable مع ال controls الجديدة ( لتفعيل او ابطال انشاء تسميات بصورة الية مرتبطة بالكائنات الجديدة ) مع تحياتي
  16. لنفرض أن لديك قيم فى الخلايات من a1:a10 تريد جمعها و كل القيم بها = 20 فيما عدا الخلية a4 بها القيمة = 10 للجمع الكامل =SUM(A1:A10) النتيجة 190 للجمع الكامل ثم طرح a4 =SUM(A1:A10)-A4 النتيجة 180 للجمع بدون a4 ثم طرح a4 =SUM(A1:A3;-A4;A5:A10) أو =SUM(A1:A3;A5:A10)-A4 النتيجة 170 و لسهولة كتابة Sum مع مجال متعدد نختار اول جزء ثم نضغط ctr و نختار التالي
  17. هذا مثال علي حساب التراكمي الكامل و التراكمي حتي القيمة السابقة فى النموذج ، ثم اضافة سجل جديد الي الجدول به القيمة و التراكمي و التراكمي حتي السجل السابق أرجو التجربة مع تحياتي PrevCum.rar
  18. هذا مثال بسيط عن استخدام الدالة dmax لعمل ترقيم مسلسل ، و نلجأ لهذه الطريقة عندما نريد السماح لنا بتعديل ترقيم المسلسل بسهولة و لأنه يمكن فى حالة تعدد المستخدمين أن يتم حجز رقم و اظهاره فى النموذج من قبل مستخدم بناء علي القيمة فى الجدول ، بينما يحجز مستخدم آخر نفس الرقم ، لذا يتم اعادة اختباره قبل التسجيل
  19. هي عندي on Change :d و انت الأدري بالنسخة العربية :pp:
  20. مع أول قراءة توقفت امام SendKeys "{BS}" و تصورت أنها خطأ :) و بعد ذلك تذكرت أن Backspace يمكن ارسالها بثلاث طرق فرجعتها من ملف التعليمات ، و الثلاث طرق هي : {BACKSPACE} {BS} {BKSP} و طبعا الأسهل هي ما ختارها الأخ أبو هادي و جميل التحذير اولا بأول ، حدث عند التغيير لمربعات النص كل يوم تظهر له استخدامات جديدة :)
  21. تم تعديل الدالة بناء علي موضوع فى قسم الأكسس ، و التعديل من أجل أخذ الأرقام السالبة فى الاعتبار Function ROUNDTO(MYNO As Double, MyFraction As Double) ' to round up or down with a certain value Dim MYBASE As Double, MYREM As Double If Abs(Round(MyFraction, 2)) <= 0 Then ROUNDTO = MYNO Exit Function End If Dim neg As Boolean neg = False If MYNO < 0 Then neg = True MYNO = Abs(MYNO * 100) MyFraction = MyFraction * 100 MYREM = MYNO Mod MyFraction 'MsgBox "rem : " & MYREM MYBASE = MYNO - MYREM 'MsgBox "Base : " & MYBASE If MYREM > 0 Then If MYREM > MyFraction / 2 Then ROUNDTO = MYBASE + MyFraction Else ROUNDTO = MYBASE End If Else ROUNDTO = MYNO End If ROUNDTO = ROUNDTO / 100 If neg = True Then ROUNDTO = -ROUNDTO End Function
  22. السلام عليكم من المفترض ان ازرار الخيار اذا كانت مبنية علي حقل معين ، فان ما يظهر بها يتغير بحسب الحقل . فهل مصدر بياناتها حقل معين ؟؟ فاذا لم يكن هذا هو الوضع فنرجو التوضيح كما ذكر الأخ أمير
×
×
  • اضف...

Important Information