الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في طباعة التقارير

بدأه medreg في 14 أبريل 2009 · 10 رد · 2,301 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

كيف حالك إن شاء الله دائمــاً بخير ؟

1- ما هي الوسيلة التي تتخذ لجعل جدول Query = Active برمجيًا على Quickreport

لآنن عندما أضغط على Query وفي الحدث Active أعطيه القيمة True

أجده في بعض الأحيان رجع إلى قيمة False

2- لدي زر في أحد النوافذ يحمل هذا الكود

procedure TForm4.BitBtn7Click(Sender: TObject);

begin

DM.Table1.First;

while not (DM.Table1.Eof) do

begin

DM.Table1.Delete;

end;

DM.Query1.Close;

DM.Query1.Open;

end;

عندما أضغط عليه لمسح ما بداخل الجدول تنفذ العملية بنجاح

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

وبعدها أضغط على زر أخر والمتعلق بالطباعة أجد كل المعطيات باقية على Quickreport رغم أنني حذفتها من الجدول

علما بأنني رابط Quickreport بـ مكون Query1 الموجود على Quickreport

وفي الحدث Quickreport1BeforePrint هذا الكود

procedure TForm5.QuickRep1BeforePrint(Sender: TCustomQuickRep;

var PrintReport: Boolean);

begin

with DM do begin

TDArtFct.open;

end;

end;

وفي الحدث OnCreat هذا الكود

procedure TForm5.FormCreate(Sender: TObject);

begin

Query1.Close;

Query1.Open;

end;

إذا ما العمل

تم تعديل هذه المشاركة بواسطة medreg في 14 أبريل 2009 في 23:04

#2

السلام عليكم

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

أقترح عليك أن تضيف أمر التحديث في زر الطباعة

begin

Query1.Close;

Query1.Open;

end;

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

ربطك الحقول بعناصر الصفحة Quickreport.

حيث يمكنك من خلالها تفعيل أوعدم تفعيل الجدول فقط راقب ما تقوم به جيدا.

تم تعديل هذه المشاركة بواسطة tahasit في 15 أبريل 2009 في 09:35

986902102.jpg
#3
tahasit كتب:
السلام عليكم

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

أقترح عليك أن تضيف أمر التحديث في زر الطباعة

begin

Query1.Close;

Query1.Open;

end;

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

ربطك الحقول بعناصر الصفحة Quickreport.

حيث يمكنك من خلالها تفعيل أوعدم تفعيل الجدول فقط راقب ما تقوم به جيدا.

شكرًا جزيلاً لقد تمت العماية بنجاح وهذا كله بفضل مجهوداتكم جزاكم الله عنا كل خير

أما الأن فعندي طلب آخر ويتمثل في طباعة في نموزج خاص

لدي وثيقة تحتوي على 15 سطر أو سجل ولا يمكن تجاوز عدد السجلات الموجدة بها

وإن كانت السجلات أقل من 15 سجل فيجب أن تظهر السطور الباقية في الوثيقة إلا أنها تكون فارغة

1- كيف يمكنني تحديد عدد السجلات في كل صفحة

2- كيف يمكنني أن أطبع السجلات على الورقة ولنفرض أن عدد السجلات أقل من 15 سطر أو سجل على أن تظهر السطور الباقية فارغة

في هذا المرفق مثال إلا أنه محدد ب 5 سجلات فقط كمثال

Impression.rar

#4

السلام عليكــم ورحمـة الله وبركاتــه ،،

أولا أخي الكريم لست مظطرا لوضع QRShapeبهذا الشكل لاحظ الصورة

post-145519-1240044976_thumb.png

لاحظ الصورة التالية

post-145519-1240045305_thumb.png

أرجو أن تفي الصورة بالغرض

أما بالنسبة لظهور السجلات فارغة في صفحة الطباعة فلا أعلم بعد الحل ولكني سأبحث وأوافيك بالنتائج

وسأرفق لك مشروعك بعد إجراء التعديلات عليه

تم تعديل هذه المشاركة بواسطة tahasit في 18 أبريل 2009 في 12:41

986902102.jpg
#5

كنت أود أن اقوم بالتعديلات على مشروعك ولكن إختلطت الأمور علي

لذا أرفقت لك هذا المشروع الذي كنت قد وعدت به أحد الإخوة المشرفين

وأرجو أن يستفيد منه الجميع وخاصة أنت أخي الكريم

تفحص المشروع جيدا فهو يشمل عدة نقاط مهمة

