PDA

View Full Version : سوال: چاپ فاکتور



ablofazlkianianboohi
دوشنبه 10 تیر 1392, 10:56 صبح
سلام دوستان
ما تو شرکتمون فاکتور داریم و می خوایم فاکتورهامون کامپیوتری باشه. یعنی متن های کامپیوتری باشه. حالا بنده آشنایی با VB دارم.چندتا سوال داشتم از خدمتتون:

1- چطور سایز فرم رو به A4 و حالت افقی تبدیل کنم؟
2- چطور موقع پرینت سایز پرینت رو A4 کنم؟

m.4.r.m
دوشنبه 10 تیر 1392, 11:00 صبح
به سایز فرم دخالتی نداره عزیز شما زمان چاپ باید تعیین کنید که چه اندازای باشه که حالت نرمال DataReport ویژوال بیسیک هم روی A4 هست اگه بخوای زیاد پاپیچ چاپ بشی به Crystal Report بری خیلی خوبه
سوال دوم هم گفتم حالت عادی در A4 هستش

ablofazlkianianboohi
دوشنبه 10 تیر 1392, 11:22 صبح
ممنون از راهنماییتون
آخه مشکل بنده اینجاست که باید سایز A4 رو روی فرم حتما ببینم. چون باید فاکتور باشه تا Textbox ها رو روش جانمایی کنم.
برای این چه کنم؟

m.4.r.m
دوشنبه 10 تیر 1392, 11:25 صبح
شما احتیاجی به 10 یا 20 تا تکست باکس ندارین که بیاین همه رو تو فرم جا بدین برای هر فیلد یک تکست باکس میزارین و در پایگاه داده ذخیره می کنین بعد میاین اونا باهم دیگه کلا تو چاپ نشون میدین

ablofazlkianianboohi
دوشنبه 10 تیر 1392, 12:37 عصر
دوست عزیز
فکر کنم بد توضیح دادم ...
فاکتور من عکس هست. یعنی تو فتوشاپ طراحی شده و حالا می خوام عکسش رو بیارم تو VB. جاهایی مثل شرح کالا، قیمت،تعداد و ... رو می خوام Textbox بزارم تا کاربر تکمیل کنه و چاپ بشه. برای راحتی کار داریم این کار رو می کنیم.

alipoor2009
دوشنبه 10 تیر 1392, 12:46 عصر
آها حالا شد
اینم کد چاپ
Printer.PaperSize = vbPRPSA4
'Printer.Orientation = 1 'اگه خواسته باشي عمودي باشه
'Printer.Orientation = 2 ' اگه خواسته باشي افقي باشه

Me.PrintForm
Cls
Printer.KillDoc
Unload Me


سایز چاپ رو هم می تونی خودت تغییر بدی
واسه A4 :
Printer.PaperSize = vbPRPSA4
واسه A5 :
Printer.PaperSize = vbPRPSA5

البته افقی و عمودی بودن رو می تونی اینجوری هم تعریف کنی
عمودی:
Printer.Orientation = vbPRORPortrait
افقی :
Printer.Orientation = vbPRORLandscape

ablofazlkianianboohi
دوشنبه 10 تیر 1392, 13:46 عصر
ممنون از alipoor2009
دستوراتی که فرمودید برای زمان پرینت هست.
من الان فرم رو چطور به سایز A4 تغییر بدم که عکسم رو توش قرار بدم و بعد Textbox ها رو سرجاش بزارم؟؟؟

alipoor2009
دوشنبه 10 تیر 1392, 14:24 عصر
خوب با این برنامه می تونید تبدیل twip to pixel را انجام بدین

ablofazlkianianboohi
دوشنبه 10 تیر 1392, 14:38 عصر
یه مشکلی هست که با سرچ تو نت هم متوجه شدم
اون هم اینکه وقتی شما سایز A4 رو به فرم می دی، چون سایز A4 به لحاظ پیکسلی از صفحه نمایش بیشتر هست، فرم حداکثر به اندازه صفحه نمایش بزرگ میشه.
اینو نمی دونم چه کارش می شه کرد

