PDA

View Full Version : مبتدی: تعیین پسوند برای نرم افزار



ucnazard
جمعه 01 مرداد 1389, 15:32 عصر
سلام
من یه برنامه واسه پروژه پایانیم دارم مینویسم که میخام امکان ذخیره هم توش داشته باشم
اما نمیدونم چطور.
سوالی که دارم اینه چطوری واسه برنامم پسوند تعیین کنم موقع ذخیره ومحتویات دیتاگریدم رو چطور توی فایلی ذخیره کنم که دوباره بتونم تو برنامم اونو لود کنم.
مثل یه فایل word
ممنون میشم راهنماییم کنید.

ACorvinus
جمعه 01 مرداد 1389, 15:47 عصر
سلام.

خوبی برادر؟ ببین شما باید اطلاعاتتون رو یا به صورت فایل (باینری، XML و ...) , و یا در بانک های اطلاعاتی همچون Access، SQL و نظیر اینا ذخیره کنین.

یه سوال، فقط اطلاعات یکی از DataGridView هاتونو میخواین ذخیره کنین؟!!!

محسن شامحمدی
جمعه 01 مرداد 1389, 17:58 عصر
فقط کافیه یک روش برای ذخیره کردن اطلاعات برنامتون انتخاب کنید
به قول دوستمون فایل ini یا xml یا access یا ...

ucnazard
جمعه 01 مرداد 1389, 21:43 عصر
حالا چرا برادر؟؟؟:اشتباه:
حتما باید دیتابیس داشته باشم؟؟؟؟
میشه نمونه واسم معرفی کنید
با xml , ...که گفتین اصلا کار نکردم تا حالا.
آره فقط یه دیتاگرید دارم.
میشه توضیح بدید ممنونم

ucnazard
شنبه 02 مرداد 1389, 14:09 عصر
هیش کس نظری کمکی نمونه ایی نداره
خواهشا یکی یه کمکمی بکنه نمیدونم از کجا شروع کنم
plz help me:افسرده::گریه::ناراحت:

ACorvinus
شنبه 02 مرداد 1389, 17:31 عصر
سلام.

چه عجله ای داری؟!!!

اینارو به برنامه ات import کن.

using System.IO;
using System.Xml;
using System.Xml.Serialization;

دوتا تابع برات میذارم که یکیش برای ذخیره کردن اطلاعات در فایل XML و اون یکی برای خواندن اطلاعات از فایل XML هستش. مشکلی بود بگو بهم.

/// <summary>
/// این یک تابع برای ذخیره سازی اطلاعات شما به صورت یک فایل ایکس.ام.ال میباشد
/// </summary>
/// <param name="DT">DT is a DataTable [Your Records Table]</param>
/// <param name="strDestinationAddress">strDestinationAddress is a Path [Path to Save Your XML File]</param>
public void SelrializetoXMLFile(DataTable DT, String strDestinationAddress)
{
try
{
DataSet objDataSet = new DataSet("MyDataset");
string Path = strDestinationAddress;
XmlSerializer XS = new XmlSerializer(objDataSet.GetType());
TextWriter objTextWriter = new StreamWriter(Path, false);

objDataSet.Tables.Add(DT);
XS.Serialize(objTextWriter, objDataSet);
objTextWriter.Close();
}
catch (Exception ex) { throw ex; }
}

/// <summary>
/// این یک تابع برای خواندن اطلاعات ذخیره شده شما از یک فایل ایکس.ام.ال میباشد
/// </summary>
/// <param name="DT">DT is a Referenced DataTable [Your Records Table]</param>
/// <param name="strSourceAddress">strSourceAddress is a Path [Read from Your XML File]</param>
public void DeSerializeXMLToINFODataTable(ref DataTable DT, String strSourceAddress)
{
try
{
DataSet objDataSet = new DataSet();
XmlSerializer XS = new XmlSerializer(objDataSet.GetType());
DataTable objDataTable = new DataTable();
TextReader objTextReader = new StreamReader(strSourceAddress);

objDataSet = (DataSet)XS.Deserialize(objTextReader);
objTextReader.Close();
foreach (DataRow dr in objDataSet.Tables["Table1"].Rows)
{
DataRow newdr = DT.NewRow();

newdr["نام ستون"] = dr["نام ستون"];
newdr["نام ستون"] = dr["نام ستون"];
newdr["نام ستون"] = dr["نام ستون"];
// .
// .
// .
DT.Rows.Add(newdr);
}

}
catch (Exception ex) { throw ex; }
}