banau_tahasit.rar

986902102.jpg
#6
tahasit كتب:
كنت أود أن اقوم بالتعديلات على مشروعك ولكن إختلطت الأمور علي

لذا أرفقت لك هذا المشروع الذي كنت قد وعدت به أحد الإخوة المشرفين

وأرجو أن يستفيد منه الجميع وخاصة أنت أخي الكريم

تفحص المشروع جيدا فهو يشمل عدة نقاط مهمة

شكرً على تعاونكم معنا

يأخي انا لم افصد الطباعة بشكل عام هذه شيئ معروف

ولكن المقصود هو كما أشرت في موضع طباعة تفرير من نوع خاص

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

هذه الورقة يوجد بها جدول يتكون من 15 سطر و06 أعمدة

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

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

لقد اجريت محاولة بهذا المرفق بمثال لورقة تحمل جدول يتكون من 05 سطور و06 أعمدة

لكن المشكل هو إذا كان عدد السجلات 03 مثلا يصبح الجدول في الورقة يساوي سبع سجلات اي الثلاثة وابع سطور فارغة

والمفروض ظهور 03 سجلات وسطرين فقط فارغة

انظر الى المرفق وحاول ان تفهم ما اقصده بالضبط

وايضا هل هناك كود لتحديد عدد التسجيلات في كل صفحة

واقصد إذا كان عدد السلات أكثر من 05 ينتقل الى الصفحة الموالية

وجزاكم الله عنا كل خير

Impression.rar

Impression.rar

#7

السلام عليكم...

أولاً أعتذر لأني لا أحب كثيراً رفع المرفقات (نوع من الكسل)، لهذا أرجو أن تتحمل عناء نسخ الكود!! و آسف مرة أخرى.

بالنسبة إلى تحديد عدد السجلات في الصفحة الواحدة فاستعمل الخطوات التالية التالي:

1. صمم منطقة الـ Detail بالطريقة العادية، أي كأنها تحتوي على سجل واحد.

2. انقر على منطقة الـ Detail و اذهب إلى الخصائص و اختر صفحة الأحداث (Events) و انقر نقراً مزدوجاً أمام الحدث BeforePrint ثم اكتب الكود التالي:

  1. procedure TFRtlForm1.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
  2. begin
  3. // اكتب الكود التالي
  4. if Table1.RecNo > 1 then begin
  5. if (Table1.RecNo mod 10) = 1 then
  6. QuickRep1.NewColumn;
  7. end;
  8. end;
  9.  

هذا كل ما تحتاج إليه مبدئياً.

توضيحات:

أ. بدل Table1 ضع اسم الـ Table أو الـ Query المرتبط به التقرير الذي تتعامل معه.

ب. بدل الرقم 10 ضع العدد الذي تريده من السجلات في الصفحة الواحدة.

ج. بدل QuickRep1 ضع اسم التقرير الذي تتعامل معه.

د. بدل NewColumn يمكن استعمال NewPage لكن حسب تعليمات QuickReports يفضل استعمال NewColumn (مع بعض الشرح الإضافي لا داعي لذكره).

* بالنسبة إلى إكمال الصفحة بأسطر فارغة إذا كان عدد السجلات أقل من العدد المسموح به في الصفحة الواحدة فأنا أستعمل طريقة لطباعة فواتير ذات حجم ثابت (و تظهر بها الأسطر الفارغة كما تريد في سؤالك)، و هي إنشاء جدول خاص لهذا التقرير (في قاعدة البيانات طبعاً)، ثم نسخ السجلات التي تريد طباعتها إليه، ثم إضافة سجلات فارغة في نهاية الجدول بحيث يتناسب عدد السجلات مع العدد الذي تريده في الصفحة الواحدة، مثلاً إذا كنت تريد 15 سجلاً في الصفحة فيجب أن يكون عدد السجلات في الجدول 15 أو 30 أو 45 أو 60 ... إلخ. (لا تنس إفراغ هذا الجدول المؤقت قبل أن تضيف إليه السجلات في كل مرة).

للمساعدة يمكن استعمال كود شبيه بالتالي:

X := TableX.RecordCount mod 15

إذا كانت قيمة X صفراً فإننا لا نحتاج إلى إضافة سجلات فارغة.

أما إذا كانت غير الصفر فإن عدد السجلات الفارغة التي سنضيفها هو:

NewRecs = 15 - X

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#8
najy_zl كتب:
السلام عليكم...