بعد یه چیزی
این اندازه هایی که شما دادین از کجا آوردین؟
سایز A4 به پیکسل به صورت زیر هست:
2480X3508
که برای VB باید به twips تبدیل بشه.
من به twips هم تبدیل کردم که مشکل بالا پیش اومد . چه پیشنهادی دارید؟

alipoor2009
دوشنبه 10 تیر 1392, 14:51 عصر
اینو یه امتحان کن :
i = Screen.Width
j = Screen.TwipsPerPixelX
k = i \ j
x = Screen.Height
y = Screen.TwipsPerPixelY
z = x \ y

ScreenResolution = k & " (" & i & " @" & j & ") X " & z & " (" & x & " @" & y & ")"

ablofazlkianianboohi
دوشنبه 10 تیر 1392, 14:59 عصر
اینو یه امتحان کن :
i = Screen.Width
j = Screen.TwipsPerPixelX
k = i \ j
x = Screen.Height
y = Screen.TwipsPerPixelY
z = x \ y

ScreenResolution = k & " (" & i & " @" & j & ") X " & z & " (" & x & " @" & y & ")"

این چی کار می کنه ؟
من تو Load فرم گذاشتم اما جواب نداد.

حالا یه چیزی به ذهنم رسیده :
1- واحد اندازه گیری کنترل image چیست؟ چون من سایز A4 رو به twips میزنم یکم بزرگ میشه. واضح هست که A4 نیست.

2- چطور از Textbox ها در Data report استفاده کنیم؟ بدون اینکه اطلاعاتی در Database درج بشه.
چون تو Data report خیلی راحت به A4 تبدیل میشه.

alipoor2009
دوشنبه 10 تیر 1392, 15:08 عصر
تو Picturebox می تونی تو گزینه Scale Mode هر چی دوست داری انتخاب کنی ولی پیش فرض twips

بله می شه بدون داده هم این کار رو تو Data report انجام بدی یه مثال واست می زنم:

Datareport1.Sections("Section4").Controls.Item("Label1").Caption =me.text1
Datareport1.Sections("Section1").Controls.Item("Label2").Caption = me.text2
Datareport1.show

m.4.r.m
دوشنبه 10 تیر 1392, 15:14 عصر
این همه کش و قوس لازم نیست شما تصویر رو بده برات درست کنیم بدیم ، در ضمن از ایکسل استفاده می کردی واسه یه چیز ساده بهتر از این بود . بازم اگه ضروری باشه تصویر رو بزار اینجا برات درست کنیم

ablofazlkianianboohi
دوشنبه 10 تیر 1392, 15:22 عصر
بله. تصویر رو گذاشتم. می خوام بخش مشخصات فروشنده به ازای هر آیتم یک Textbox باشه.
106430
در ضمن Alipoor2009 عزیز بعد از دستورات بالا Error :
Invalid Data Source
رو می گیرم

alipoor2009
دوشنبه 10 تیر 1392, 15:24 عصر
البته با نظر m.4.r.m موافقم - واقعا منم گیج شدم و نفهمیدم چی می خوای ؟؟

ablofazlkianianboohi
دوشنبه 10 تیر 1392, 15:27 عصر
تصویر قرار داده شد. می خوام به ازای آیتم های بالا Textbox بسازم

m.4.r.m
دوشنبه 10 تیر 1392, 15:30 عصر
این فاکتور شما باDatareport جواب نمیده برای اینکه یکم اگر عرض datareport رو بزرگ کنین بهتون خطا میده شما یا باید از Crystal استفاده کنی که بهترین گزینه است و راحت می تونین همه گزینه هاشو پر کنین

alipoor2009
دوشنبه 10 تیر 1392, 15:35 عصر
نه تنها تو Data Report بلکه تو فرم هم کار باهاش سخته و فقط کریستال ریپورت می تونه جواب بهتون بده

