C++Builder问题

woshigaoshou12 2011-04-25 05:48:09
一个销售系统出库的问题:求高手指教!编译是通过了的,但是在运行的时候就直接死机了....
代码如下:
void __fastcall TForm3::Button2Click(TObject *Sender)
{
int a;
if(BH->Text=="")
{ShowMessage("仓库编号不能为空!");
BH->SetFocus();
return;
}
else if(CD->Text=="")
{ShowMessage("产地不能为空!");
CD->SetFocus();
return;
}
else if(PM->Text=="")
{ ShowMessage("品名不能为空!");
PM->SetFocus();
return;
}
else if(BM->Text=="")
{ ShowMessage("产品编码不能为空!");
BM->SetFocus();
return;
}
else if(CZ->Text=="")
{ ShowMessage("材质不能为空!");
CZ->SetFocus();
return;
}
else if(GG->Text=="")
{ ShowMessage("规格不能为空!");
GG->SetFocus();
return;
}
else if(SL->Text=="")
{ ShowMessage("出库数量不能为空!");
SL->SetFocus();
return;
}
else if(SJ->Text=="")
{ ShowMessage("出库时间不能为空!");
SJ->SetFocus();
return;
}
else if(JS->Text=="")
{ ShowMessage("经手人不能为空!");
JS->SetFocus();
return;
}
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from gjxx where 产品编码=:t ");
ADOQuery1->Parameters->ParamByName("t")->Value=BM->Text;
ADOQuery1->Open();
if(ADOQuery1->Eof)
{
ShowMessage("该产品不存在!");
BM->Clear();
BH->Clear();
CD->Clear();
PM->Clear();
CZ->Clear();
GG->Clear();
SL->Clear();
SJ->Clear();
JS->Clear();
BM->SetFocus();
ADOQuery1->Close();
return;
}
else
{
a=ADOQuery1->FieldValues["件数"]-StrToInt(SL->Text);
if(a>=0)
{ADOQuery1->Edit();
ADOQuery1->FieldValues["件数"]=a;
ADOQuery1->Post();
ADOQuery1->Close();
}
else
ShowMessage("库存不够,请申请采购!");

}
ADOQuery1->Close();
//添加新记录
TLocateOptions Opts;
Opts<<loPartialKey;
ADOTable1->First();
while(!ADOTable1->Eof)
{
ADOTable1->Next();
}
ADOTable1->Insert();//准备添加
ADOTable1->FieldValues["仓库编号"]=BH->Text;
ADOTable1->FieldValues["产地"]=CD->Text;
ADOTable1->FieldValues["品名"]=PM->Text;
ADOTable1->FieldValues["产品编码"]=BM->Text;
ADOTable1->FieldValues["材质"]=CZ->Text;
ADOTable1->FieldValues["规格"]=GG->Text;
ADOTable1->FieldValues["出库数量"]=SL->Text;
ADOTable1->FieldValues["出库时间"]=SJ->Text;
ADOTable1->FieldValues["经手人"]=JS->Text;
if(MessageDlg("确认添加记录?",mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0)==mrYes)
ADOTable1->Post();//确认添加
else
ADOTable1->Cancel();//取消添加
BH->Clear();
CD->Clear();
PM->Clear();
CZ->Clear();
GG->Clear();
SL->Clear();
SJ->Clear();
JS->Clear();
BM->SetFocus();
ADOTable1->Post();
ShowMessage("借出记录添加成功!");
BH->Clear();
CD->Clear();
PM->Clear();
CZ->Clear();
GG->Clear();
SL->Clear();
SJ->Clear();
JS->Clear();
BM->SetFocus();
}
...全文
420 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
junyuyiyi 2011-05-18
  • 打赏
  • 举报
回复
不会。
我不懂电脑 2011-05-16
  • 打赏
  • 举报
回复
加上断点,单步调试是正道。
勉励前行 2011-05-16
  • 打赏
  • 举报
回复
ADOTable1->First();
while(!ADOTable1->Eof)
{
ADOTable1->Next();
}

這段沒用。 如果數據集很大 > 2W條 , 要很久時間。 可能就象死了一樣。

其次, 檢查一下 ADOTable1 或者 ADOQuery1 的事件是否構成死循環。 
jamesyue2008 2011-05-16
  • 打赏
  • 举报
回复
最后那个else if(.....), 改成else试试。
书生 2011-04-25
  • 打赏
  • 举报
回复
好长
太累
码开
//以上内容测试,可以无视

没看出明显的错误,估计是字段和SQL部分的问题。F8单步吧,看死在哪。
bigfog 2011-04-25
  • 打赏
  • 举报
回复
//问a题a好a长,看a得a太a累
//建a议a在a代a码a开a始a处a设a置a断a点,单a步a执a行

以上回复不给发:回复内容 您的回复正文中有非法词或词组!
实在看不出哪里有非法,不得以加了些a

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