PDA

View Full Version : گزارشگيري تنها از فيلدهاي پُر



DlphIran
سه شنبه 24 شهریور 1388, 11:47 صبح
سلام

من از Adoquery و SQLserver 2000 استفاده مي كنم.

در قسمت گزارشگيري كه من با quickreport‌ كار ميكنم در باند detail اطلاعاتي هست كه بايد به تعداد ركورد جدول پرينت كرد، متني كه بايد چاپ بشه بصورت زير هست:

قرآن آموز [فيلد اسم قرآن آموز] فرزند [ فيلد فرزند ] با كد ملي شماره [ فيلد كد ملي ]
و غيره

حالا سوال من اينه كه بايد در صورتيكه فيلد فرزند خالي بود كلا عنوان فرزند و عنوان فيلد خالي فرزند برداشته بشه و كد ملي بياد بعد از فيلد اسم قرآن آموز . آيا ميشه اينجور كاري كرد؟

در ضمن اين خالي بودن مثلا فيلد فرزند براي همه نيست يكي ممكنه فيلد فرزندش پر باشه يكي خالي.

hadisalahi2
سه شنبه 24 شهریور 1388, 12:25 عصر
پشنهاد من اینه که دوتا فرم گزارش گیری درست کنی و در صورت خالی بودن فیلدهای مورد نظر، فرم دوم گزارش نمایش داده بشه.
در غیر این صورت کار به این سادگی نیست و باید دستی کد بنویسی و کامپوننت های داخل گزارش رو دستی جابجا و یا مخفی کنی

Tiam121
چهارشنبه 25 شهریور 1388, 20:28 عصر
دوست عزیز اگه فوضولی نباشه فکر کنم راه بهتری هم باشه و اون اینکه در صورت خالی بودن فیلد visible این شی ها رو false کنی و در غیر اینصورت visible اونها true باشه

hadisalahi2
پنج شنبه 26 شهریور 1388, 14:30 عصر
دوست عزیز اگه فوضولی نباشه فکر کنم راه بهتری هم باشه و اون اینکه در صورت خالی بودن فیلد visible این شی ها رو false کنی و در غیر اینصورت visible اونها true باشه
خوب منم که همین رو گفتم؟

bootshow
جمعه 27 شهریور 1388, 17:01 عصر
دوست عزیز اگه فوضولی نباشه فکر کنم راه بهتری هم باشه و اون اینکه در صورت خالی بودن فیلد visible این شی ها رو false کنی و در غیر اینصورت visible اونها true باشه
البته تمام فیلدها را باید در یک panel بزاری و align هر فیلد را هم تنظیم کنی تا وقتی visible را تغییر میدی جای فیلدها هم تغییر کنند.
تمام اینکار ها را همونطور که میدونی باید در onneeddata انجام بدی.

ح.جبل عاملی
یک شنبه 05 مهر 1388, 16:05 عصر
دوست عزیز بهترین راه اینه که یه QrLabel بجای کل عبارت بگذاری و در خاصیت OnPrint مقدار اونو با هر 6 مقدار عناوین و فیلدها پر کنی.مثلا:



if Table1.FieldByName('Farzand').Asstring<>'' then
Value:=' قران اموز '+Table1.FieldByName('QAmooz').Asstring+' فرزند '+Table1.FieldByName('Farzand').Asstring+' با كد ملي شماره '+Table1.FieldByName('MeliCod').Asstring
else
Value:=' قران اموز '+Table1.FieldByName('QAmooz').Asstring+' با كد ملي شماره '+Table1.FieldByName('MeliCod').Asstring;

hadisalahi2
دوشنبه 06 مهر 1388, 16:10 عصر
دوست عزیز بهترین راه اینه که یه QrLabel بجای کل عبارت بگذاری و در خاصیت OnPrint مقدار اونو با هر 6 مقدار عناوین و فیلدها پر کنی.مثلا:


if Table1.FieldByName('Farzand').Asstring<>'' then
Value:=' قران اموز '+Table1.FieldByName('QAmooz').Asstring+' فرزند '+Table1.FieldByName('Farzand').Asstring+' با كد ملي شماره '+Table1.FieldByName('MeliCod').Asstring
else
Value:=' قران اموز '+Table1.FieldByName('QAmooz').Asstring+' با كد ملي شماره '+Table1.FieldByName('MeliCod').Asstring;


دوست عزیز مگه ما با یک رکورد طرفیم که بخواهیم این کار رو انجام بدیم.

ghasemshami
پنج شنبه 09 مهر 1388, 09:37 صبح
دوست عزیز Tiam121 طبق سوال دوستمون گفت که فیلد سوم در صورت خالی بودن فیلد دوم به فیلد اول بچسبه پس نمیشه با مخفی کردن فیلد دوم این کار رو انجام داد
بهترین راه برای این کار اینه که دو تا فرم گزارش گیری جداگانه درست کنی و با یک If نمایش هر گزارشی را تشخیص بدی

چون quickreport‌ انعطاف پذیری پائینی داره به همین خاطر هستش که نمیشه هم چنین کاری انجام داد اما با ابزارهای دیگه مثل Fast Report میشه انجام داد