PDA

View Full Version : سوال: مشکل در Update کردن رکورد در بانک اکسس



dharmaa
شنبه 12 مرداد 1392, 16:53 عصر
سلام بر دوستان خوبم .
من برای ویرایش رکورد ها م در بانک اکسس دچارمشکل شدم.مسئله اینه که اصلا آپدیت نمیکنه.هیچ خطایی نمیدهد. تراکنش با موفقیت انجام میشه ولی تغییرات رو توی جدول اعمال نمیکنه.این نمونه کدی هست که که در data layer نوشتم .میشه یه نگاهی بهش بیندازین .
command.CommandText = "UPDATE tblOperator SET [fldPassword]=@fldPassword, [fldUser]=@fldUser, [fldName]=@fldName,[fldEmail]=@fldEmail where [fldIdOperator]=@fldIdOperator";
command.Parameters.Add("@fldIdOperator", DbType.Int16 ).Value = fldIdOperator;
command.Parameters.Add("@fldName", DbType.String ).Value = fldName;
command.Parameters.Add("@fldUser", DbType.String).Value = fldUser;
command.Parameters.Add("@fldPassword", DbType.String).Value = fldPassword;
command.Parameters.Add("@fldEmail", DbType.String).Value = fldEmail;

dharmaa
شنبه 12 مرداد 1392, 17:38 عصر
شما درخواستو نفرستادی !
command.ExecuteNoneQuery();

موفق باشی
این خط رو که نوشتم ولی توی کدهای بالا دیگه نیاوردمش .این کوئری Execute میشه بدون هیچ خطایی ولی تغییرات توی رکورد اعمال نمیشه. ارسال پارامتر ها درسته ؟از AddWithValue هم استفاده کردم ولی جوابی نگرفتم.

sohil_ww
شنبه 12 مرداد 1392, 17:46 عصر
اطلاعات تو بانکت ثبت نمیشه ؟!

اگه اره کانکشن استرینگ بزار

اگه نه بیشتر توضیح بده !! (چه باهال دقیق دستور شرطی شد جوابم :لبخندساده:)

dharmaa
شنبه 12 مرداد 1392, 17:49 عصر
اطلاعات تو بانکت ثبت نمیشه ؟!

اگه اره کانکشن استرینگ بزار

اگه نه بیشتر توضیح بده !! (چه باهال دقیق دستور شرطی شد جوابم :لبخندساده:)
سلام دوست گرامی
اطلاعات ثبت میشه ،حذف هم نمیشه ولی متاسفانه آپدیت نمیشه.
این هم از کانکشن استرینگ:
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Um.accdb;Persist Security Info=False";

sohil_ww
شنبه 12 مرداد 1392, 17:51 عصر
کدتو بزار ان شاالله بتونم ردیفش کنم برات

dharmaa
شنبه 12 مرداد 1392, 18:02 عصر
کدتو بزار ان شاالله بتونم ردیفش کنم برات
این تابع Update :
public Boolean UpdatetblOperator(Int16 fldIdOperator, String fldName, String fldUser, String fldPassword, String fldEmail,
String fldMobile, OleDbCommand command)
{
int retval = 0;
bool flagTranc = true;
try
{
if (command == null)
{
command = DataProvider.CreateCommand();
flagTranc = false;
}

command.CommandText = "UPDATE tblOperator SET fldPassword=@fldPassword, fldUser=@fldUser, fldName=@fldName,fldEmail=@fldEmail,"+
" fldMobile=@fldMobile where fldIdOperator=@fldIdOperator";
command.Parameters.Add("@fldIdOperator", DbType.Int16 ).Value = fldIdOperator;
command.Parameters.Add("@fldName", DbType.String ).Value = fldName;
command.Parameters.Add("@fldUser", DbType.String).Value = fldUser;
command.Parameters.Add("@fldPassword", DbType.String).Value = fldPassword;
command.Parameters.Add("@fldEmail", DbType.String).Value = fldEmail;
command.Parameters.Add("@fldMobile", DbType.String).Value = fldMobile;
retval = DataProvider.ExecuteNonQuery(command);
if (!flagTranc)

command.Transaction.Commit();
}
catch (Exception ex)
{
if (command.Transaction != null)
command.Transaction.Rollback();
throw ex;
}
finally
{
if (!flagTranc)

command.Connection.Close();
}
return (retval > 0);
}
این تابع هیچ کجاش ایراد نداره نمیدونم چرا تغییرات رو اعمال نمیکنه .ارسال پارامتر هام درسته؟ایا روش دیگری هم برای ارسال پارامترها هست؟
ممنون میشم اگه کمکم کنید.

mousa1992
شنبه 12 مرداد 1392, 18:21 عصر
یکی از این دو راه رو تست کن
1 - روی دیتابیست توی solution explorer کلیک کن و از تب properties خاصیت copy to output directory رو روی do not copy قرار بده
108429

2 - بجای DataDirectory ادرس فایل های دیتابیس توی solution رو بده

نتیجه رو اعلام کن

sohil_ww
شنبه 12 مرداد 1392, 18:56 عصر
قبل از فراخوانی متد آپدیت دستور دیگه داری ؟!

برنامه رو بدون دیباگ اجرا کن ببین مشکلی تو کد هات هست یانه

dharmaa
شنبه 12 مرداد 1392, 23:41 عصر
سلام مجدد بر دوستان خوبم که کلی وقت گذاشتن و راهنمایی ام کردن.
مشکلم حل شد .تابع هیچ مشکلی نداشت .مشکل اینجا بود که شرط آپدیت کردن برقرار نبود.به عبارتی مقدار فیلد fldIdOperator به درستی مقدار دهی نمیشد .و به روش دیگری غیر از Add parameter بهش مقدار دادم و رکورد را آپدیت کرد.
باز هم بینهایت از اینکه وقت گذاشتین وپاسخگویم بودید سپاسگذارم...