PDA

نسخه کامل مشاهده نسخه کامل : خطادر کد جستجو در دلفی



id_mohamadi
19-09-2010, 10:51
سلام
من چنین کدی را برای تکراری بودن شماره دانشجویی نوشتم ولی در موقع ثبت با چنین خطایی مواجه می شم .نمی دونم اشکالش از چی؟لطفا کمک کنید


procedure Tsabt_stuFm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9':;
#13:if MasDataDM.Tstudent.Locate('id_stu',Edit1.Text,[]) then
begin
Application.MessageBox('id tekrari, dobare talash konid,'Error',MB_OK+MB_ICONWARNING);
DBEdit1.Text:='';
Edit1.Text:='';
Edit1.SetFocus;
MasDataDM.Tstudent.Insert;
end
else
begin
MasDataDM.Tstudent.Insert;
DBEdit1.Text:=Edit1.Text;
DBEdit2.SetFocus;
end;
#27:;
#8:;
else
key:=#0;
end;
end;
;


پیغام خطا:

project proj1 .exe raised exception class EoleException with messege 'cannot insert the valuenull into column 'id_stu',table proj1.dbo.student ';coulumn does not allow nulls .insert fails '.process stopped.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

M.Hashemi
19-09-2010, 13:03
با سلام
اگر ممکنه واضحتر سوال را بنویسید.
اما چیزی که من از خطای شما متوجه شدم این است که شما می خواهید یک مقدار null را ذخیره کنید که این کار باعث می شود عمل insert انجام نشود و پیغام خطا raised exception نمایش داده شود.
اگر بیشتر در مورد سوالتون توضیح دهید میتونم بیشتر کمکتون کنم.
با تشکر

id_mohamadi
19-09-2010, 14:24
با سلام
اگر ممکنه واضحتر سوال را بنویسید.
اما چیزی که من از خطای شما متوجه شدم این است که شما می خواهید یک مقدار null را ذخیره کنید که این کار باعث می شود عمل insert انجام نشود و پیغام خطا raised exception نمایش داده شود.
اگر بیشتر در مورد سوالتون توضیح دهید میتونم بیشتر کمکتون کنم.
با تشکر


ببینید من توی صفحه ام یک ادیت و 1 دیبی ادیت دارم که هر دو هم مربوط به شماره دانشجویی اند که از این دو تا دیبی ادیت را visible را فالس کردم .بعد برای مقداری که داخل ادیت هست جستجو می کنه توی بانک اگر تکراری باشه پیغام خطا می ده و اگر این مقدار قبلا استفاده نشده باشه مقدار ان را به دیبی ادیت منتقل می کنه و بعد در دستور اینزرت که ثبت بشه
ولی مشکلی که هست اینکه فکر کنم مقدار این ادیت به دیبی ادیت منتقل نمی شه برای همین اینگار مقدار خالی توش قرار می گیره و چون من اون توی بانک کلید تعریف کردم مقدارش نمی تونه خالی باشه خطا می گیره .

id_mohamadi
20-09-2010, 10:35
کسی جوام را نمی ده:41:

M.Hashemi
21-09-2010, 10:25
با سلام
شما نباید این گونه از dbedit استفاده کنید.
برای دستیابی به مقدار یک سلول(cell) می توانید از دستور زیر استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این دستور مقدار فیلد رکورد جاری را برمی گرداند.
و برای چک کردن وجود یک مقدار در یک فیلد میتونید از کد T-Sql زیر استفاده کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر این دستور مقداری بیش از 0 را برگرداند یعنی چنین رکوردی وجود دارد در غیر این صورت یعنی چنین رکوردی وجود ندارد.
حال اگر شما باز هم خواستید از dbedit به جای دستور FieldValue استفاده کنید باید روند دستور زیر را رعایت کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
باز هم میگم بهتر است از دستور fieldvalue استفاده کنید.
با تشکر