View Full Version : متغیر Integer که مقدار Null را بپذیرد
majid_vb_2008
جمعه 16 مرداد 1388, 11:49 صبح
سلام دوستان
چجوري مي شه يك متغير از نوع انتيجر را با null پر كرد
ممنون از توجهتون
MahmoudiNik
جمعه 16 مرداد 1388, 12:42 عصر
سلام
فکر کنم با دستور مثلا:
a=nothing
بشه امتحان نکردم اما فکر کنم جواب بده.:متفکر:
majid_vb_2008
جمعه 16 مرداد 1388, 15:07 عصر
دوستان ديگه نظري ندارن
اين كه جواب نداد
hossein-khoshseyar
جمعه 16 مرداد 1388, 20:22 عصر
مطمئن نیستم یه امتحان بکن
try
x=y/0
end try
majid_vb_2008
چهارشنبه 04 شهریور 1388, 23:56 عصر
من هنوز نتيجه نگرفتم كسي بلد نيست
Hossis
پنج شنبه 05 شهریور 1388, 00:35 صبح
Dim j As Integer = 0
majid_vb_2008
پنج شنبه 05 شهریور 1388, 00:45 صبح
Dim j AsInteger = 0
اين كه شد Integer
من اينو براي اينجا لازم دارم
con.Open()
strsql = "SELECT MAX(id) FROM List"
com = New SqlCommand(strsql, con)
A = com.ExecuteScalar
con.Close()
وقتي بانك اطلاعاتي خالي باشه مقدار Null بر مي گردونه
pirmard
پنج شنبه 05 شهریور 1388, 00:54 صبح
Dim j AsInteger = 0اين كه شد Integer
من اينو براي اينجا لازم دارم
con.Open()
strsql = "SELECT MAX(id) FROM List"
com = New SqlCommand(strsql, con)
A = com.ExecuteScalar
con.Close()وقتي بانك اطلاعاتي خالي باشه مقدار Null بر مي گردونه
تایپ های معمول نمی تونن null بشن .
برای تعریف در اینگونه موارد باید از تایپ های nullable استفاده کنید
به این صورت :
Dim M As Nullable(Of Integer)
و یا اینکه یه علامت سوال بعد از نوع قرار بدین :
Dim M1 As Integer?
حالا می تونین این کد رو روش امتحان کنین :
MsgBox(M1.HasValue)
برای کدی هم که مثال زده بودید می تونین خروجی رو با hasvalue چک کنین . اگر true بود کارهای لازمه رو انجام بدین و در غیراینسورت (یعنی اگر false بود که به معنی Null بود خروجیه) روال موردنظر رو پی بگیرین.
//
ضمنا تا جایی که می دونم nothin با null فرق داره . چون دیدم یکی از دوستان گفته بود متغیر رو nothing کنین.
//
anooshiran
پنج شنبه 05 شهریور 1388, 02:25 صبح
سلام دوست عزيز
وقتي شما يك متغير عددي را nullable تعريف ميكنيد باز هم همان nothing است و مفهوم واقعي null را ندارد
با كدهاي زير تست كنيد
Dim M As Nullable(Of Integer)
If M.Equals(DBNull.Value) Then
MsgBox("Null")
ElseIf M.Equals(Nothing) Then
MsgBox("Nothing")
Else
MsgBox("else")
End If
در صورتيكه حتي از logic operator ها هم در حالت assign كردن نمي تونيد استفاده كنيد
در ضمن ميشه بگيد اين كد را از كجاي vb.net آورديد؟؟؟
dim i as integer ?
navid_8x
پنج شنبه 05 شهریور 1388, 03:15 صبح
Integer اصلا reference type نیست که null بشه.می تونی اون رو به صورت object تعریف کنی.
dim a as object
a=23
a=nothing
pirmard
پنج شنبه 05 شهریور 1388, 04:10 صبح
وقتي شما يك متغير عددي را nullable تعريف ميكنيد باز هم همان nothing است و مفهوم واقعي null را ندارد
با كدهاي زير تست كنيد
Dim M As Nullable(OfInteger)
If M.Equals(DBNull.Value) Then
MsgBox("Null")
ElseIf M.Equals(Nothing) Then
MsgBox("Nothing")
Else
MsgBox("else")
EndIf
در صورتيكه حتي از logic operator ها هم در حالت assign كردن نمي تونيد استفاده كنيد
به دلیل اینکه تمام متغیرها به صورت پیشفرض nothing هستن و نباید هم null باشه.
و دقیقا بهخاطر همین موضوع بهتر دیدم از hasvalue استفاده بشه . خط آخر پست قبلیم هم خواستم در مورد فرق null و nothing پیشنهاد کنم که بیشتر بحث کنیم، دیدم زیاد ربطی به سوال ایشون نداره.
در ضمن ميشه بگيد اين كد را از كجاي vb.Net آورديد؟؟؟
dim i as integer ?
فکر می کنم ایراد کد شما از فاصله ی بین علامت ؟ و integer باشه .
http://msdn.microsoft.com/en-us/library/ms235245.aspx
/
نظرتون در مورد این کد چیه ؟
Structure ExStruct
Public ExMem As Boolean
End Structure
Dim ExInstance As ExStruct = Nothing
If ExInstance.Equals(Nothing) Then
MsgBox("ExInstance is nothing")
Else
MsgBox("ExInstance isnt nothing")
End If
Dim ExNullable As Integer = Nothing
If ExNullable.Equals(Nothing) Then
MsgBox("ExNullable is nothing")
Else
MsgBox("ExNullable isnt nothing")
End If
anooshiran
پنج شنبه 05 شهریور 1388, 05:09 صبح
به دلیل اینکه تمام متغیرها به صورت پیشفرض nothing هستن و نباید هم null باشه.
و دقیقا بهخاطر همین موضوع بهتر دیدم از hasvalue استفاده بشه . خط آخر پست قبلیم هم خواستم در مورد فرق null و nothing پیشنهاد کنم که بیشتر بحث کنیم، دیدم زیاد ربطی به سوال ایشون نداره.
فکر می کنم ایراد کد شما از فاصله ی بین علامت ؟ و integer باشه .
http://msdn.microsoft.com/en-us/library/ms235245.aspx
/
نظرتون در مورد این کد چیه ؟
سلام دوست عزيز
در مورد integer? حق با شماست ولي اين از امكانات 2008 است و در 2005 امكان پذير نيست. و بنده هنوز با 2008 در گير نشده ام. البته بنا به دلائل خودم
در مورد بحث در باره null و nothing هم بنظرم بحث جالبي است به اين دليل كه برخي از دوستان فرق خاصي براي آن قائل نيستند.
و در مورد كدهايي كه مطرح كرديد. نمي دانم منظورتان از آن سئوال چه بود ولي كد شما
Dim ExInstance As ExStruct = Nothing
در ست مانند اين كد است
Dim ExInstance As ExStruct
يعني nothing تغييري در مقدار پيش فرض آيتم boolean آن نمي دهد چون شما ExMem را معادل nothing قرار نداده ايد و بدين دليل است كه شما وقتي آن را با nothing مقايسه مي كنيد ، ارزش آن nothing نيست بلكه false است.
ولي حال بياييد و اين كد را اينگونه مقايسه كنيد
Dim ExInstance As Boolean = Nothing
حال قضيه كاملا فرق مي كند و ارزش ExInstance واقعا nothing است
naser_feb8646
پنج شنبه 05 شهریور 1388, 05:15 صبح
سلام
دوست عزیز شما ابتدا یک متغیر از نوع Object تعریف کنید و مقدار کوئری SQL را در داخل آن بریزید سپس با یک دستور شرطی مقدار متغیر Object را چک کنید اگر پر بود با دستور Ctype مقدار اون رو به یک متغیر Integer تبدیل کنید
Mani_rf
پنج شنبه 05 شهریور 1388, 16:01 عصر
به نظر من هیچکدوم از این کارا لازم نیست (البته همش درسته ها) .
شما برای تبدیل مقدار Null که از دیباتیس می گیرید فقط کافی است که مقدار ورودی را به Integer تبدیل کنید.
con.Open()
strsql = "SELECT MAX(id) FROM List"
com = New SqlCommand(strsql, con)
A = Val(com.ExecuteScalar)
con.Close()
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.