موفق باشی.

ucnazard
یک شنبه 03 مرداد 1389, 15:24 عصر
سلام میشه اینارو توضیح بدی؟؟؟:خجالت:
دیتاگرید رو کجای اینا باید وارد کنم
در ضمن من دیتابیسم ندارم
تو این کد از dataset,datatabel واسه چی استفاده شده.حتما باید دیتابیس داشته باشم؟؟

ACorvinus
یک شنبه 03 مرداد 1389, 16:40 عصر
سلام.


دیتاگرید رو کجای اینا باید وارد کنم

شما دیتاگرید نمیخواد وارد کنین. نمیدونم با DataTable آشنایی دارین یا نه؟!!!
DataTable یه جدول مجازی هستش که به تعداد ستون های گریدویو یا بیشتر ستون داره (البته همینجوری نداره؛ شما باید براش تعریف کنین).

اینجا کارامون با DataTable هستش، باید یاد بگیرین. بعد از اینکه یاد گرفتین DataTable رو میفرستین به تابع اولی. (به همراه آدرسی که میخواین اطلاعات اونجا ذخیره شن).


در ضمن من دیتابیسم ندارم
تو این کد از dataset,datatabel واسه چی استفاده شده.حتما باید دیتابیس داشته باشم؟؟

مگه از DataTable و DataSet فقط وقتی استفاده می کنیم که بانک اطلاعاتی داشته باشیم؟!!!

ostovarit
یک شنبه 03 مرداد 1389, 17:16 عصر
چطور توی فایلی ذخیره کنم که دوباره بتونم تو برنامم اونو لود کنم. مثل یه فایل word
ممنون میشم راهنماییم کنید.

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

