PDA

View Full Version : سوال: اگه فیلد عکس (image) نال باشه؟



tik_tak
یک شنبه 07 مهر 1387, 14:41 عصر
با سلام
من با این دستورات در جدولم اینزرت میکنم :(هررکورد شامل فیلدنام،فامیلی،عکس است)




procedure TForm1.Save;
var
stream:tstream;
begin
with ADOQuery1 do
begin
sql.Text:='select * from picsample';
Open;
end;
stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
image1.Picture.Graphic.SaveToStream(stream);
With ADOQuery1 do
begin
SQL.Text:='insert into picsample (name,family,pic) VALUES (:p0,:p1,:p2)';
Parameters.ParamByName('p0').Value:=edit1.Text;
Parameters.ParamByName('p1').Value:=edit2.Text;
Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
ExecSQL;
end;
end;


اگه کاربر عکسی رو وارد نکنه و انتخاب نکنه اینجوری بگم اگه فیلد عکس موقع اینزرت نال باشه برنامه ارور میده و دیگه نمیشه کاری کرد !با اینکه من تو اس کیوال فیلد عکس رواجازه نال بودن بهش دادم !

میخوام بدوونم چه جوری کدی بنویسم که چک کنه اگه کاربر عکسی رو انتخاب نکنه نال بزاره و دیگه این ارور و نده ...
راستی به این خط قرمز رنگ هم ارور میده !

shervin farzin
یک شنبه 07 مهر 1387, 17:34 عصر
سلام
يه تابع به اين شكل به برنامت اضافه كن :

function TForm1.EmptyPic(x: timage): boolean;
begin
if x.Picture.Graphic=nil then result:=true else result:=false;
end;

حالا اون خط قرمز به صورت زير تغيير ميكنه :

if not EmptyPic(image1) then image1.Picture.Graphic.SaveToStream(stream);
از طرف ديگه 6 خط بعداز اون خط قرمز رو ( كد زير ) :

Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
بايد عوض كني چون در اين خط هيچ محتوايي براي متغير Stream نداري . پس اين خط هم
عوض ميشه و تبديل ميكنيش به اين :

if not EmptyPic(image1) then
Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob)
else
Parameters.ParamByName('p2').Value:=null;

موفق باشيد .

m1975b
چهارشنبه 17 مهر 1387, 23:59 عصر
If FileUpload.PostedFile.ContentLength = 0 Then
lblMsgImage.Text = "فايلي انتخاب نشده است "
Exit Sub
End If

m1975b
پنج شنبه 18 مهر 1387, 00:02 صبح
In SQL:
select picture from table where DATALENGTH(picture)>0

or

select picture from table where picture is not NULL