ورود

View Full Version : error :cannot convert null to string در جدول ado



northkh_rah
سه شنبه 07 فروردین 1386, 12:08 عصر
سلام من یه برنامه نوشتم با ado که دیتا بیسش اکسس این برنامه اطلاعات پرسنلی رو میگیره و امکان گزارش گیری با rave داره موقع ورود اطلاعات اگر کاربر بعضی از اطلاعات رو وارد نکنه در قسمت گزارشگیری مثلا بر حسب محل کار که می خواد جستجو کنه و نمایش بده error میده : cannot convert null to string .
من توی جدول اکسس default value رو "نامشخص " نوشتم اما بازم error میده . میشه کمک کنید.

2- یه فیلد tell دارم که شماره تلفن میگیره و نوعش number است میخوام وقتی کاربر text یا علایم + یا ... را وارد کرد بهش پیغام بده که کاراکتر صحیح وارد کنه میشه کمکم کنید.

hr110
یک شنبه 12 فروردین 1386, 12:24 عصر
احتمالاً در جایی از برنامه fields.value استفاده کرده اید و این مقدار را در یک رشته یا عدد منتقل میکنید. به جای آن از asString یا asInteger استفاده کنید.

northkh_rah
سه شنبه 14 فروردین 1386, 09:17 صبح
سلام hr110 ممنون از راهنماییتون من توی برنامم از field.value استفاده کرم و طبق توصیه شما asstring گذاشتم s1:=adotable1.FieldValues['nam'].asstring; اما پیغام invalid variant operation میده میشه راهنمایی کنید

hr110
سه شنبه 14 فروردین 1386, 09:28 صبح
متغییر S1 هم باید string باشد.

arshia_
سه شنبه 14 فروردین 1386, 10:05 صبح
ممکنه از توابع رشته ای استفاده کردی که باعث ایجاد مشکل می شه مثل تابع trim در زمانی که رشته ای وجود نداشته باشه باعث مشکل می شه
در مورد بعدی هم می تونی از maskedit استفاده کنی و یا اینکه خودت در هنگام فشرده شدن کلید اونو کنترل کنی

northkh_rah
چهارشنبه 15 فروردین 1386, 09:53 صبح
h110 متغیرم از نوع string است اما بازم error میده من یه پروسیجر برای جستجو دارم که وقتی قسمتی از کلمه مورد نظر رو بنویسیم واسمون تمام کلماتی که شامل اون هست رو نشون میده به این پروسیجر که میرسه پیغام میده
var str1,s1,s2,s3,s4,s5,s6 ,s7:string;
adotable1.FieldValues['nam'].asstring:=s1;
adotable1.FieldValues['famil'].asstring:=s2 ;

hr110
چهارشنبه 15 فروردین 1386, 12:29 عصر
با این بخش از سورس کد برنامه نمیشه مشکل رو تشخیص داد، بخش بزرگتری رو قرار بده ..

northkh_rah
چهارشنبه 15 فروردین 1386, 13:16 عصر
while adotable1.Eof=false do
begin
s1:= adotable1.FieldValues['nam'].asstring;
s2:= adotable1.FieldValues['famil'].asstring;
s3:=adotable1.FieldValues['semat'].asstring;
s4:= adotable1.FieldValues['mohalkh'].asstring;
s5:= adotable1.FieldValues['shahr'].asstring;
s6:=adotable1.FieldValues['tell'].asstring;
s7:=adotable1.FieldValues['address'].asstring;
str1:=edit1.Text;
i:=pos(str1,s4);
label2.Caption:=inttostr(i);
if i<>0 then
adotable2.InsertRecord([s1,s2,s3,s4,s5,s6,s7]);
adotable1.Next;
end;

s1,s2, ...,str:stringهستند

hr110
چهارشنبه 15 فروردین 1386, 16:01 عصر
این بخش از کد شما نمیتواند چنین خطایی را ایجاد کرده باشد، در کدام خط خطا بروز میکند؟

arshia_
پنج شنبه 16 فروردین 1386, 08:15 صبح
احتمال خیلی زیاد یکی از فیلدهای ثبت شده در بانک شما مقدار تهی داره
بهتره طوری اطلاعات رو ذخیره کنی که مقدار تهی با یه مقدار مثلا - پر بشه
یا اینکه اول تست کنی اگر مقداری تهی نبود اونو به یه متغیر رشته ای نسبت بدی
حتی عبارت asstring هم می تونه توی این مورد ایجاد مشکل کنه
یا باید از مقدار variant استفاده کنی و یا نحوه ذخیره و بازیابی در بانک رو بازنگری کنی

hr110
پنج شنبه 16 فروردین 1386, 08:23 صبح
حتی عبارت asstring هم می تونه توی این مورد ایجاد مشکل کنه
مقدار asString هیچگاه نمیتواند NULL نشود! و در مواردی که در جدول NULL باشد ، asString مقدار '' خواهد بود و نیازی به توضیح ندارد که ''<>NULL