ورود

نسخه کامل مشاهده نسخه کامل : Error in DataColumn DataType



anvar.net
09-11-2010, 23:06
با سلام

در داخل يك كلاس يه تابعي دارم واسه اضافه كردن ستون داده به يك جدول داده. متاسفانه هر جايي كه نوع داده DateTime هست ارور مي ده. واسه ساير انواع داده ها مثل Guid , String و ... مشكلي نداره ولي هر جايي نوع داده ستون تاريخ باشه. اروره مي ده :
پيام ارور : 'dataType' argument cannot be null. Parameter name: dataType


كد :

GetNewTestDS = New DataSet
Dim objdatatable As DataTable = GetNewTestDS.Tables.Add("Test")
Dim objdatacolumn As DataColumn



objdatacolumn = New DataColumn("TUpDate", Type.GetType("System.DateTime"))
objdatacolumn.AllowDBNull = False

objdatatable.Columns.Add(objdatacolumn)



ممنون ميشم از راه حل شما:21:

_H2_
10-11-2010, 01:52
سلام

متن خطای شما حاکی از ان است که تابع GetType شما مقدار صحیحی بر نمیگرداند.
قاعدتاً باید درست کار کند ولی در کل این یک تابع runtime است که در در زمان اجرا پردازش کرده و مقدار مناسب را پیدا کرده و باز میگرداند.

معمولاً تا وقتی میتوان مقدار ثابت و غیر runtime ای داشت از یک دستور یا تابع runtime استفاده نمیکنیم

توابع تا وقتی برنامه اجرا نشود مشکلشان معلوم نمیشود و در زمان کامپایل هم اگر ایرادی در تایپ مثلاً string ورودیتان باشد هیچ خطایی دریافت نمیکنید، ضمن اینکه سرعت و بازدهی ثابتهای کامپایلی را هم ندارند.

در VB.Net کلمه کلیدی به نام GetType وجود دارد، شاید به ظاهر نامش شبیه GetType مورد استفاده شما باشد ولی در بنیان روش کار تفاوت زیادی دارد.
این کلمه کلیدی معادل typeof در #C است هم یک ثابت کامپایلی باز میگرداند و هم اگر اشتباه تایپی باشد در زمان کامپایل متوجه میشوید و سرعت و بازدهی تان هم حدکاثر ممکن (برای اخذ یک System.Type) است.

ضمن اینکه در برخی از مکان ها شما باید ثابت کامپایلی داشته باشید و هر چیزی غیر از این کلمه کلیدی کار نخواهد کرد.


مثلاً

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.

anvar.net
10-11-2010, 13:07
ممنون دوست عزيز

با همون Type.GetType("System.DateTime حل شد

مشكل اينجا بود كه بين دو عبارت System.String - هر دو با حروف بزرگ
و
عبارت system.String تفاوت هست. در مورد DateTime هم همينطور. مثلا اگر بنويسم Datetime ارور مي ده. اما اگه بذارم DateTime درست كار مي كنه

ممنون از اطلاعات مفيد شما