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

الردود الموصى بها

قام بنشر

الخبراء الافاضل

بعدالتحية

اريد كود برمجى لزر فى نموذج

كود اذا كان التقرير فارغ لايفتح ويعطى رسالة التقرير فارغ  واذا كان بة بيانات يفتح التقرير ويعطى رسالة هل تريد طباعة هذا التقرير ؟ والرسالة بها زر نعم و زر لا

خالص الشكر

  • Like 1
قام بنشر
48 دقائق مضت, jo_2010 said:

كود اذا كان التقرير فارغ لايفتح ويعطى رسالة التقرير فارغ  واذا كان بة بيانات يفتح التقرير ويعطى رسالة هل تريد طباعة هذا التقرير ؟ والرسالة بها زر نعم و زر لا

 

الموضوع ده قبل الرد لازم نكون عارفين ايه مصدر بيانات التقرير
وهل فيه فرز او تصفيه بتتم واللا لاء

يعنى ضع مرفقك بالحالة اللى انت عاوزها بالظبط

  • Like 1
  • تمت الإجابة
قام بنشر

على العموم بوجه عام
فى كود فتح التقرير من خلا زر امر استخدم

Dim strRptName As String
Dim strMsgNoData As String
Dim strMsgConfirm As String

'' --- اسم التقرير
strRptName = ""

'' --- الرسالة إذا لم توجد بيانات
strMsgNoData = "التقرير فارغ."

'' --- رسالة التأكيد
strMsgConfirm = "هل تريد طباعة هذا التقرير؟"


    '' === فتح التقرير بشكل غير ظاهر للمستخدم (يتم عرضه في الخلفية للتحقق) ===
    DoCmd.OpenReport strRptName, acViewPreview, , , acHidden

    '' === التحقق من وجود بيانات ===
    If Reports(strRptName).HasData Then
        '' --- توجد بيانات، نسأل المستخدم
        If MsgBox(strMsgConfirm, vbYesNo + vbQuestion + vbMsgBoxRtlReading + vbMsgBoxRight, "تأكيد الطباعة") = vbNo Then
            DoCmd.Close acReport, strRptName, acSaveNo
        Else
            '' --- إظهار التقرير لأنه كان مخفي
            DoCmd.SelectObject acReport, strRptName, True
        End If
    Else
        '' --- لا توجد بيانات، نغلق التقرير ونعرض رسالة
        DoCmd.Close acReport, strRptName, acSaveNo
        MsgBox strMsgNoData, vbExclamation + vbMsgBoxRtlReading + vbMsgBoxRight, "تنبيه"
    End If

    Exit Sub


 

  • Like 1
قام بنشر

ودى فكرة لتحقيق طلبك بشكل مباشر 

ولكن لا احب اعادة استخدام الاكواد فى نماذج مختلفة

او تعديلها كل شوية

ان شاء الله تعالى سوف أقوم ببناء وحدة نمطية متخصصة للتحكم فى كل كبيرة وصغيرة :yes:

لمن يهتم بهذا الموضوع ينتظر ان شاء الله مفاجأه سارة :fff:

 

قام بنشر

وتم بحمد الله الذى تتم بنعمته الصالحات بعد خناقة كبيرة كبيرة كبيـــــــــرة مع بنات أفكارى :biggrin:

الكود فى الوحدى النمطية العامة 

كود ذكى وسحرى ومرن وابن حلال وحيفهمك ويريحك ويلبى كل متطلباتك تقريبا فى التعامل مع التقارير 

و .... هو انا لسه هاتلكم كتير 

ما تيجوا نشوف على طول :wink2:

 

 

 

قام بنشر

مع إحترامي لحل الأخ @ابو جودي فالمسألة أبسط من كذا

كل ماعليك فعله هو إضافة الكود التالي لحدث عند عدم وجود بياتات أو On No Data الخاص بالتقرير

'رسالة تنبيه
MsgBox "لايوجد أي بيانات في التقرير", vbMsgBoxRight + vbMsgBoxRtlReading, "تنبيه"

'إلغاء الأمر وعدم متابعة فتح التقرير
Cancel = -1

ليصبح بهذا الشكل

Private Sub Report_NoData(Cancel As Integer)

    'رسالة تنبيه
    MsgBox "لايوجد أي بيانات في التقرير", vbMsgBoxRight + vbMsgBoxRtlReading, "تنبيه"
    
    'إلغاء الأمر وعدم متابعة فتح التقرير
    Cancel = -1
    
End Sub

مع تحياتي

  • Like 1
قام بنشر
2 دقائق مضت, منتصر الانسي said:

