PDA

View Full Version : سوال: مشکل در ذخیره فایل در بانک اطلاعاتی



forodo
یک شنبه 12 آبان 1392, 22:29 عصر
سلام
در کد زیر گفتم اگر تکست باکس خالی بود اون دو فیلد که FileFile نوع داده ای OLE Object داره و FormateFile نوع داده ای text داره رو خالی ذخیره کن.

if (textBox1.Text == "")
{
objcommand1.Parameters.AddWithValue("@FileFile", null);
objcommand1.Parameters.AddWithValue("@FormateFile", null);
}
else
{
objcommand1.Parameters.AddWithValue("@FileFile", File.ReadAllBytes(MasireFile));
objcommand1.Parameters.AddWithValue("@FormateFile", FormateFile);
}

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

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
MasireFile = openFileDialog1.FileName;
FormateFile = Path.GetExtension(MasireFile);
textBox1.Text = Path.GetFileNameWithoutExtension(MasireFile);
}

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

Parameter @FileFile has no default value.

forodo
دوشنبه 13 آبان 1392, 12:58 عصر
اگر بد توضیح دادم بگید کجاش رو متوجه نشدید تا بیشتر توضیح بدم.

nafisehk
سه شنبه 14 آبان 1392, 08:20 صبح
سلام
میتونید بررسی کنید اگهfilename مقداری نداشت عمل ثبت انجام نشه. و اگه + فایل ااطلاعات دیگه ای هم ذخیره میکنید که میخواید ثبت شن به filename یه مقدار اولیه بدید که اگه فایلی انتخاب نشد اون مقدار رو پاس بده

و یه روش دیگه
شما دو تا commandtext داشته باشی چک کنی اگه همرا ه اطلاعات دیگه، فایلی هم انتخاب شده اون فایل و نوعش و ذخیره کنی ،اگه نه فقط بقیه اطلاعات رو ذخیره کنی.

malihehshajari
سه شنبه 14 آبان 1392, 08:48 صبح
خب حتما وقتی داشتید جدول دیتابیستون رو میساختید برای این فیلد اجازه پذیرفتن مقدار null رو ندادید . بخاطر همین داره خطا میده . یا باید اونجا اجازه اینکه این فیلدها خالی باشن رو بدید . یا اینکه یک مقدار پیش فرض براش در نظر بگیرید و اگه تکست باکس خالی بود اون مقدار ذخیره بشه

forodo
سه شنبه 14 آبان 1392, 09:50 صبح
سلام
شما دو تا commandtext داشته باشی چک کنی اگه همرا ه اطلاعات دیگه، فایلی هم انتخاب شده اون فایل و نوعش و ذخیره کنی ،اگه نه فقط بقیه اطلاعات رو ذخیره کنی.
این روش خوب بود و جواب داد.
ولی اگر بشه راه حل این مشکل رو فهمید خیلی عالی میشه.

forodo
سه شنبه 14 آبان 1392, 09:52 صبح
خب حتما وقتی داشتید جدول دیتابیستون رو میساختید برای این فیلد اجازه پذیرفتن مقدار null رو ندادید . بخاطر همین داره خطا میده . یا باید اونجا اجازه اینکه این فیلدها خالی باشن رو بدید . یا اینکه یک مقدار پیش فرض براش در نظر بگیرید و اگه تکست باکس خالی بود اون مقدار ذخیره بشه
بانک اطلاعاتی Access هستش و من هرموقع دارم میسازم جایی نمی گم که مقدار null قبول کن یا نکن. نمی دونم نوع داده ای OLE Object که برای فیلد تعریف کردم حتماً باید مقدار بهش داد یا نداد.

malihehshajari
سه شنبه 14 آبان 1392, 10:07 صبح
بانک اطلاعاتی Access هستش و من هرموقع دارم میسازم جایی نمی گم که مقدار null قبول کن یا نکن. نمی دونم نوع داده ای OLE Object که برای فیلد تعریف کردم حتماً باید مقدار بهش داد یا نداد.

وقتی داری فیلدارو توی دیتابیس تعریف میکنی قسمت تنظیماتش پایین صفحه (قسمت general )
خاصیت required رو برابر no قرار بدید