PDA

View Full Version : سوال: چاپ اطلاعات بلافاصله بعد از ثبت



reza4359
جمعه 09 مهر 1389, 16:34 عصر
سلام دوستان من یه فرم دارم که وقتی اطلاعاتش ثبت شد میخوام آخرین مشخصاتی که ثبت شده یعنی بلافاصله بعد از ثبت، فرم گزارش نمایش داده بشه ولی بعد از ثبت، اطلاعات قبلی رو نمایش میده حالا چه کار کنم که اطلاعات آخرین نفری که ثبت میشه رو بیاره به صورت خودکار و بدون جستجو چون بعد از ثبت اطلاعاتش باید نمایش داده بشه. ممنون

mmd2009
جمعه 09 مهر 1389, 16:44 عصر
با سلام

حداقل کدی ، برنامه ای چیزی بذارید که بگیم اشکال کار کجاست

reza4359
جمعه 09 مهر 1389, 16:54 عصر
با سلام

حداقل کدی ، برنامه ای چیزی بذارید که بگیم اشکال کار کجاست
من داخل رویداد لود صفحه کریستال ریپورت از این کد استفاده کردم

this.book1TableAdapter.Fill(this.database1DataSet1 .book1);
CrystalReport21.Database.Tables[0].SetDataSource(database1DataSet1);
this.crystalReportViewer1.ReportSource = this.CrystalReport21;
و آدرس این صفحه رو بلافاصله بعد از ثبت اطلاعاتم گذاشتم

if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "" || textBox9.Text == "" || maskedTextBox1.Text == "" || maskedTextBox2.Text == "" || maskedTextBox3.Text == "" || textBox7.Text == "" || textBox6.Text == "" || textBox10.Text == "" || textBox11.Text == "")
{


MessageBox.Show("فیلدهای خالی را پر کنید ", "پیغام سیستم", MessageBoxButtons.OK, MessageBoxIcon.Information);
}