m.4.r.m
دوشنبه 10 تیر 1392, 15:38 عصر
اینو تست کن
http://www.sourcegozar.com/%D8%B3%D9%88%D8%B1%D8%B3-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1-%D8%AE%DB%8C%D8%A7%D9%85/

vbhamed
دوشنبه 10 تیر 1392, 16:21 عصر
سلام
چيزي كه مي‌خواين قابل انجام هست ولي بهتره همين الان از اينكار منصرف بشيد و بريد سراغ نرم افزارهاي گزارشگر
Active Report, Crystal Report, Fast report

armagram
چهارشنبه 19 تیر 1392, 00:04 صبح
سلام
چطور میشه واسه این فرم یه دکمه پرینت بزارم و اینکه چطور دقیق جاهای خالی رو روی کاغذ اصلی پر می کنه؟ اصلا می شه همچین کاری کرد؟106970

miladatashin
چهارشنبه 19 تیر 1392, 01:16 صبح
من کامل متوجه هستم شما میخواهید چی کار کنید.(چند سال پش خودم درگیرش بودم) پیشنهاد من به شما استفاده از یکی از این دو راه هست
اول اینکه اندازه فرم رو میشه بزرگتر از صفحه گرفت. باید borderstyle فرم رو none قرار بدین و بعد از اون مقدار height فرم رو دستی از تو properties فرم هر چی دوست داشتی بدی
این روش یک بدی داره. دیگه نباید این فرم رو نمایش بدی یعنی مثلا ننوسی FormPrint.show و فقط لودش کنی و پرینت ازش بگیری مثلا

load FormPrint
FormPrint.PrintForm

روش دوم از picturebox استفاده کنید چون محدودیت اندازه ندارین و میتونید اسکرل هم واسش بزارید. و داخل اون آبجکت ها رو بگزارید و در نهایت picturebox به همراه هر چی داخلش هست رو تبدیل به عکس کنید و ازش پرینت بگیرید. این روشم یک بدی کوچیک داره اونم این که کیفیت پرینت یک مقدار ناچیزی کم میشه. البته خیلی محسوس نیست

در ضمن در مورد ابعاد از خاصیت scalemode میتونید تشخیص بدین اندازه فرم و یا ابجکت های دیگه شما چند سانتیمتر هست فقط لازمه اونه بزارید رو centimeter ولی بعد از اینکه کارتون باهاش تموم شد دوباره بزاریدش رو همون twip
به نظر من اگه خیلی فاکتورهاتون زیاد نیست وساده هست اصلا نیازی نیست درگیر ریپرتر ها بشی و میشه خیلی راحت انجامش داد

m.4.r.m
چهارشنبه 19 تیر 1392, 13:13 عصر
بابا از این ساده تر مگه چیز دیگه ای هم هست ؟ مگه این اطلاعات فرم شما داخل دیتابیس ذخیره نمیشن ؟ حوب اگه ذخیره میشن که راحت با یک رابط گزارش گیر می تونی اطلاعات رو به چاپ ارسال کنی دیگه انقدر سوال لازم نیست اگه بلد نیستی سورس برنامتو بزار اینجا برات تصحیح کنم.

armagram
پنج شنبه 20 تیر 1392, 18:51 عصر
ممنون از راهنماییتون ، الان با مشورت هایی که گرفتم به این نتیجه رسیدم که باید یه دیتابیس بسازم هر چند که اطلاعات رو دیگه لازم ندارم و از کریستال ربپورت استفاده کنم. بیشتر به فکر استفاده از یه برنامه بدون دیتابیس بودم .

armagram
سه شنبه 25 تیر 1392, 00:10 صبح
یه سوال دیگه اینکه من الان آموزش کریستال ریپورت + آموزش اس کیو الو گرفتم که حجم زیادیم داره.امکانش هست راهنمایی کنید تو این مورد من چه مبحثایی رو بخونم و یاد بگیرم چون حجم کل این فیلما زیاده زمان زیادی ازم می گیره.

m.4.r.m
سه شنبه 25 تیر 1392, 00:12 صبح
951 کیلوبایت