كل ماعليك فعله هو إضافة الكود التالي لحدث عند عدم وجود بياتات أو On No Data الخاص بالتقرير

يا هلا والله باستاذى القدير و معلمى الجليل الاستاذ @منتصر الانسي

هذا الحل ينفع بس فى حالة واحدة
فتح التقرير : DoCmd.OpenReport strRptName, acViewPreview

ولكن لو اردت الطباعة : DoCmd.OpenReport "Period Report", acViewNormal

للاسف لو ما فى بيانات سوف يتم طباعة ورقة بيضاء :yes:

  • Confused 1
قام بنشر

ولو بعد الرسالة اغلقنا التقرير 😅

برضوا هيطبع صفحة فاضية ! 🙄

  • Confused 1
قام بنشر
منذ ساعه, Foksh said:

ولو بعد الرسالة اغلقنا التقرير 😅

برضوا هيطبع صفحة فاضية ! 🙄

مش توضح الرد ده مع انهو طريقه بالظبط

قام بنشر
2 ساعات مضت, ابو جودي said:

مش توضح الرد ده مع انهو طريقه بالظبط

حقك علي فعلاً ،،

انا افتكرت نفسي عملت اقتباس 😂

قصدي مع مشاركة معلمي الفاضل منتصر 

  • Haha 1
قام بنشر
منذ ساعه, Foksh said:

حقك علي فعلاً ،،

لا انا مش زعلان

بس انا علشان مش عندي طابعة فكرت المشكله فى الكود بتاعى

  • Like 1
قام بنشر
5 ساعات مضت, ابو جودي said:

بس انا علشان مش عندي طابعة فكرت المشكله فى الكود بتاعى

18 ساعات مضت, ابو جودي said:

هذا الحل ينفع بس فى حالة واحدة
فتح التقرير : DoCmd.OpenReport strRptName, acViewPreview

ولكن لو اردت الطباعة : DoCmd.OpenReport "Period Report", acViewNormal

لا المسألة مش مسألة إن الكود فيه مشكلة انما أنا فكرت في الموضوع من منظورين آخرين

الأول طالما وتوجد طريقة أسهل وتنفذ المطلوب لما لا نستفيد منها

الثاني الطبيعة البشرية فعلى طول مشاوري في العمل مع الأنظمة لم أجد مستخدم واحد يطبع تقرير بدون مايفتحه في وضع المعاينة وطباعته من هناك وكأنه يريد الإطمئنان على شكل ومحتوى التقرير قبل طباعته 

18 ساعات مضت, ابو جودي said:

للاسف لو ما فى بيانات سوف يتم طباعة ورقة بيضاء :yes:

أنا لم يحدث معي هذا الأمر فبمجرد اغلاق رسالة التنبيه تلغى عملية الطباعة

عموما الإختلاف في الرأي لايفسد للود قضية في الأخير كلها أفكار تصب في مصلحة أعضاء المنتدى فمن خلالها يمكنهم التعرف على كل البدائل الممكنة للعمل بما يلائمهم منها أو حتى أنهم قد يخرجون منها بأفكار أخرى جديدة

مع تحياتي

  • Like 1
قام بنشر
16 دقائق مضت, منتصر الانسي said:

الأول طالما وتوجد طريقة أسهل وتنفذ المطلوب لما لا نستفيد منها

طبعا استاذى الجليل و معلمى القدير اتفق معك تماما تماما فى هذه النقطة 

16 دقائق مضت, منتصر الانسي said:

الثاني الطبيعة البشرية فعلى طول مشاوري في العمل مع الأنظمة لم أجد مستخدم واحد يطبع تقرير بدون مايفتحه في وضع المعاينة وطباعته من هناك وكأنه يريد الإطمئنان على شكل ومحتوى التقرير قبل طباعته 

انا فى عملى يا استاذى هناك تقارير اطبعها بشكل مباشر دون محاولة فتحها اساسا 

نظرا احيانا لضيق الوقت وكثرة العمل و و .... الخ 


ولكن طبعا انا متأكد من جميع المدخلات والمخرجات وانا على دراية تامة بالكودينج لان من كتابتى وطبعا مسبقا اعرف النتيجة التى سوف احصل عليها من الطباعة

16 دقائق مضت, منتصر الانسي said:

أنا لم يحدث معي هذا الأمر فبمجرد اغلاق رسالة التنبيه تلغى عملية الطباعة

انا حدث معى هذا الأمر عندما حاولت تجربته فى احد الايام بعد ظهور الرسالة التىفيد بعدم وجود بيانات وفور اغلاق الرسالة تجد الطباعة تعمل 

 

