ahmad_3011 قام بنشر مارس 8, 2021 قام بنشر مارس 8, 2021 السلام عليكم ورحمة الله وبركاته اقوم بتكرار لووب على هذا الكود لكى يعمل Export PDF ولكن يعطى خطأ OutputTo PDF; The OutputTo action was canceled واحيانا اخرى قاعدة البيانات تعمل restart DoCmd.OpenReport reportName, acViewPreview, , reportCriteria, acHidden DoCmd.OutputTo acOutputReport, reportName, acFormatPDF, Application.CurrentProject.Path & "\Mail\Report - " & Lst1.Column(1) & " - " & Lst2.Column(4) & ".pdf" DoCmd.Close acReport, reportName, acSaveNo ما احتمال الخطأ
jjafferr قام بنشر مارس 8, 2021 قام بنشر مارس 8, 2021 وعليكم السلام 🙂 اول خطوة تعملها هو تصفية برنامجك من الشوائب ، عن طريق . واذا لازالت المشكلة مستمرة ، فنريد يا المرفق ، ويا الكود كاملا للتقرير (الكود اعلاه يصدر ملف pdf مرة واحدة ، بينما انت تقول انك تصدره عدة مرات) . جعفر 1 1
Hawiii قام بنشر مارس 9, 2021 قام بنشر مارس 9, 2021 18 ساعات مضت, ahmad_3011 said: DoCmd.OpenReport reportName, acViewPreview, , reportCriteria, acHidden DoCmd.OutputTo acOutputReport, reportName, acFormatPDF, Application.CurrentProject.Path & "\Mail\Report - " & Lst1.Column(1) & " - " & Lst2.Column(4) & ".pdf" DoCmd.Close acReport, reportName, acSaveNo سأحاول التفكير بصوت مرتفع 🙂 1 - محاولة أولى: أزل acHidden و أزل السطر الثالث لتستمتع برؤية تقرير الأكسس وبعد تصديره اقفله يدويا. 2 - محاولة ثانية: دع عنك خيارات المحاولة الأولى ثم احشر الأمر DoEvents بعد سطر فتح التقرير وقبل سطر تصديره أي سيكون ترتيبه الثاني بين الأربعة أسطر. أعتقد المشكلة أن أمر اغلاق التقرير يبدأ تنفيذه قبل اتمام معالجة التصدير. لا أستطيع الجزم. 1
ahmad_3011 قام بنشر مارس 10, 2021 الكاتب قام بنشر مارس 10, 2021 شكرا على المجهود ولكن للاسف كلا الطريقتين لم تفلح يبدو ان المشكلة ان الرامات يحدث فيها ضغط شديد نتيجة لتصدير اكتر من 1000 تقرير وكل تقرير يحتوى على اكثر من تقارير فرعية ووحوالى 3 لوجو وبعد حوالى 150 تقرير تقريبا يزيد او ينقص يتم عمل ريستارت للاكسس، مع العلم ان الكود بشكل عام ليس به مشكلة لان نفس الكود يقوم بتصدير اكتر من 2000 تقرير فى حالة عدم وجود تقارير فرعية بالتقرير المصدر. السؤال هنا هل يوجد كود مثلا لعمل restart للرام
jjafferr قام بنشر مارس 10, 2021 قام بنشر مارس 10, 2021 في ٨/٣/٢٠٢١ at 15:29, jjafferr said: واذا لازالت المشكلة مستمرة ، فنريد يا المرفق ، ويا الكود كاملا للتقرير (الكود اعلاه يصدر ملف pdf مرة واحدة ، بينما انت تقول انك تصدره عدة مرات)
ahmad_3011 قام بنشر مارس 10, 2021 الكاتب قام بنشر مارس 10, 2021 On Error Resume Next Dim x As Integer x = MsgBox("Are you sure you want to send all reports ?", vbYesNo, "Sending Report") If x = 7 Then MsgBox "Sending mail process has been cancelled", vbInformation, "Cancel Sending" Else Dim XG As Long XG = LstG.ListIndex For XG = 0 To LstG.ListCount - 1 LstG.SetFocus LstG.ListIndex = XG LstG.Selected(XG) = True Dim XC As Long XC = LstC.ListIndex For XC = 0 To LstC.ListCount - 1 LstC.SetFocus LstC.ListIndex = XC LstC.Selected(XC) = True Dim XS As Long XS = LstS.ListIndex For XS = 0 To LstS.ListCount - 1 LstS.SetFocus LstS.ListIndex = XS LstS.Selected(XS) = True Dim reportName As String Dim reportCriteria As String If LstG.Value = 4 Then reportName = "E1" reportCriteria = "SID=" & LstS.Value ElseIf LstG.Value = 5 Then reportName = "E2" reportCriteria = "SID=" & LstS.Value Else reportName = "E3" reportCriteria = "SID=" & LstS.Value End If DoCmd.OpenReport reportName, acViewPreview, , reportCriteria, acHidden DoCmd.OutputTo acOutputReport, reportName, acFormatPDF, Application.CurrentProject.Path & "\Mail\Report - " & LstC.Column(1) & " - " & LstS.Column(4) & " " & LstS.Column(5) & ".pdf" DoCmd.Close acReport, reportName, acSaveNo reportName = "E-Comments A-ZFull" reportCriteria = "SID=" & LstS.Value DoCmd.OpenReport reportName, acViewPreview, , reportCriteria, acHidden DoCmd.OutputTo acOutputReport, reportName, acFormatPDF, Application.CurrentProject.Path & "\Mail\Comment - " & LstC.Column(1) & " - " & LstS.Column(4) & " " & LstS.Column(5) & ".pdf" DoCmd.Close acReport, reportName, acSaveNo Next XS Next XC Next XG MsgBox "All reports exported", vbOKOnly, "Exported Successfully" End If
د.كاف يار قام بنشر مارس 10, 2021 قام بنشر مارس 10, 2021 (معدل) في ٨/٣/٢٠٢١ at 19:02, ahmad_3011 said: السلام عليكم ورحمة الله وبركاته اقوم بتكرار لووب على هذا الكود لكى يعمل Export PDF ولكن يعطى خطأ OutputTo PDF; The OutputTo action was canceled واحيانا اخرى قاعدة البيانات تعمل restart DoCmd.OpenReport reportName, acViewPreview, , reportCriteria, acHidden DoCmd.OutputTo acOutputReport, reportName, acFormatPDF, Application.CurrentProject.Path & "\Mail\Report - " & Lst1.Column(1) & " - " & Lst2.Column(4) & ".pdf" DoCmd.Close acReport, reportName, acSaveNo ما احتمال الخطأ أخي الكريم جرب استبدل كامل الكود بالسطر التالي DoCmd.OutputTo acOutputReport, reportName, "PDFFormat(*.pdf)", CurrentProject.Path & "\Mail\Report - " & Lst1.Column(1) & " - " & Lst2.Column(4) & ".pdf", False, "", , acExportQualityPrint تم تعديل مارس 10, 2021 بواسطه د.كاف يار
ahmad_3011 قام بنشر مارس 10, 2021 الكاتب قام بنشر مارس 10, 2021 شكرا اخى د. كاف ولكن ما زال يعطى نفس النتيجة، اعتقد الكود ليس به خطأ لانه يعمل بكفاءة اذا كان التقرير الذى يتم تصديره لا يحتوى على تقارير فرعية subreports ولكن واقع الحال ان التقرير يحتوى على اكثر من 5 تقارير فرعية واعتقد هذا هو السبب الرئيسى للمشكلة واحاول ان اضع ضمن الكود سطر يقوم بافراغ الرامات او شئ من هذا القبيل مع العلم ان me.refresh and me.requery لا يعطى نتيجة ايضا
jjafferr قام بنشر مارس 10, 2021 قام بنشر مارس 10, 2021 اخي احمد 🙂 الكود لا يوجد به مشكلة ، فبدأت بالبحث في الانترنت 🙂 الظاهر ان هذه المشكلة موجودة في الاكسس 2016 ، وليس لها علاقة بكمية المواد في التقرير ، وانما بالوقت: - في بعض نسخ 2016 ، من الوقت الذي تفتح فيه البرنامج ، الى تصدير آخر تقرير الى pdf ، اذا وصل الوقت الى 8 دقائق ، يقفل عندك البرنامج !! - وفي نسخة الاكسس في الاوفيس 365 ، الوقت هو 80 دقيقة !! والحل ، يا تنصب اوفيس اقل من 2016 ، او تنصب التحديث من هنا: Description of the security update for Office 2016: June 13, 2017 (microsoft.com) جعفر 1
ahmad_3011 قام بنشر مارس 11, 2021 الكاتب قام بنشر مارس 11, 2021 شكرا اخى جعفر على المجهود بارك الله فيك، انا استخدم اوفيس 2019 اعذرنى على الاطالة ولكن اعتقد ان الموضوع ليس له علاقة بالوقت لان نفس الكود يقوم بتصدير 2000 مرة اذا بدلت التقرير بتقرير اخر بسيط ويقوم بتصدير كل التقارير فى وقت اكثر من نصف ساعة، بفرض اخر اذا كان الحل فى الوق هل يوجد كود يقوم بعمل ايقاف مؤقت للتصدير ولنقل 10 ثوانى وبعددها يتم استئناف التصدير لكى نتغلب على مشكلة الوقت
jjafferr قام بنشر مارس 11, 2021 قام بنشر مارس 11, 2021 عفوا ، كان المفروض اقول المشكلة في 2016 فأعلى 🙂 وهذا رابط الموضوع: Access 2016 accde "DoCmd.OutputTo acOutputReport, , - Microsoft Community فهل انزلت التحديث الذي اعطيتك رابطه؟ اذا ما بينفعك ، ما بيضرك ، فجربه 🙂 في تصوري ، الموضوع محصور في: 1. البرنامج/الكود ، وما شفنا شيء خاص في الكود اللي ممكن يكون السبب ، 2. الكمبيوتر ، نعم تقدر تستخدم وندوز 64بت واكثر من 4 جيجا رام ، بحيث يصبح للاكسس اكبر قدر من الرام (الاكسس لا يستفيد من الاوفيس 64بت) ، 3. خلل في الاكسس ، وهذا ما تمت الاشارة اليه !! 58 دقائق مضت, ahmad_3011 said: ايقاف مؤقت للتصدير ولنقل 10 ثوانى وبعددها يتم استئناف التصدير لكى نتغلب على مشكلة الوقت الوقت مثل ما اخبرتك (اقرأ الرابط مال 8 صفحات اللي ارفقته لك ، فستجده مطابق لمشكلتك ، وحتى توقيف الوقت تم استخدامه) : 14 ساعات مضت, jjafferr said: من الوقت الذي تفتح فيه البرنامج ، الى تصدير آخر تقرير الى pdf اما اذا تريد تقسيم الطباعة ، فممكن تقسيمه الى: بدل For XG = 0 To LstG.ListCount - 1 For XC = 0 To LstC.ListCount - 1 For XS = 0 To LstS.ListCount - 1 استعمل For XG = Start_XG To LstG.ListCount - 1 For XC = Start_XC To LstC.ListCount - 1 For XS = Start_XS To LstS.ListCount - 1 جرب فقط في اول دوران: XG لأنها الاطول ، احفظ قيمة Start_XG في الجدول ، واعمل في نهاية الكود انه يعمل دورتين/ثلاث (هذا يعتمد على تجربتك) ، ثم يغلق البرنامج ، ثم لما تشغله من جديد كذلك يعمل دورتين/ثلاث ، ثم يغلق البرنامج ، وكل مرة Start_XG يكون فيه الرقم التالي (او اللي بعده) ، او اذا عندك اكثر من كمبيوتر ، فممكن عمل هذا بتوزيع العمل على اكثر من كمبيوتر ، وبنفس الطريقة اعلاه ، بحيث الجدول الذي تكون فيه قيمة Start_XG ، يكون مشارك في الشبكة. هل هذا الحل مثالي ، طبعا لا ، وارجع واقول ، جرب رابط التحديث قبل كل شيء 🙂 جعفر 1
ahmad_3011 قام بنشر مارس 11, 2021 الكاتب قام بنشر مارس 11, 2021 اخى جعفر شكرا جزيلا على الرد المفصل 😃 جزاك الله كل خير نزلت التحديث بالفعل بس تم رفضه لانه لاصدار اقدم وساجرب موضوع Start_X مع انى مش مستوعب موضوع قفل البرنامج الحقيقة كنت افضل ان لو فيه احتمال افضل من قفل البرنامج لانه هيحتاج افتحه بشكل يدوى. تحياتى لحضرتك
jjafferr قام بنشر مارس 11, 2021 قام بنشر مارس 11, 2021 53 دقائق مضت, ahmad_3011 said: لانه هيحتاج افتحه بشكل يدوى ممكن تعمله بشكل تلقائي : اعمل نسخة من البرنامج ، واجعل هذه النسخة لهذه التقارير فقط ، ولنسميه Export_pdf.accdb ، اعمل ماكرو بإسم Export_pdf ، وفيه يكون امر للتقرير انه يشغل تقرير تصدير ملفات pdf ، في التقرير اعمل امر لكي يقفل البرنامج (طبعا بعد ان يحفظ قيمة Start_X في الجدول) ، الآن اعمل برنامج آخر خارجي لا علاقة له ببرنامجك اعلاه ، واعمل نموذج بفتح لما يغمل البرنامج ، اعمل حدث عند تحميل النموذج ، وخلي فيه هذا الكود: dim i as integer for i = 1 to 10 shell_n_wait "C:\Program Files\Microsoft Office\OFFICE12\MSACCESS.EXE" "C:\xx\Export_pdf_files.accdb" /x Export_pdf , vbhidden next i docmd.quit الدالة shell_n_wait موجودة في البرنامج الموجود في اول مشاركة لي ، اما الرقم 10 فهي قيمة (LstG.ListCount - 1) جعفر
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.