http://www.mspsoft.com/1389/12/17/%D9%85%D9%82%D8%A7%D9%84%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-crystal-report-%D8%AF%D8%B1-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%A8%DB%8C%D8%B3%DB%8C%DA%A9/

armagram
یک شنبه 13 مرداد 1392, 14:32 عصر
من با کریستال ریپورت به مشکل خوردم . چه طوری این فرم بارنامه رو توی کریستال ریپورت طراحی کنم؟

m.4.r.m
یک شنبه 13 مرداد 1392, 16:20 عصر
آموزش کار با کریستال ریپورت خیلی زیاده جست و جو کن پیدا می کنی بگرد نتونستی پیدا کنی اعلام کن برات آموزش میدم

armagram
یک شنبه 13 مرداد 1392, 17:05 عصر
فیلم آموزشی دانلود کردم کتابم گرفتم اما تو هیچکدوم چیزی که من می خوامو پیدا نکردم

vbhamed
پنج شنبه 17 مرداد 1392, 04:30 صبح
سلام
اين فرم شما برخلاف ظاهرش چيز سختي نيست فقط تعداد فيلدهاش زياده، يك گزارش ساده Master/Details هست
كل بالاي گزارش با خود ليبل هاي رديف، كد كالا و ... تو Page Header هستن، رديفهاي خالي فاكتور در قسمت Details و از رديف جمع تا آخر هم در Page Footer

moeinmohebbi
پنج شنبه 17 مرداد 1392, 13:55 عصر
سلام دوستان
من تو ویژوال استودیو این ارور رو دارم

Error 22 The type or namespace name 'CrystalDecisions' could not be found (are you missing a using directive or an assembly reference?) E:\My Project\Autobar\Autobar\bin\Debug\Factor.cs 69 16 Autobar

یه فاکتور با کریستال ریپورت (2011)درست کردم، وقتی اجرا می‌کنم 22 تا از این ارورها دارم، آیا مشکل از کریستال ریپورته؟

m.4.r.m
جمعه 18 مرداد 1392, 19:13 عصر
ورژن کریستال ریپورت شما فرق کرده یا کریستال ریپورت در سیستم نصب نیست . یا کریستال ریپورت موجود در فرم Factor.cs با کریستال ریپورت نصب شده متفاوت است . باید هر کدام رو جدا بررسی کنید . البته این سوال رو در بخش مربوط به دات نت بپرسید زودتر جواب میگیرید .
یه آموزش ساده تو این پست گذاشتم که خودم درست کردم می تونی استفاده کنی انشالله یه آموزش جامع با ویژوال بیسیک با کریستال ریپورت رو براتون آماده می کنم .
http://barnamenevis.org/showthread.php?412346-%D9%85%D8%B4%D9%83%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%D9%87-%D9%81%D8%B1%D9%85-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%D9%83%D8%B1%D9%8A%D8%B3%D8%AA%D8%A7%D9%84-%D8%B1%D9%8A%D9%BE%D9%88%D8%B1%D8%AA

armagram
چهارشنبه 06 شهریور 1392, 19:03 عصر
بازم با کریستال ریپورت به مشکل خوردم. بعد از اینکه اطلاعات رو برای بار دوم و سوم و... وارد دیتا بیس می کنم وقتی تو حالت preview میام برای پرینت گرفتن با اینکه رکورد های قبلی رو حذف کردم اما همچنان اطاعاتی که بار اول وارد کردم رو توی کریستال نمایش می ده و آماده ی پرینت شدنه.کسی می دونه مشکل از کجاست؟

m.4.r.m
شنبه 09 شهریور 1392, 12:02 عصر
باید اطلاعات رو هر بار بعد از خودن رفرش کنی . همین

vbhamed
یک شنبه 10 شهریور 1392, 09:26 صبح
سلام
كريستال يك گزينه تحت عنوان Save Data with Report داره كه در منوي File هستش (البته در ورژن 9)
اين گزينه رو غير فعال كنيد