PDA

View Full Version : مشکلات یک تازه وارد !



merlin_vista
یک شنبه 04 شهریور 1386, 14:50 عصر
سلام آقا من دارم یه پروژه مینویسم ولی در حین کار به چندتا مشکل بر خوردم و میخواستم آنها را با شما در میان بگزارم !! آخه این اولیشه و دلم نمیخواد نتونم بنویسم !!! من حدود یک ماه است که C# شروع کردم و واقعاً زبان شیرینی است !!!!
مشکلات من از این قبیل است ::
1 - من یک کریستال ریپورت درست کردم و در یک فرم از آن استفاده کردم و متغیر DATASourse را به آن پاس دادم !!! ولی الان همان کریستال ریپرت را میخواهم در یک فرم دیگر استفاده کنم کار نمیده و در ضمن آن کریستال ریپورت را در یک فرم جداگانه گزاشتم ولی بار هم خالی آمد . منظورم اینه که مثلاً در یک فرم من نمایش کل اطلاعات را دارم و یک دکمه چاپ براش گزاشتم و در یک فرم کریستال ریپورت را ایجاد کردم با نان Cripor و اینگونه به آن پاس میدهم !

CrystalDecisions.CrystalReports.Engine.ReportClass rc = new Creport_Cristal();
rc.SetDataSource(this.dsAllViewMater1);
new frmCRiport(rc).ShowDialog();و به درستی کار میدهد و در فرمی که کریستال ریپورت هست در متغیر ساختاری آن را دریافت میکنم و برابر با درتاسورس کریستال ریپورت قرار میدهد !

ولی مشکلی که وجود دارد این است که من در یک فرم دیگه مثلاً جستجو بر اساس نام وقتی میخواهم اطلاعات را به فرم FRMCRIPORT پاس بدهم آن خلی نشون میدهد در جای که جفت متغیرهای پاس داده شده از هر دو فورم هم نامند و بعد از به نتیجه نرسیدن من تصمیم گرفتم یک فرم جدا بسیازم با نام CriportName و همان کریستال ریپورت قبلی را در آن قرار دادم و با یک متغیر دیگر اطلاعات را براش پاس کردم ولی باز هم خالی نشان میدهد ! :افسرده:

2 - آقا من نه در پرسیجر و نه در جایی دیگر اگر بخواهم اطلاعات آخرین پست را در چند تکس باکس نشان دهم باید چکار کنم ( البته نمیخواهم اطلاعات را FILL کنم و داخل دیتاست بریزم ! فقط آخرین سطر اضافه شده )

3 - چگونه فقط یک سطر خاص را به دیتاست بیارم مثلا من برای جدولم ID میزارم و برای آنشمارهنده اتوماتیک میزارم وحالا میخواهم سطری را که شماره ID آن 1 است به دیتاست بیارم روی آن ویرایش انجام دهم ! فقط آن سطر را بیارم و فقط اطلاعات آن سطر را بخونم و ویرایش کنم !

4 - کسی یک آموزش ساده و ابتدایی برای ذخیره عکس در دیتابیس و فراخانی آن ندارد !!!

5 - چگون برای یک دکمه یک کد بنویسم که با کلیک بر روی آن اطلاعات دیتاگرید با همان شکل توی مایکروسافت WOrd نشان داده شود !!

6- کامپونتی + آموزش فارسی سوراغ ندارید که با اتصال به مودم شماره تماس گیرنده را نشان بدهد !!

7 - چگونه برای دیتاگرید یک دکمه نمایش و ویرایش بگزاریم و با کلیک کردن بر روی آن اگر آن REDONLY است تبدیل به حالت معمولی شود و بتوان درون آن چیز نوشت و همچنین با کلیک مجدد بر روی آن تبدیل به حالت نمایش شود و دیگر قابل نوشتن چیزی نباشد !! :لبخندساده:

اگر من زیاد سوال بپرسیدم امیدوارم من را ببخشید ! بالاخره ما تازه واریدم و هزار آرزو :خجالت:

smt_414
یک شنبه 04 شهریور 1386, 15:04 عصر
سلام
برای ذخیره و بازیابی عکس اینجا رو ببین
http://barnamenevis.org/forum/showthread.php?t=74432

حامد مصافی
یک شنبه 04 شهریور 1386, 15:33 عصر
مشکلات یک تازه وارد !

برای تاپیک عنوان مناسب تری انتخاب کن.
هر سوال رو در یک تاپیک بپرس.
قوانین سایت رو بخون.
...

merlin_vista
یک شنبه 04 شهریور 1386, 15:45 عصر
برای عنوان ! آخه هرچی مینوشتم خطا میگرفت که بزرگ هست من هم اعصابم خورد شد و این را نوشتم که کوچک باشه !
از اینکه همه را یک جا پورسیدم عضرمیخواهم و دیگر تکرار نمیشود !
چشم قوانین سایت را حتماً مطالعه میکنم !
و از شمایی که جواب عکس را دادید ممنون هستم

