PDA

View Full Version : پر کردن فیلد AutoNumber (فوری)



فاطمه هاشمیان
دوشنبه 30 خرداد 1384, 21:58 عصر
یه جدول به طور Dynamic ساخته میشه فیلد ID_t از این جدول AutoNumber است من این فیلد رو میخوام پر کنم و این کد رو براش نوشتم

dataSet11.Tables[NameOfTable].Rows.Add(row);
oleDbDataAdapter1.RowUpdated += new System.Data.OleDb.OleDbRowUpdatedEventHandler(OnRo wUpdated);

private/*static*/ void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
{
// Include a variable and a command to retrieve the identity value from the Access database.
int newID = 0;
OleDbCommand idCMD = new OleDbCommand("SELECT ID_f FROM " + NameOfTable , oleDbConnection1);

if (args.StatementType == StatementType.Insert)
{
// Retrieve the identity value and store it in the CategoryID column.
newID = (int)idCMD.ExecuteScalar();
args.Row["ID_f"] = newID;
}
}
اما باز هم این Erorr رو میگیره

An unhandled exception of type 'System.Data.NoNullAllowedException' occurred in system.windows.forms.dll

Additional information: Column 'ID_f' does not allow nulls.
چه جوری میتونم این فیلد رو پر کنم؟ :گیج:

علیرضا مداح
دوشنبه 30 خرداد 1384, 22:52 عصر
سلام .

چه جوری میتونم این فیلد رو پر کنم؟
فیلد AutoNumber به طور خودکار در هنگام اضافه شدن رکورد جدید پر میشود ، لذا لازم نیست که شما آن را مقداردهی نمایید .

فاطمه هاشمیان
سه شنبه 31 خرداد 1384, 08:12 صبح
نه وقتی من جدولم رو Dynamic ساختم این فیلد پر نمیشه و همون Error بالا رو میده تو MSDN نوشته بود که این جوری باید (با کد بالا )این فیلد رو پر کنم اما باز هم همون Error را میدهد :cry: :sad2:
لطفا" راهنمایی کنید

فاطمه هاشمیان
سه شنبه 31 خرداد 1384, 16:56 عصر
کسی نمیدونه
خیلی برام مهم. اگر میدونید ممنون میشم راهنمایی کنید

سار
سه شنبه 31 خرداد 1384, 19:37 عصر
تا جایی که من میدونم فیلد اتونامبر Read Only میشه.
بنابراین در کد قابل تغییر نیست و فکر نمیکنم نوع ساخت خیلی مطرح باشه.

فاطمه هاشمیان
سه شنبه 31 خرداد 1384, 20:23 عصر
صحبت شما درست اما وقتی جدول رو Dynamic میسازم Error باا رو میگیره که گفتم از روی این لینک
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconRetrievingIdentityOrAutonumberValues.asp
کد بالا رو نوشتم که برطرف شه اما باز هم Error بالا رو میده که نتونسته این فیلد رو پر کنه و این فیلد مقدار Null نمیتونه بگیره :cry:
خیلی سریع بهش احتیاج دارم
ممنون میشم راهنمایی کنید

dot_net_lover2
سه شنبه 31 خرداد 1384, 23:14 عصر
من واسه SQL از یک Query به شکل زیر استفاده میکنم که مشکلی هم ندارد و به نظرم با یکم تغییر بتونید واسه Access هم استفاده کنید


CREATE TABLE table1
(
code numeric
IDENTITY(1,1),
fname nvarchar(50),
lname nvarchar(50)
)
insert into table1 (fname,lname) values ('test','creat table')
insert into table1 (fname,lname) values ('test2','creat table2')
select * from table1

:موفق:

dot_net_lover2
سه شنبه 31 خرداد 1384, 23:33 عصر
توضیحی که خوده Access Help داده :


AutoNumber field
A field data type that automatically stores a unique number for each record as it is added to a table. An AutoNumber field always uses the Long data type. Numbers generated by an AutoNumber field cannot be modified unless special permission has been granted to the table through either the Grant or Revoke statements in SQL DDL syntax. The AutoNumber field is also known as a Counter or Identity data type. When using SQL DDL, this data type now supports varying seed and increment values. This differs from previous versions where the seed value was 1 and the increment value was 1.

طریقه ساخت Table دارای فیلد AutoNumber توسط دستورات SQl به صورت زیر است


CREATE TABLE table2
(
code Counter,
fname text,
lname text
)

البته بگم که خودم تست زدم جواب داد :موفق:

فاطمه هاشمیان
چهارشنبه 01 تیر 1384, 11:07 صبح
ممنونم :)

dot_net_lover2
چهارشنبه 01 تیر 1384, 12:23 عصر
قابلی نداشت :wink: