PDA

View Full Version : چگونه فهمیدن مقدار Null که از بانک خوانده می شود (نیمه فوری)



روح اله معینی زاده
پنج شنبه 01 آبان 1382, 13:37 عصر
سلام به کلیه دوستان گرامی

دوستان، من یک برنامه نوشتم که از بانک MySql داره اطلاعات رو دریافت می کنه و در همان حال در یه فایل متنی که csv است ذخیره هم می کنه. بعد از اینکه 799 رکورد رو رد می کنه، روی فیلد محل تولد که خالی هست گیر می کنه و خطای Invalid use of NULL می ده. وقتی موشواره رو روی مقدار اون (در حالت خطاگیری) می گیرم نشون می ده که مقدارش NULL هست. البته من این رو چک می کنم ولی نمی دونم چرا جواب نمی ده. دستوراتی رو هم که در اون خط به کار بردم تا جواب بده، به قرار زیر می باشد.

اولین راه حل که جواب نداد:


.Fields("BIRTH_PLACE").Value = IIf(Trim$(DE.rsEduc_Persons.Fields("BirthLoc").Value = Null), "", Trim$(DE.rsEduc_Persons.Fields("BirthLoc").Value))


دومین راه حل که جواب نداد:


.Fields("BIRTH_PLACE").Value = IIf(Trim$(DE.rsEduc_Persons.Fields("BirthLoc").Value Is Null), "", Trim$(DE.rsEduc_Persons.Fields("BirthLoc").Value))


سومین راه حل که جواب نداد:


.Fields("BIRTH_PLACE").Value = IIf(IsNull(DE.rsEduc_Persons.Fields("BirthLoc").Value), "", Trim$(DE.rsEduc_Persons.Fields("BirthLoc").Value))

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

از طریق نرم افزار EMS MySql Manager هم که نگاهش کردم، مقدارش برابر Null بود، ولی نمی دونم چرا وی بی نمی تونه چک کنه که مقدار آن برابر Null است.

مشکلش کجاست؟

با احترام- خدانگهدار

S.Azish
پنج شنبه 01 آبان 1382, 16:20 عصر
به نظر من کد زیر خیلی راحتتره




.Fields("BIRTH_PLACE").Value = DE.rsEduc_Persons.Fields("BirthLoc").Value & ""

روح اله معینی زاده
شنبه 03 آبان 1382, 08:02 صبح
با سلام خدمت جناب آذیش

از راهنمایی شما متشکرم. روش شما جواب داد، ولی آیا راهی نداریم که بشود مقدار Null را به صورت صحیحی چک کرد؟ آیا ممکنه نوع داده Null که در MySQL وارد می کنند با مقدار Nullی که در وی بی تخصیص می دهند تفاوت داشته باشد؟ (ببخشید اگه سوال مسخره‌ای کردم)

با احترام- روح اله معینی زاده
خدانگهدارتون باشه.

hmm
شنبه 03 آبان 1382, 10:54 صبح
با سلام
میتونی از تایع isnull(feild_name) استفاده کنی
if isnull(field_name) then str='0'

S.Azish
شنبه 03 آبان 1382, 12:34 عصر
دلیلی که شاید مسخره به نظر برسه استفاده از تابع IIF هست, اگر به این شکل بنویسید درست کار میکنه!



If IsNull(DE.rsEduc_Persons.Fields("BirthLoc").Value) Then
.Fields("BIRTH_PLACE").Value =""
Else
.Fields("BIRTH_PLACE").Value =DE.rsEduc_Persons.Fields("BirthLoc").Value
End If

کم حوصله
شنبه 03 آبان 1382, 21:51 عصر
دلیلی که شاید مسخره به نظر برسه استفاده از تابع IIF هست
ببخشید آقای آذیش چرا استفاده کردن از iif مسخره است ؟؟؟؟ :shock:

S.Azish
دوشنبه 05 آبان 1382, 15:02 عصر
استفاده کردن از IIF مسخره نیست و خیلی هم جالبه ولی این مشکل VB هست که اگر Null برای یکی از پارامترهای این تابع فرستاده بشه, کامپایلر خطا میگیره