hdv212
یک شنبه 04 شهریور 1386, 17:13 عصر
برای سوالات مربوط به کریستال ریپورت، بخش جداگانه ای در همین سایت وجود داره که سریعتر تو رو به جواب میرسونه ولی این لینک رو برات میذارم که برای شروع عالیه :
http://www.codeproject.com/useritems/Basics_of_Crystal_Report.asp

2 - آقا من نه در پرسیجر و نه در جایی دیگر اگر بخواهم اطلاعات آخرین پست را در چند تکس باکس نشان دهم باید چکار کنم ( البته نمیخواهم اطلاعات را FILL کنم و داخل دیتاست بریزم ! فقط آخرین سطر اضافه شده )
در این مورد هم فکر کنم قبلا جوابتون رو دادم، اینجا نمونه کدی که کالتر هست رو برات میذارم که آخرین رکورد رو بر اساس فیلد customerID فراخوانی میکنی و سه تا فیلدشو در سه textBox نمایش میده که به این صورت میتونی داده ها تو در textBox ها نمایش بدی :

private void button5_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=northwind;Persist Security Info=True;User ID=sa;Password=09126511085");
SqlCommand cmd = new SqlCommand("select top 1 * from Customers order by customerID desc", con);
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();
dt.Load(dr);
con.Close();
this.dataGridView3.DataSource = dt.DefaultView;
this.textBox1.DataBindings.Add("Text", dt.DefaultView, "customerID");
this.textBox2.DataBindings.Add("Text", dt.DefaultView, "companyName");
this.textBox3.DataBindings.Add("Text", dt.DefaultView, "contactName");
}

3 - چگونه فقط یک سطر خاص را به دیتاست بیارم مثلا من برای جدولم ID میزارم و برای آنشمارهنده اتوماتیک میزارم وحالا میخواهم سطری را که شماره ID آن 1 است به دیتاست بیارم روی آن ویرایش انجام دهم ! فقط آن سطر را بیارم و فقط اطلاعات آن سطر را بخونم و ویرایش کنم !
اینم با یه دستور ساده ی update امکانپذیره :

private void button6_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=northwind;Persist Security Info=True;User ID=sa;Password=09126511085");
SqlCommand cmd = new SqlCommand("update customers set companyName='test2',contactName='test2' where customerID='anton'", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}

- کسی یک آموزش ساده و ابتدایی برای ذخیره عکس در دیتابیس و فراخانی آن ندارد !!!

برای اینکه بتونی عکسی رو در دیتابیس ذخیره کنی، باید اونو به صورت آرایه ای از بایتها تبدیل کنی و در دیتابیس ذخیره کنی، فیلد جدولت هم یا باید image باشه یا varbinary(max)، اینم یه نمونه ذخیره ی عکس در دیتابیس که فیلد [image] اون از نوع image هست :

DataTable dt;

//Define this Function for convert Image To byte array
protected byte[] ReadBitmap2ByteArray(string fileName)
{
using(Bitmap image = new Bitmap(fileName))
{
MemoryStream stream = new MemoryStream();
image.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
return stream.ToArray();
}
}

//Define this function for Save Image To Database
protected void StoreBlob2DataBase(byte[] content)
{
SqlConnection con = sqlConnection1;
con.Open();
try
{
// insert new entry into table
SqlCommand insert = new SqlCommand(
"insert into Images ([stream]) values (@image)",con);
SqlParameter imageParameter =
insert.Parameters.Add("@image", SqlDbType.Binary);
imageParameter.Value = content;
imageParameter.Size = content.Length;
insert.ExecuteNonQuery();
}
finally
{
con.Close();
}
}

//Write this code in click event of your button to convert Image to stream and save it to database
private void button2_Click(object sender, System.EventArgs e)
{
byte[] content = ReadBitmap2ByteArray(openFileDialog1.FileName);
StoreBlob2DataBase(content);
pictureBox1.Image = null;
sqlDataAdapter1.Update(dataSet11);
}

برای بازگردانی عکس از دیتابیس هم باید برعکس عمل کنی، یعنی از آرایه ای از بایتها باید به تصویر ببری، اینم یه نمونه اش، این کد رو در رویداد CurrentCellChanged مربوط به دیتاگرید نوشتم که هر بار رکورد تغییر میکنه، عکس اون رکورد در یک pictureBox نمایش داده میشه :
//Write this Code For show Image when DatagidCurrentCell Changed or ...

private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
CurrencyManager cm =(CurrencyManager)BindingContext[dt];
DataRowView drv = (DataRowView) cm.Current;
byte[] content = (byte[])drv["stream"];
MemoryStream stream = new MemoryStream(content);
Bitmap image = new Bitmap(stream);
pictureBox1.Image = image;
}

