PDA

View Full Version : مبتدی: جلوگیری از بارگذاری فایل ناشناس در پروژه



hhaaddii1363
چهارشنبه 29 مهر 1394, 17:48 عصر
با سلام . بنده در برنامه خودم یه فایل با فرمت mdb بارگذاری می کنم که فایلم بدون مشکل load می شه. فایل بانک اطلاعاتی من یه table داره و این تیبل 17 تا فیلد داره . من می خوام این فایل رو برحسب ورژن یا ساختارش بخونم مثلا اگه 18 تا فیلد داشت یا یه ورژن دیگه بود یا ساختارش فرق داشت تو برنامه خطای not support بده . با تشکر .

am_al_59
چهارشنبه 29 مهر 1394, 18:35 عصر
با این دستورات میتونی تعداد فیلدهای دیتا بیستو بگیری
var cmd = new OleDbCommand("select * from table1", کانکشن);
var reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
MessageBox.Show(reader.FieldCount.ToString());

برای تشخیص نسخه فایل دیتابیست من یک روش بلدم
به Microsoft.Office.Interop.Access در پروژت رفرنس بده و توسط برنامه فایل رو یا بک آبجکت از نوع access باز کن
یک property داره که ورژن فایل دیتابیس شمارو بر میگردونه نمونه کدش این میشه
var app = new Microsoft.Office.Interop.Access.Application();
app.OpenCurrentDatabase(آدرس فایل اکسس);
int result = app.CurrentProject.FileFormat;

hhaaddii1363
چهارشنبه 29 مهر 1394, 19:28 عصر
دوست عزیز نتونستم من کدم رو اینجا قرار می دم . اسم دیتابیس من test.mdb هست و توش یه table به نام فاکتور هست لطفا کدش رو بنویسید براساس این می خوام load کنم و تحت هیچ شرایطی نمی خوام فایل دیگه ای load بشه . باید فیلد ها رو بشمارم ؟ 17 تا فیلد داره

am_al_59
چهارشنبه 29 مهر 1394, 19:34 عصر
کدهارو یک جوری بزار بشه خوند :متعجب: از اون تگ های C#‎‎‎ بالای ادیتورت استفاده کن یا فایل متنیشو آپلود کن
کدی که من برای بازکردن و خودن دیتابیس نوشتم اینه

var connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Database1.mdb";
var connection = new OleDbConnection(connectionString);
connection.Open();
var cmd = new OleDbCommand("select * from table1", connection);
var reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
MessageBox.Show(reader.FieldCount.ToString());

الان مشکل شما اینه که خطا داری یا جواب صحیح نداری؟
اگر خطا داری که به احتمال زیاد از متن کانکشن استرینگت هست پیام خطا رو بزار به همراه کدت

hhaaddii1363
چهارشنبه 29 مهر 1394, 19:37 عصر
اسم دیتابیس من test.mdb هست و توش یه table به نام فاکتور هست - براساس این می خوام load کنم و تحت هیچ شرایطی نمی خوام فایل دیگه ای load بشه . باید فیلد ها رو بشمارم ؟ 17 تا فیلد داره - در ضمن تگ C# رو تو سیستم من نشون نمیده - شرمنده

hhaaddii1363
چهارشنبه 29 مهر 1394, 19:40 عصر
کد بالایی رو تونستم شمارش کنم مرسی