ورود

View Full Version : تهیه کارت شناسایی از دو رکورد به طور همزمان



neda_dela
شنبه 31 اردیبهشت 1390, 15:28 عصر
با سلام به دوستان خوبم
من در حال حاضر می تونم برای یک رکورد در بانکم کارت شناسایی بگیرم اون هم توی یک برگه A5
حالا چون اندازه این برگه برای اطلاعات یک نفر زیاده می خام این برگ رو برای 2 رکورد استفاده کنم. تصاویر و کد ها رو ضمیمه کردم
لطفا کمک کنید...
یعنی اینکه نصف A5 برای یک نفر و نصف دیگه اش برای یه نفر دیگه چاپ بشه
آیا میشه از همون ابتدا برگه A5 رو نصف کرد و در پرینتر گذاشت؟ و برای یه نفر پرینت گرفت (پرینتر معمولیه و در حالت عادی برگه A4 پرینت می گیره)
کدهایی که در حال حاضر نوشتم به قرار زیره:
این کدها در لود فرمی قرار داره که شی کرستال ریپورت رو توش گذاشتم:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace quran
{
publicpartialclassreport_pclass : Form
{
string term;
string year;
string sath;
int code;
public report_pclass(string trm, string yr, string st, string cd)
{
term = trm;
year = yr;
sath = st;
code = Convert.ToInt32(cd);
InitializeComponent();
}
privatevoid report_pclass_Load(object sender, EventArgs e)
{
try
{
SqlConnection Conn = newSqlConnection("Data Source=.;Initial Catalog=quran;Integrated Security=True");
string StrSelect = "SELECT [st-shakhsi].firstname, [st-shakhsi].lastname, [st-shakhsi].id, [st-shakhsi].fname, [st-shakhsi].pic, [st-sabt].sath, [st-sabt].term, [st-sabt].years, [st-sabt].days, [st-sabt].sath, [st-sabt].educator, [st-sabt].clock, [st-sabt].days, [st-sabt].classnum FROM [st-shakhsi] INNER JOIN [st-sabt] ON [st-shakhsi].id = [st-sabt].id WHERE ([st-sabt].term = '" + term + "') AND ([st-sabt].years = '" + year + "') AND ([st-sabt].sath = '" + sath + "') AND ([st-shakhsi].id = '" + code + "')";
SqlDataAdapter DA = newSqlDataAdapter(StrSelect, Conn);
quranDataSet DS = newquranDataSet();
DS.Clear();
Conn.Close();
Conn.Open();
DA.Fill(DS, "t");
Conn.Close();
program_class CR = newprogram_class();
CR.SetDataSource(DS.Tables["t"]);
crystalReportViewer1.ReportSource = CR;
CR.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA5;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}
}

neda_dela
سه شنبه 03 خرداد 1390, 00:02 صبح
مهندسان عزیز شما رو به خدا به من جواب بدید
:گریه::عصبانی:

mn_zandy63
سه شنبه 03 خرداد 1390, 02:12 صبح
سلام دوست من،
با توجه به سوالت حدس میزنم مشکلت اینه که نمیدونم چه شکلی میشه یک گزارش رو چند ستونه طراحی کرد.
اگه درست حدس زدم که بقیه اش رو ببین. اگه نه، فایل گزارشت رو بذار اینجا ببینیم چی طراحی کردی و به کجا میخوای برسی.

برای طراحی یک گزارش بصورت چند ستونه، باید بری به Section Expert. (منوی Report -> Section Expert).
در قسمت سمت چپ، Details رو انتخاب کن،
در قسمت سمت راست، Format with Multiple Columns رو تیک بزن
در قسمت سمت چپ یک سربرگ اضافه میشه، با عنوان Layout.
برو به سربرگ Layout.
اینجا در قسمت Detail Size میتونی عرض هر ستونت رو به اینچ مشخص کنی. بقیه اش هم به نظرم مشخصه.
حالا عرض کاغذ A5 چقدره؟ اگه Landscape داری طراحی میکنی ۵.۸۳ و اگه Portrait طراحی میکنی ۸.۲۷، خب اینجا نصفش رو وارد کن یه کمی کمتر (بعدا میتونی دقیقتر تنظیمش کنی)، بعد از Ok کردن، میبینی که صفحه ات تقریبا دو قسمت شده، و هر چیزی که داخل قسمت سمت چپ بذاری یه کپیش داخل قسمت سمت راست دیده میشه.

باهاش سرو کله بزنی دستت میاد باید چیکار کنی.
اگه سر در نیاوردی بگو تا بیشتر توضیح بدم.

موفق باشی

neda_dela
جمعه 06 خرداد 1390, 09:35 صبح
مرسی دوستی
ببین من این سوال رو ابتدا در تالار سی شارپ پرسیدم کسی جواب نداد اونجا دو تا عکس گذاشتم ببین با این عکس ها می تونی منظورم رو بفهمی
http://barnamenevis.org/showthread.php?287456-تهیه-کارت-شناسایی-از-دو-رکورد-بصورت-همزمان&p=1267578&highlight=#post1267578
الان توی یک برگه A5 در یک سمتش کارت شناسایی هست و در یک سمت دیگه اش برنامه کلاسی شخص قرار می گیره
حالا من می خوام که این اطلاعات رو کم کنم یعنی فقط کارت شناسایی برای طرف بگیرم و در سمت دیگه برگه که طبیعتا خالی می مونه برای یک شخص دیگه کارت شناسایی بگیرم
به عبارتی اطلاعات دو نفر در هر بار پرینت روی A5 چاپ بشه

singel
شنبه 07 خرداد 1390, 09:33 صبح
سلام همون طوری که دوست عزیزمان توضیح دادن میتونید استفاده کنید یعنی در عمل شما کاغذ تون رو نصف کردید رکورد اولتون بعنوان مثال در سمت راست کاغذ و رکورد دومتون در سمت چپ کاغذ قرار میگیره
اگر نتونستید بگید تا یه سورس براتون بزارم

neda_dela
سه شنبه 10 خرداد 1390, 00:00 صبح
سلام همون طوری که دوست عزیزمان توضیح دادن میتونید استفاده کنید یعنی در عمل شما کاغذ تون رو نصف کردید رکورد اولتون بعنوان مثال در سمت راست کاغذ و رکورد دومتون در سمت چپ کاغذ قرار میگیره
اگر نتونستید بگید تا یه سورس براتون بزارم

بسیار بسیار ممنون دوست خوبم
منم دقیقا منظورم همینه
نمی دونم عکس هایی رو که از کارم گرفتم دیدید یا نه؟
من ابتدا اطلاات رکوردم رو می گیرم و بعد اونها رو نمایش میدم
حالا می خام بدونم چطوری میشه همین قضیه رو دوتش کرد یعنی اطلاعات 2 رکورد رو بگیرم اونوقت اطلاعات یکی سمت راست و اون یکی سمت چپ باشه
البته اگه بشه که برگه A5 رو هم همون ابتدا نصف کرد و درون پرینتر گذاشت و اطلاعات رو یک نفر یک نفر چاپ کرد بهتره
اینطوری میشه ؟ یعنی آیا پرینتر برگه به این کوچولویی رو قبول می کنه؟
چون اگه دو تایی باشه ممکنه که حالتی پیش بیاد که تعداد کورد های ما فرد باشه و رکورد آخری تنها بمونه و نصف برگه اونوقت سفید می مونه

singel
سه شنبه 10 خرداد 1390, 08:30 صبح
سلام یه فیلم اموزشی دارم فردا برات اپلودش میکنم

singel
چهارشنبه 11 خرداد 1390, 14:22 عصر
اینم فایلی که قولش رو داده بودم
http://persiandrive.com/421985

neda_dela
یک شنبه 15 خرداد 1390, 15:06 عصر
سلام دوست من،
با توجه به سوالت حدس میزنم مشکلت اینه که نمیدونم چه شکلی میشه یک گزارش رو چند ستونه طراحی کرد.
اگه درست حدس زدم که بقیه اش رو ببین. اگه نه، فایل گزارشت رو بذار اینجا ببینیم چی طراحی کردی و به کجا میخوای برسی.

برای طراحی یک گزارش بصورت چند ستونه، باید بری به Section Expert. (منوی Report -> Section Expert).
در قسمت سمت چپ، Details رو انتخاب کن،
در قسمت سمت راست، Format with Multiple Columns رو تیک بزن
در قسمت سمت چپ یک سربرگ اضافه میشه، با عنوان Layout.
برو به سربرگ Layout.
اینجا در قسمت Detail Size میتونی عرض هر ستونت رو به اینچ مشخص کنی. بقیه اش هم به نظرم مشخصه.
حالا عرض کاغذ A5 چقدره؟ اگه Landscape داری طراحی میکنی ۵.۸۳ و اگه Portrait طراحی میکنی ۸.۲۷، خب اینجا نصفش رو وارد کن یه کمی کمتر (بعدا میتونی دقیقتر تنظیمش کنی)، بعد از Ok کردن، میبینی که صفحه ات تقریبا دو قسمت شده، و هر چیزی که داخل قسمت سمت چپ بذاری یه کپیش داخل قسمت سمت راست دیده میشه.

باهاش سرو کله بزنی دستت میاد باید چیکار کنی.
اگه سر در نیاوردی بگو تا بیشتر توضیح بدم.

موفق باشی

مرسی دوستان عزیزم
من این کارها رو انجام دادم در ظاهر (یعنی زمانی که برنامه اجرا نشده) اندازه قسمت detail تغییر می کنه
اما وقتی که اجرا میشه عرض کار دوباره به همون اندازه A5 نشون داده میشه
در صورتی که من نصف A5 رو می خام
من درقسمت layout اندازه width رو 4 اینچ دادم که اتدازه عرض برگه ای هست که مد نظر منه (نصف A5)

neda_dela
یک شنبه 15 خرداد 1390, 15:20 عصر
اینم عکس هاش
70746

70747

mn_zandy63
یک شنبه 15 خرداد 1390, 19:45 عصر
سلام دوست من،
خب به نظر میاد فایل آموزشی که دوستمون گذاشتن مشکلت رو حل کرده.
چیزی که من از عکسی که گذاشتی متوجه میشم اینه که مشکلت حل شده و گزارشت دقیقا همون چیزی شده که باید.
اگه هنوز جواب نگرفتی، معنیش اینه که احتمالا داخل کد کارت ایراد داره.
کدی که داخل فروم C# گذاشتی هم حدسم رو تایید میکنه.
بیا روال برنامه ات رو یه بار با هم مرور کنیم، اگه جاییش رو درست متوجه نشدم تصحیح کن:
اینطور که به نظر میاد، روال برنامه ات اینجوریه که کاربرت یک نفر رو انتخاب میکنه و میزنه چاپ، شما هم اطلاعات همون یک نفر رو میفرستی برای گزارش.
خب حالا یه سوال، وقتی که فقط اطلاعات یک نفر رو برای گزارش فرستادی، گزارش چطور باید کارت دو نفر رو برات چاپ کنه؟

neda_dela
جمعه 20 خرداد 1390, 13:23 عصر
مرسی عزیزم از توجه شما مشکل من حل شده ممنون
من ابتدا میخاستم که برای 2 نفر چاپ بشه (یه نفر سمت راست برگه A5 ویکی هم سمت چپش)
اما کاربرم میخاد که یکی یکی کارت برای افراد چاپ بشه
و برای همین من الان میخام که برگه A5 رو هم از وسط نصف کنم اونوقت چاپ کنم
یعنی هر بار برای یک نفر
که دوباره کاربر عزیز خواستن که پشت برگه یه سری قوانین مرکز چاپ بشه (یعنی نیازی به نصف شدن نیست)که حالا میشه در نصف دیگه برگه اون قوانین رو تایپ کرد و چاپش کرد
حالا یه سوال مسخره:
آیا این قوانین چون تقریبا زیادن باید دونه دونه با تکست نوشته بشن یا راه آسون تر و بهینه تری هم هست؟
مرسی