جرب حضرتك الان تستخدم الطباعة الى ملف PDF

سوف تجده يعمل بعد الرسالة ويقوم بطباعة ( حفظ كملف PDF)  للتقرير كهيكل لمحتوى التصميم والعناصر بدون اى بيانات

 

قام بنشر
17 دقائق مضت, منتصر الانسي said:

أنا لم يحدث معي هذا الأمر فبمجرد اغلاق رسالة التنبيه تلغى عملية الطباعة

وانا كذلك ،

ولكن تبقى ايقونة الطباعة بقرب ساعة الكمبيوتر لثوان ، ثم تختفي.

 

7 دقائق مضت, ابو جودي said:

جرب حضرتك الان تستخدم الطباعة الى ملف PDF

يقوم بحذف لملف السابق (إن وُجد) ، ولا يعمل ملف جديد بصفحة فارغة (انا كذلك اعطاني ايحاء ان الصفحة الفارغة تم طباعتها ، ولكني اكمل الخطوات ولم اجد الملف اصلا).

قام بنشر

 

 

انا عندي 3 خطوط (دفاعية) لفتح نموذج او تقرير:

1. الاستعلام ، ويكون مصدر البيانات ، ويكون فيه الفرز (للنموذج فقط ، بينما التقرير لا يحترم فرز الاستعلام وانما يجب عمله في التقرير مباشرة) والتصفية ،

2. وقد احتاج الى تصفية اخرى عند فتح النموذج/التقرير ، او اذا عملت على استعلام/نموذج/تقرير ، ولا احبذ تغيير الاستعلام (لأنه هناك نماذج/تقارير اخرى تعتمد عليه) ،

هنا اعتمد على الفرز/التصفية عند فتح النموذج/التقرير ،

3. وفي حالات خاصة (جدا خاصة وجدا قليلة) ، اعتمد على وضع شروط عند فتح النموذج/التقرير في كود فتح النموذج/التقرير.

 

فعليه :

وفي جميع الحالات اعلاه ، عمل اخوي ابو جودي (لا يعمل في صيغة mde او accde ، لأنه لا يمكن فتح النموذج/التقرير في وضع التصميم) واخوي منتصر يعملان ،

وفي بعض الاحيان كنت احتاج الى معرفة اذا هناك سجلات قبل طباعة تقرير (كان يتأخر في الطباعة) ، وكنت معتمد على الاستعلام كمصدر بيانات ، فكنت استعمل الكود التالي (والذي في اعتقادي هو اسرع من فتح التقرير وانتظار حصول الرسالة منه ، ولكن اذا كانت هناك سجلات ، فالتأخير يكون مرتين ، مرة للتأكد من عدد السجلات ، والمرة الاخرى في طباعة السجلات) :

if DCount("*","Query Name")=0 then
	msgbox "لا توجد سجلات للطباعة"
else
	docmd.openreport "Report Name"
end if

 

  • Like 1
قام بنشر
منذ ساعه, jjafferr said:

وفي جميع الحالات اعلاه ، عمل اخوي ابو جودي (لا يعمل في صيغة mde او accde ، لأنه لا يمكن فتح النموذج/التقرير في وضع التصميم)

اه حضرتك تقصد كود الوحدة النمطية العامة 

قام بنشر

ماشاء الله أعتقد أن المداخلات من @ابو جودي و @jjafferr قد أثرت الموضوع وغطت الطرق الأكثر عملية مع توضيح مزايا وعيوب كل طريقة

ولكن وتوضيحا لكلام الاخ @ابو جودي

3 ساعات مضت, ابو جودي said:

جرب حضرتك الان تستخدم الطباعة الى ملف PDF

سوف تجده يعمل بعد الرسالة ويقوم بطباعة ( حفظ كملف PDF)  للتقرير كهيكل لمحتوى التصميم والعناصر بدون اى بيانات

انا استخدم طابعة إفتراضية تقوم بإستخراج التقرير كملف PDF وتعمل مثل الطابعة الحقيقة

أما كلامك فمعناه أنك تستخدم الأمر DoCmd.OutputTo وهذا لايعتبر أمر طباعة وإنما امر لإستخراج الكائن بصيغة محددة بحالته كيفما تكون ولو لاحظت فإن الرسالة لاتظهر من الأساس فحدث عند عدم وجود بياتات أو On No Data الخاص بالتقرير يتطلب استخدام الأمر DoCmd.OpenReport حتى يتم تفعيله

ولكن مثلما أسلفت فهذه المناقشات جميلة لنتعرف كلنا على الطرق المختلفة لحل المشاكل فقد يحتاجها أحدنا يوما ما

مع تحياتي

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information