www.codeproject.com (http://www.codeproject.com)

ucnazard
یک شنبه 03 مرداد 1389, 22:19 عصر
مگه از DataTable و DataSet فقط وقتی استفاده می کنیم که بانک اطلاعاتی داشته باشیم؟!!![/quote]


/اره میدونم .
من تا حالا پیش نیومده استفاده کنم از ش ولی یاد میگیرم مشکلی داشتم با اجازتون مزاحم میشم.
مرسی

ucnazard
یک شنبه 03 مرداد 1389, 22:22 عصر
دوست عزیز برای خروجی گرفتن از گرید ویو به فرمت هاd محتلف سرچ کنید سمپل های زیادی هست ...
در رابطه با اینکه اطلاعات رو خروجی بگیرید و دوباره برگردونید به داخل گرید هم امکانش هست و نمونه ای در سایت کد پروجکت هست که خروجی به اکسل میگیره و دوباره از فایل اکسل گرید رو پر میکنه ... برای ورد نمونه ای ندیدم هنوز!

www.codeproject.com (http://www.codeproject.com)

اتفاقا هرچی سرچ میکنم فقط همین اکسله ولی من xml و html میخام

ucnazard
دوشنبه 04 مرداد 1389, 22:05 عصر
salam man az code zir vase por kardane data table stefade kardam
2roste??

DataTable t;

t = ds.Tables["result"];
.
t.NewRow=DataRow newRow;
:
for (int h = 0; h < findcount; h++)
{
newRow["name"] = dataGridView1.Rows[h].Cells[1].Value.ToString();
newRow["path"] = dataGridView1.Rows[h].Cells[2].Value.ToString();
newRow["len"] = dataGridView1.Rows[h].Cells[3].Value.ToString();
newRow["date"] = dataGridView1.Rows[h].Cells[4].Value.ToString();
// Add the row to the rows collection.
t.Rows.Add(newRow);
}
البته تو خط سوم exceptionداره
میشه راهنمایی کنین؟؟؟

ACorvinus
سه شنبه 05 مرداد 1389, 09:04 صبح
سلام.

لطفا کدتونو بندازین داخل تگ Code یا تگ Source که اول معلوم بشه چی به چیه بعدا من میگم مشکلش چیه.

موفق باشی.

ucnazard
سه شنبه 05 مرداد 1389, 11:57 صبح
DataTable t;





t = ds.Tables["result"];

.
t.NewRow=DataRow newRow;
:
for (int h = 0; h < findcount; h++)
{
newRow["name"] = dataGridView1.Rows[h].Cells[1].Value.ToString();
newRow["path"] = dataGridView1.Rows[h].Cells[2].Value.ToString();
newRow["len"] = dataGridView1.Rows[h].Cells[3].Value.ToString();
newRow["date"] = dataGridView1.Rows[h].Cells[4].Value.ToString();
// Add the row to the rows collection.
t.Rows.Add(newRow);
}


حالا در ست شد؟ندیده بودم این تگهارو:خجالت:
راستی exception اش هم null refrence

ACorvinus
سه شنبه 05 مرداد 1389, 12:35 عصر
سلام.

اگه تو یکی از این چهار خط خطا میگیره:

newRow["name"] = dataGridView1.Rows[h].Cells[1].Value.ToString();
newRow["path"] = dataGridView1.Rows[h].Cells[2].Value.ToString();
newRow["len"] = dataGridView1.Rows[h].Cells[3].Value.ToString();
newRow["date"] = dataGridView1.Rows[h].Cells[4].Value.ToString();

باید اینجوری بکنی (برای هر خطی که ممکنه خالی باشه):

if (dataGridView1.Rows[h].Cells[1].Value != null)
{
newRow["name"] = dataGridView1.Rows[h].Cells[1].Value.ToString();
}
else { newRow["name"] = DBNull.Value; }

اگه حل نشد بگو خطا در کدوم سطر اتفاق میافته. من نمیدونم منظورت از سطر 3 کدومه!!!
موفق باشی.

ACorvinus
سه شنبه 05 مرداد 1389, 12:51 عصر
با سلام.

فکر می کنم خطای شما در این خط رخ بده:

t.NewRow=DataRow newRow;

خب برادر من t یه DataTable هستش، درست. ولی برای استفاده از t اونو باید اینجوری تعریف کنین:

DataTable t = new DataTable();

بعدش اگه ستونهای جدول result با ستونهایی که قراره به t اضافه کنین یکی باشه باید اونو به اینصورت بنویسین:

t = ds.Tables["result"].Copy();

اگه حل نشد مشکلتون نامه خصوصی بدین تا یادم باشه جواب بدم.

ucnazard
سه شنبه 05 مرداد 1389, 13:01 عصر
با سلام.

فکر می کنم خطای شما در این خط رخ بده:

t.NewRow=DataRow newRow;

خب برادر من t یه DataTable هستش، درست. ولی برای استفاده از t اونو باید اینجوری تعریف کنین:

DataTable t = new DataTable();

بعدش اگه ستونهای جدول result با ستونهایی که قراره به t اضافه کنین یکی باشه باید اونو به اینصورت بنویسین:

t = ds.Tables["result"].Copy();

اگه حل نشد مشکلتون نامه خصوصی بدین تا یادم باشه جواب بدم.

آره خطا همین جاست من اینطور که نوشتین هم نوشتمش ولی جواب نداد همون exception رو داره

ACorvinus
سه شنبه 05 مرداد 1389, 18:06 عصر
سلام.

فرض می کنیم که GridView شما یه ستون داره به نام Address که مسرها رو در این ستون نگهداری می کنین.

یه DataTable به این نحو تعریف می کنین:

DataTable MyDataTable = new DataTable("AddressTable");
MyDataTable.Columns.Add("Address", typeof(string));

یادتون باشه این کد باید یه بار اجرا بشه، مثلا میتونین اونو بعد از InitializeComponent یا در Load فرم بنویسین.

حالا با متدی که حتما یه جوری تشخیص میدین که یا فایلی تصویر هستش یا نه، آدرس اونو ور میدارین (ما فرض می کنیم شما آدرس رو در متغیری یه نام Adres دارین) و اینجوری ادامه میدین:

DataRow dr = MyDataTable.NewRow();

dr["Address"] = Adres;
MyDataTable.Rows.Add(dr);

وقتی جستجوی شما تموم میشه اونوقت یه DataTable پر از آدرس دارین. حالا برای اینکه اونو انتصاب بدین به GridView اینجوری عمل می کنین:

this.MyGridView.DataSource = MyDataTable;

یادآوری: تنظیم DataPropertyName مربوط به ستون آدرس در GridView یادتون نره که تو مثالی که ما زدیم باید اونو برابر با Address قرار بدین.

اگه بازم مشکلی بود میدونین روال کار چیه.
موفق باشین.

ucnazard
سه شنبه 05 مرداد 1389, 22:00 عصر
پیام خصوصی ارسال کردم خدمتتون
مرسی از راهنمایی هاتون