PDA

View Full Version : سوال: خطای OleDbException در درج اطلاعات



samin_panahi
چهارشنبه 03 مهر 1392, 18:55 عصر
سلام

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

شماره تلفن و موبایل رو داخل اکسس از نوع number تعریف کردم و field size رو double گذاشتم
ورود نام و نام خانوادگی رو داخل اکسس الزامی کردم (required > yes) ، یعنی اگر وارد نکنم اکسس قبول نمی کنه


http://www.upload9.ir/images/iuf5g4zg9i6s69vmqm46.png


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



http://www.upload9.ir/images/1kdp4sq0h1cfkscqgbao.png



ممنون می شم راهنمایی کنید

sadeghjun
چهارشنبه 03 مهر 1392, 19:57 عصر
سلام
بهتره که شما بیای چک کنی که اگه مثلا Texbox2 , Texbox1 خالی نبودن بیا اطلاعات رو وارد کن. وگرنه یه پیغام بده

samin_panahi
چهارشنبه 03 مهر 1392, 21:46 عصر
سلام
بهتره که شما بیای چک کنی که اگه مثلا Texbox2 , Texbox1 خالی نبودن بیا اطلاعات رو وارد کن. وگرنه یه پیغام بده

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

sadeghjun
چهارشنبه 03 مهر 1392, 22:46 عصر
خوب تو دیتابیس Allow Null شماره تلفن و موبایل را True قرار بدید.

Kubuntu
چهارشنبه 03 مهر 1392, 22:47 عصر
باید مقدار null پاس بدی. داخل sql هم همینطوریه چه allow null باشه چه نباشه وقتی می خوای رکورد اضافه کنی باید اون رو هم پرکنی.

Kubuntu
چهارشنبه 03 مهر 1392, 22:50 عصر
راستی واسه type برای تلفن پیشنهادم اینه که از (varchar(15 استفاده کنی

sadeghjun
چهارشنبه 03 مهر 1392, 22:51 عصر
بازم اگه مشکلتون حل نشد کد بذارید

samin_panahi
چهارشنبه 03 مهر 1392, 23:18 عصر
خوب تو دیتابیس Allow Null شماره تلفن و موبایل را True قرار بدید.

دیتابیس اگسس هست برای مقادیر عددی گزینه ی Allow Null نداره
http://www.upload9.ir/images/er30rsrx6m8wk7ntwmmx.png

samin_panahi
چهارشنبه 03 مهر 1392, 23:18 عصر
باید مقدار null پاس بدی. داخل sql هم همینطوریه چه allow null باشه چه نباشه وقتی می خوای رکورد اضافه کنی باید اون رو هم پرکنی.

متوجه نشدم، می شه بیشتر توضیح بدید؟

samin_panahi
چهارشنبه 03 مهر 1392, 23:20 عصر
بازم اگه مشکلتون حل نشد کد بذارید

کد اینه :


private void btn_add_Click(object sender, EventArgs e)
{
if (txt_name != null)
{
oleDbCommand1.Parameters.Clear();
oleDbCommand1.CommandText = "insert into phon (name,family,job,city,phon,cell,mail) values(@Name,@Family,@Job,@City,@Phone,@CellPhone, @Email)";

//oleDbCommand1.Parameters.AddWithValue("@Code", (dataGridView.Rows.Count).ToString());
oleDbCommand1.Parameters.AddWithValue("@Name", txt_name.Text);
oleDbCommand1.Parameters.AddWithValue("@Family", txt_family.Text);
oleDbCommand1.Parameters.AddWithValue("@Job", txt_job.Text);
oleDbCommand1.Parameters.AddWithValue("@City", txt_city.Text);
oleDbCommand1.Parameters.AddWithValue("@Phone", txt_phon.Text);
oleDbCommand1.Parameters.AddWithValue("@CellPhone", txt_cell.Text);
oleDbCommand1.Parameters.AddWithValue("@Email", txt_mail.Text);

if (Regex.IsMatch(txt_mail.Text, @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"))
{
oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();


oleDbCommand1.CommandText = "select name,family,job,city,phon,cell,mail from phon";
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = oleDbCommand1;
adapter.Fill(dt);
dataGridView.DataSource = dt;
dataGridView.Visible = true;

oleDbConnection1.Close();
}

else
{
MessageBox.Show("ایمیل معتبر نیست");
}


}
else
MessageBox.Show("ورود نام و نام خانوادگی الزامی می باشد");

}

Kubuntu
چهارشنبه 03 مهر 1392, 23:20 عصر
شما یک textbox.text به فیلدهای جدول ارسال می کنی وقتی چیزی نیس می شه null یا اگه اشتباه نکنم string.null

sadeghjun
پنج شنبه 04 مهر 1392, 00:53 صبح
دیتابیس اگسس هست برای مقادیر عددی گزینه ی Allow Null نداره
http://www.upload9.ir/images/er30rsrx6m8wk7ntwmmx.png

مال من که داره!!:

111201

دلیلش اینه که نوعش رو از نوع تکس نذاشتی!!

naghshineh m&h
پنج شنبه 04 مهر 1392, 00:59 صبح
مدل چک کردن در مورد خالی بودن تکست باکس خارج از استاندارد مایکروسافت است باید این شکلی باشه (بقیش را هم اصلاح کنید ) موفقیت در پیروی از استاندارد هاست
if (TextBox1.Text=String.Empty)
(
//True
Else
)//False

samin_panahi
پنج شنبه 04 مهر 1392, 01:17 صبح
مدل چک کردن در مورد خالی بودن تکست باکس خارج از استاندارد مایکروسافت است باید این شکلی باشه (بقیش را هم اصلاح کنید ) موفقیت در پیروی از استاندارد هاست
if (TextBox1.Text=String.Empty)
(
//True
Else
)//False


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

samin_panahi
پنج شنبه 04 مهر 1392, 01:19 صبح
مال من که داره!!:

111201

دلیلش اینه که نوعش رو از نوع تکس نذاشتی!!

بله، از ابتدا چون می دونستم مشکل مال همین دوتاییه که از نوع عددی تعریف کردم تو سوال گفتم فقط همین دوتا رو مشکل داره
تغییر دادم / درست شد
ممنون از وقتی که گذاشتید