* بالنسبة إلى إكمال الصفحة بأسطر فارغة إذا كان عدد السجلات أقل من العدد المسموح به في الصفحة الواحدة فأنا أستعمل طريقة لطباعة فواتير ذات حجم ثابت (و تظهر بها الأسطر الفارغة كما تريد في سؤالك)، و هي إنشاء جدول خاص لهذا التقرير (في قاعدة البيانات طبعاً)، ثم نسخ السجلات التي تريد طباعتها إليه، ثم إضافة سجلات فارغة في نهاية الجدول بحيث يتناسب عدد السجلات مع العدد الذي تريده في الصفحة الواحدة، مثلاً إذا كنت تريد 15 سجلاً في الصفحة فيجب أن يكون عدد السجلات في الجدول 15 أو 30 أو 45 أو 60 ... إلخ. (لا تنس إفراغ هذا الجدول المؤقت قبل أن تضيف إليه السجلات في كل مرة).

********************************************

جزاكم الله عنا كل خير

وأرجوا أن تعذروني هذا حد فهمي وارجو ان لا تمل من اسئاتي هذه

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

وهنا اقول لك لا بد من وضع مثال مرفق زاقول لك ايضًا الله يصبرك علينا هذا هو حد علمنا

**********************************************

للمساعدة يمكن استعمال كود شبيه بالتالي:

X := TableX.RecordCount mod 15

إذا كانت قيمة X صفراً فإننا لا نحتاج إلى إضافة سجلات فارغة.

أما إذا كانت غير الصفر فإن عدد السجلات الفارغة التي سنضيفها هو:

NewRecs = 15 - X

***************************************

أما عن الكود فاين يوضع ويا حبذا لو اضفته على المثال

نرجو الاستفادة و السلام.

وأعتذر مرة أخرى إن أسريت على ارفاقك لي بمثال على ما تفضلت به

وارجو ارفاقه واسمح لي عن إلحاحي هذا بهذا الطلب

تم تعديل هذه المشاركة بواسطة medreg في 19 أبريل 2009 في 09:49

#9

السلام عليكــم ورحمـة الله وبركاتــه ،،

أظن أن الأخ قد أجاب على تساؤلاتك

أما بالنسبة لي فقد أجبتك على حسب ماأعرف

والله لا يوجد شيئ أفضل من النقاش حول موضوع ما من أجل التعلم وأخذ الفائدة

بارك الله فيكم جميعا

986902102.jpg
#10

بســم الله الـرحمــن الرحيــم

ربما أدركت ما تقصده من إنشاء جدول خاص بالتقرير وقاعدة بيانات خاصة

لقد أنشأت جدول خاص و سميته TTemp وقاعدة بيانات سميتها DMTemporaire.DB

و وضعت فيه نفس الحقول الموجودة بالجدول T1 التابع لقاعدة البيانات dm.db

واستعملت نافذة أخرى ووضعت فيها مكون DBGrid خاضع للجدول TTemp

واضفت مكون BatchMove1ووضعت في الخاصية Source الجدول T1 وفي الخاصية Destination الجدول TTemp

وفي الخاصية Mode الإختيار batAppendUpdate

لكن المشكلة هو عندما أحذف سطر أو سجل من DBGrid التابع للجدول TTemp أجده قد حذف أيصًا من DBGrid التابع للجدول T1

فماذا يجب علي فعله

وما هو الكود الذي استعمله حتى افرغ الجدول TTemp من دون ما يفرغ الجدول T1

وجزاكم الله عنا كل خير

#11

بســم الله الـرحمــن الرحيــم

ألف مبروك .. علينا وعليكم دخول هذا الشهر الكريم

اما بعد

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

كل هذه الحلول التي قدمت لا تفي بالغرض المطلوب

ما أطلبه هو كود لتحديد عدد السطور اوالتسجيلات المطلوب ظهورها وا يكون الكود على الشكل التالي

إذا كان عدد السجلات الموجودة في الجدول هي 5 سجلات فقط يجب اضافة 10 سطور في الكويكربور فارغة لإكتمال عدد السطور المطلوبة وهو 15 سطر

وإذا كان عدد السجلات الموجود في الجدول هو أكثر من 15 ولنفرض ان العدد 20 فالمطلوب إظهار 15 سطر او سجل منه ثم ينتقل للصفحة الثانية ويصع فيها 5 سجلات الباقية مع إضافة 10 سطور اخرى فارغة هذا هو المطلوبارجو المحاولات في حل هذه المعضلة

مواضيع مشابهة