else if (MessageBox.Show("آیا مایل به ذخیره اطلاعات هستید؟", "پیغام سیستم", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{


SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + "\\database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
int x = int.Parse(textBox1.Text);
string a = textBox2.Text;
string b = textBox3.Text;
string c = comboBox1.SelectedItem.ToString();
string d = comboBox3.SelectedItem.ToString();
string y = comboBox2.SelectedItem.ToString();
string ab = comboBox6.SelectedItem.ToString();
string ac = comboBox7.SelectedItem.ToString();
string ad = comboBox8.SelectedItem.ToString();
string ae = comboBox9.SelectedItem.ToString();
int x1 = int.Parse(textBox10.Text);
int x2 = int.Parse(textBox11.Text);
int x3 = int.Parse(textBox12.Text);
string h1 = maskedTextBox4.Text;
int g1 = int.Parse(textBox15.Text);
int g2 = int.Parse(textBox16.Text);
string f = textBox4.Text;
int g = int.Parse(textBox5.Text);

string h = maskedTextBox1.Text;
string i = maskedTextBox2.Text;
string j = maskedTextBox3.Text;
string k = comboBox4.SelectedItem.ToString();
string l = comboBox5.SelectedItem.ToString();


int p = int.Parse(textBox9.Text);
string q = textBox7.Text;
int w = int.Parse(textBox6.Text);

string cmd2 = string.Format(" INSERT INTO book1 (id,name,family,[user],sex,yegan,ill,priod,date1,date2,date3,free,darman ,[current],num,dateday,doctor,status,submit,subfree,nofree,n umrade,daterade,sader,kom,khala) values ({0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8 }','{9}','{10}','{11}','{12}','{13}','{14}','{15}' ,'{16}','{17}','{18}','{19}','{20}','{21}','{22}', '{23}','{24}','{25}')", x, a, b, c, d, y, f, g, h, i, j, k, l, w, p, q, ab, ac, ad, x1, x2, x3, h1, ae, g1, g2);
cmd.CommandText = cmd2;
cmd.Connection = con;
con.Open();

cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(textBox2.Text + " " + textBox3.Text + " " + " با شماره شناسایی " + " " + textBox1.Text + " " + "با موفقيت اضافه شد ");
if (MessageBox.Show("آیا مایل به صدور گواهی هستید؟", "چاپ گواهی", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{

reoform rep = new reoform();
rep.Show();


this.Hide();
}

}
}

mmd2009
جمعه 09 مهر 1389, 17:15 عصر
این که یکیی یکی ثبت میکنه. اولش که خیال کردیم خیلی رو با هم ثبت میکنی بعدش اخری رو میخوای ببری تو کریستال.

از ارسال پارامتر استفاده بکن .

پارامترهای cmd رو کلیر کن

و راستی if اولت مورد داره. فضای خالی رو هم حساب میکنه

reza4359
جمعه 09 مهر 1389, 17:25 عصر
این که یکیی یکی ثبت میکنه. اولش که خیال کردیم خیلی رو با هم ثبت میکنی بعدش اخری رو میخوای ببری تو کریستال.

از ارسال پارامتر استفاده بکن .

پارامترهای cmd رو کلیر کن

و راستی if اولت مورد داره. فضای خالی رو هم حساب میکنه
ممنون از جوابتون اگه میشه بیشتر توضیح بدید یا اگه کدشو واسم بذارید خیلی بهتر میشه. ممنون

mmd2009
جمعه 09 مهر 1389, 17:32 عصر
شرط رو اینطوری بذار



if(textBox1.Text.Trim()== string.Empty)
{

}

reza4359
جمعه 09 مهر 1389, 17:40 عصر
شرط رو اینطوری بذار



if(textBox1.Text.Trim()== string.Empty)
{

}

واسه دسترسی به آخرین رکورد ثبت شده برای چاپ باید چه کار کنم؟

peymanjon
جمعه 09 مهر 1389, 19:10 عصر
شما باید از دیتا بیست یک کوئری بگیری اگه شما فیلدی در دیتابیس به عنوان کلید اصلی داری (مثلا id)که identity اونو yes کردی با کوئری زیر می تونید آخرین شماره رکورد را بدست بیارید.


select MAX(id) from tbl_Computers

موفق باشد.

reza4359
جمعه 09 مهر 1389, 19:57 عصر
شما باید از دیتا بیست یک کوئری بگیری اگه شما فیلدی در دیتابیس به عنوان کلید اصلی داری (مثلا id)که identity اونو yes کردی با کوئری زیر می تونید آخرین شماره رکورد را بدست بیارید.


select MAX(id) from tbl_Computersموفق باشد.
پیمان جان سلام من با کوئری این کارو کردم حالا میخوام بدون اینکه جستجو کنم بعد از اینکه روی دکمه ثبت اطلاعات کلیک کردم گزارش چاپ بشه و همون اطلاعاتی رو که ثبت کردم یعنی آخرین رکورد ثبت شده رو واسم بیاره آخه بعد از ثبت باید یک گواهی براش چاپ بشه

peymanjon
شنبه 10 مهر 1389, 02:38 صبح
شما 2 راه برای این کار دارید ، البته این نکته را در پرانتز بگویم که من گزارش گیری شما را بر اساس نرم افزار کریستال ریپورت در نظر میگیرم و با این شرط 2 راه موجود در کریستال را به شما میگم.
1- با استفاده از ویزارد کریستال:
شما یک دیتاست با کوئری زیر می سازید و بعد یک کریستال ریپورت به برنامه خود ADD میکنید و به دیتاست ساخته شده نسبت میدهید وبقیه مراحل را انجام می دهید(منظورم از بقیه ، report viewer و انتساب اون به کریستال می باشد . اگه کار با کریستال را یاد ندارید PDF آموزشی زیادی تو این سایت پیدا می کنید که تصویری بهتون آموزش میدهند.)

select Your filds from Your table where id=(select MAX(id) from Your table)
2-با استفاده از کدنویسی:
یعنی همان مراحل قسمت اول را تماما با کد پیادهسازی کنید و از ویزارد استفاده نکنید که باز هم آموزش وصل شدن به کریستال و ارسال اطلاعات به آن را می توانید با جستجو پیدا کنید و حتی نمونه کد هم در موردش زیاده.
موفق باشید.

mmd2009
شنبه 10 مهر 1389, 02:52 صبح
جواب یک سوال رو برای من مشخص کنید :

ایا شما بعد از ثبت نمیخواهید اطلاعات اون رکورد به ریپورت بروید؟؟؟

جواب شما طبق چیزی که مشخص است از کدهاتون :



if (MessageBox.Show("آیا مایل به صدور گواهی هستید؟", "چاپ گواهی", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{

reoform rep = new reoform();
rep.Show();
this.Hide();
}


پس جواب میشه بله میخواهید بعد از ثبت سریعا به گزارش ارسال شود.

سوال من از شما : دلیلتون برای ایجاد یک کوئری بدردنخوره چیه ؟ مگه اطلاعات تو فرم هنوز نیستن که بخواهید یک کوئری بنوسید و MAX رو بدست بیارید تازه ، اونم اگر تو یکی از فیلد هاتون اخرید مقدار یک Max داشته باشه و ترتیب رعایت شده باشه.

نتیجه اخر : اگر دقیقا با حرفهای من موافق هستید نیازی به کوئری دیگری ندارید و اطلاعات رو همین جا به گزارش ارسال کنید. موفق باشید.

reza4359
شنبه 10 مهر 1389, 10:50 صبح
جواب یک سوال رو برای من مشخص کنید :

ایا شما بعد از ثبت نمیخواهید اطلاعات اون رکورد به ریپورت بروید؟؟؟

جواب شما طبق چیزی که مشخص است از کدهاتون :



if (MessageBox.Show("آیا مایل به صدور گواهی هستید؟", "چاپ گواهی", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{

reoform rep = new reoform();
rep.Show();
this.Hide();

}
پس جواب میشه بله میخواهید بعد از ثبت سریعا به گزارش ارسال شود.

سوال من از شما : دلیلتون برای ایجاد یک کوئری بدردنخوره چیه ؟ مگه اطلاعات تو فرم هنوز نیستن که بخواهید یک کوئری بنوسید و MAX رو بدست بیارید تازه ، اونم اگر تو یکی از فیلد هاتون اخرید مقدار یک Max داشته باشه و ترتیب رعایت شده باشه.

نتیجه اخر : اگر دقیقا با حرفهای من موافق هستید نیازی به کوئری دیگری ندارید و اطلاعات رو همین جا به گزارش ارسال کنید. موفق باشید.
خوب دوست عزیز حالا باید چه کار کنم که آخرین سطر از بانک رو بدست بیارم و آخرین اطلاعاتی که ثبت کردم رو در گزارشم بیاره باید از چه کدی استفاده کنم خیلی ضروریه

peymanjon
شنبه 10 مهر 1389, 12:47 عصر
جواب یک سوال رو برای من مشخص کنید :

ایا شما بعد از ثبت نمیخواهید اطلاعات اون رکورد به ریپورت بروید؟؟؟

جواب شما طبق چیزی که مشخص است از کدهاتون :

کد PHP:

if (MessageBox.Show("آیا مایل به صدور گواهی هستید؟", "چاپ گواهی", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{

reoform rep = new reoform();
rep.Show();
this.Hide();
}


پس جواب میشه بله میخواهید بعد از ثبت سریعا به گزارش ارسال شود.

سوال من از شما : دلیلتون برای ایجاد یک کوئری بدردنخوره چیه ؟ مگه اطلاعات تو فرم هنوز نیستن که بخواهید یک کوئری بنوسید و MAX رو بدست بیارید تازه ، اونم اگر تو یکی از فیلد هاتون اخرید مقدار یک Max داشته باشه و ترتیب رعایت شده باشه.

نتیجه اخر : اگر دقیقا با حرفهای من موافق هستید نیازی به کوئری دیگری ندارید و اطلاعات رو همین جا به گزارش ارسال کنید. موفق باشید.

شما چجوری می خواین بدون کوئری نوشتن آخرین اطلاعاتی که ثبت کردین را به کریستال بفرستین؟
یا باید یک دیتاست با کوئری که من نوشتم را بسازیم و بعد از ثبت اطلاعات آن دیتاست را به کریستال انتساب بدیم و یا با کدنویسی به کریستال و دیتابیس وصل شیم و اطلاعات را از دیتابیس با پارامتر به کریستال بفرستیم.
اگر غیر از این دو راه راه دیگه ای شما بدون کدنویسی یا بدون استفاده از دیتاست بلدید محبت کنید با نمونه کد اینجا بذارید تا من هم استفاده کنم.
اگه منظور شما اینه که در همان مرحله insert پارامترها را به کریستال هم بفرستیم فکر نمیکنید کد های بیشتری و عملیات بیشتری باید در مقایسه با انتساب یک دیتاست با کوئری MAX ، داشته باشیم؟
ممنون از توجه شما دوست عزیز

reza4359
یک شنبه 11 مهر 1389, 20:37 عصر
شما چجوری می خواین بدون کوئری نوشتن آخرین اطلاعاتی که ثبت کردین را به کریستال بفرستین؟
یا باید یک دیتاست با کوئری که من نوشتم را بسازیم و بعد از ثبت اطلاعات آن دیتاست را به کریستال انتساب بدیم و یا با کدنویسی به کریستال و دیتابیس وصل شیم و اطلاعات را از دیتابیس با پارامتر به کریستال بفرستیم.
اگر غیر از این دو راه راه دیگه ای شما بدون کدنویسی یا بدون استفاده از دیتاست بلدید محبت کنید با نمونه کد اینجا بذارید تا من هم استفاده کنم.
اگه منظور شما اینه که در همان مرحله insert پارامترها را به کریستال هم بفرستیم فکر نمیکنید کد های بیشتری و عملیات بیشتری باید در مقایسه با انتساب یک دیتاست با کوئری MAX ، داشته باشیم؟
ممنون از توجه شما دوست عزیز
حالا با استفاده از کوئری باید چه کار کرد باید داخل کریستال چه کوئری بزارم