مهدی رحیم زاده
یک شنبه 04 شهریور 1386, 17:24 عصر
دوست عزیز سلام
سئوالات :
1- راستش من که درست نفهمیدم شما می خواید چکار کنید ، اما اگر خیلی ساده بگید که می خواهید چکار کنید شاید بتونم کمکتون کنم .
2- البته من زیاد نمی دونم ولی تا اونجایی که من می دونم شما وقتی از ADO.NET استفاده می کنید دسترسی مستقیم روی بانک ندارید و با اطلاعات داخل Dataset و یا Datatable کار می کنید و حالا اگر اطلاعاتی رو می خواهید باید این اطلاعات توی دیتا ست یا دیتا تیبل باشه وگرنه نمی تونید از اون استفاده کنید بنابراین برای اینکه بتونید اون فیلد آخر رو بخونید باید Fill انجام بدید ...
3- شما با یک دستور select ساده می تونید هر سطری رو که دوست داشته باشید انتخاب کنید

select id,name from table1 where id=number
که توی این کد number هر عددی می تونه باشه ...
5- یه سرچ کوچولو توی سایت انجام بده ، فکر می کنم یه پست توی همین مایه ها خوندم ...
7- این کار رو هم خیلی ساده می تونید انجام بدید ...
مثلا یک فیلد توی بانک داشته باشید که وضعیت دیتا گرید ویو رو نشون میده ، اگر True بود با کلیک اونو False می کنید و برعکس ...

موفق باشید

merlin_vista
یک شنبه 04 شهریور 1386, 21:04 عصر
از کاربران : " hdv212 (http://barnamenevis.org/forum/member.php?u=14084) " و " iranmsb (http://barnamenevis.org/forum/member.php?u=18292) " به خاطر جواب های کامل و خوبتون بسیار ممنون هستم ! من که خیلی استفاده کردم !!! امیدوارم شما همیشه در زندگیتان موفق باشید . جواب هایتان خیلی خیلی کمکم کرد !
از لطف بیش از اندازه شما منون !
راستی سوال شماره 6 را کسی میتونه جواب بده !؟

hdv212
یک شنبه 04 شهریور 1386, 21:40 عصر
یه سر به این سایت بزن :
http://www.khazama.com
این سایت آقای خزاماست، پروژه های زیادی در مورد برنامه نویسی تلفن و الکرترونیک انجام داده،ببین شاید به دردت بخوره

حامد مصافی
دوشنبه 05 شهریور 1386, 10:47 صبح
راستی سوال شماره 6 را کسی میتونه جواب بده !؟
دو کنترل مطرح در این زمینه داریم:

KDtele و Tapiex

من به شخصه از دومی استفاده می کنم.

merlin_vista
دوشنبه 05 شهریور 1386, 12:10 عصر
دو کنترل مطرح در این زمینه داریم:

KDtele و Tapiex

من به شخصه از دومی استفاده می کنم.


ببخشید زحمت دادم میشه لینک دانلود را بگزارید و یا برای من بفرستید !!:چشمک:

حامد مصافی
سه شنبه 06 شهریور 1386, 07:36 صبح
www.tapiex.com (http://www.google.com/search?q=tapiex)

merlin_vista
سه شنبه 06 شهریور 1386, 10:31 صبح
میبخشید آموزش فارسی هم داره ! اگه داره بگزارید

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

حامد مصافی
سه شنبه 06 شهریور 1386, 10:52 صبح
آموزش فارسی نداره.
اما مثال هایی داره که می تونید ازشون استفاده کنید.
در اکسس هم می تونید ازش استفاده کنید.

merlin_vista
سه شنبه 06 شهریور 1386, 11:14 صبح
آقا من نسخه آزمایشی آن را دانلود کردم ولی کرک میخواهد !
اگر کسی داره به ایمیل من بفرسته یا واسم پیغام خصوصی بگزارد !
نسخه ای که من دانلود کرم : TAPIEx ActiveX Control 3.4
در ضمن اگر این نسخه کرک نداره « یک نسخه کرک شده + فایل نصب بگزارید »
ایمیل : asandownload@gmail.com


ممنون تاز شمایی که گفتید میشه در اکسس استفاده ، ولی چه طوری این که فایل MDE هست

merlin_vista
سه شنبه 06 شهریور 1386, 11:52 صبح
آقا من نسخه آزمایشی آن را دانلود کردم ولی کرک میخواهد !
اگر کسی داره به ایمیل من بفرسته یا واسم پیغام خصوصی بگزارد !
نسخه ای که من دانلود کرم : TAPIEx ActiveX Control 3.4
در ضمن اگر این نسخه کرک نداره « یک نسخه کرک شده + فایل نصب بگزارید »
ایمیل : asandownload@gmail.com


ممنون تاز شمایی که گفتید میشه در اکسس استفاده ، ولی چه طوری این که فایل MDE هست

آقا کسی چرا کمک نمیکنه !!! :متفکر:

merlin_vista
پنج شنبه 08 شهریور 1386, 08:55 صبح
آقا TAPIEx تو اکسس هم کار میده ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!