PDA

View Full Version : دلفی قاطی کرده(ارور عجیب)



Mask
پنج شنبه 01 مرداد 1388, 20:12 عصر
سلام
من یه برنامه حسابداری نوشتم دوستان اگه ممکنه منو راهنمایی کنند
در عکس زیر که فرم فروشه توسط دستور زیر نوشتم که اگه مقدار فروش از مقدار باقیمانده بیشتر بود پیغام بده و برنامه اجازه ثبت نداره و اگه مقدار فروش کمتر و مساوی مقداره باقیمانده بود اجازه فروش هست .
برنامه درست کار میکنه و مثل عکس زیر مقدار باقیمانده 1340 هست هر عددی کمتر یا مساوی این عددو بزنی برنامه درست کار می کنه اما از شماره 2- تا 9 برنامه قاطی می کنه و پیغامی که مربوط به مقدار فروش بیشتر از باقیمانده هست میاد.
چرا؟


procedure TForm3.Button1Click(Sender: TObject);
begin
If (Edit1.Text='') or (Edit2.Text='') or (ComboBox1.Text='') or (Edit3.Text='') or (Edit4.Text='0') or (Edit5.Text='') or (Edit6.Text='') or (Edit7.Text='') Then
Begin
ShowMessage('اطلاعات را کامل وارد کنید');
End Else Begin
if Edit4.Text>Edit3.Text then begin
ShowMessage('تعداد فروش از تعداد باقیمانده بیشتر است برنامه مقدور به ثبت نیست');
Edit4.SetFocus;
end else begin
If MessageDlg('آیا مایل به ثبت اطلاعات هستید',mtWarning,[mbYes,mbNo],0)=mrYes Then
Begin
DataModule7.Forosh.Close;
DataModule7.Forosh.Open;
DataModule7.Forosh.Active := True;
DataModule7.Forosh.Insert;
DataModule7.Forosh.FieldByName('tarikh').AsString := Edit1.Text;
DataModule7.Forosh.FieldByName('faktor').AsString := Edit2.Text;
DataModule7.Forosh.FieldByName('kala').AsString := ComboBox1.Text;
DataModule7.Forosh.FieldByName('tedadbaghimande'). AsString := Edit3.Text;
DataModule7.Forosh.FieldByName('tedadforosh').AsSt ring := Edit4.Text;
DataModule7.Forosh.FieldByName('gheimatkharid').As String := Edit5.Text;
DataModule7.Forosh.FieldByName('gheimatforosh').As String := Edit6.Text;
DataModule7.Forosh.FieldByName('jamforosh').AsStri ng := Edit7.Text;
DataModule7.Forosh.FieldByName('gheimatkharid1').A sString := gheimat;
DataModule7.Forosh.Post;

ShowMessage('ÇØáÇÚÇÊ ÈÇ ãæÝÞíÊ ËÈÊ ÔÏ');
Form3.Visible:=False;
Form2.Enabled:=True;
Form2.SetFocus;
End;
End;
end;
end;

vcldeveloper
پنج شنبه 01 مرداد 1388, 20:52 عصر
برای اینکه شما بجای مقایسه مقدار عددی وارد شده در Edit3 و Edit4 دارید مقدار حرفی آنها را مقایسه می کنید. شما می بایست می نوشتید:


if StrToInt(Edit4.Text) > StrToInt(Edit3.Text) then

mohammad_alikhani
پنج شنبه 01 مرداد 1388, 20:52 عصر
سلام
من یه برنامه حسابداری نوشتم دوستان اگه ممکنه منو راهنمایی کنند
در عکس زیر که فرم فروشه توسط دستور زیر نوشتم که اگه مقدار فروش از مقدار باقیمانده بیشتر بود پیغام بده و برنامه اجازه ثبت نداره و اگه مقدار فروش کمتر و مساوی مقداره باقیمانده بود اجازه فروش هست .
برنامه درست کار میکنه و مثل عکس زیر مقدار باقیمانده 1340 هست هر عددی کمتر یا مساوی این عددو بزنی برنامه درست کار می کنه اما از شماره 2- تا 9 برنامه قاطی می کنه و پیغامی که مربوط به مقدار فروش بیشتر از باقیمانده هست میاد.
چرا؟


به نظرم بهتره بخش زیر رو به Integer تبدیل کنی و مقایسه کنی



Edit4.Text>Edit3.Text

مثلا اینجوری


StrToInt(Edit4.Text) > StrToInt(Edit3.Text)