我用TADOstoredPro 执行一存储过程(SQL Server的),把这一段代码写在一个单击事件中,就是根据文件框输入的内容增加一记录,填好记录后第一次记录,单击后执行正确,再填写,再单击,然后提示
Access violation at Address 753D024E.Read of Address 00000018
这是怎么一回事呀?我该怎样觖决。
Access violation at Address 753D024E.Read of Address 00000018
这是怎么一回事呀?我该怎样觖决。
if( EtBookID->Text.IsEmpty() || EtBookCName->Text.IsEmpty())
{
ShowMessage("ÇëÊäÈëͼÊé±êʶºÍͼÊéÃû³Æ");
EtBookID->SetFocus(); //½¹µãÖØж¨Î»µ½¹ÜÀíÔ±ÐÕÃûÊäÈë¿ò
return;
}
else
{
try
{ //Ìí¼ÓͼÊéÖÖÀà
bool ExistBook;
Integer IsExits;
AnsiString BookID, BookName, strSQL1, strSQL2, strSQL3;
BookID = EtBookID->Text.Trim();
BookName = EtBookCName->Text.Trim(); DM->ADOSP->ProcedureName = "AddBookCate"; DM->ADOSP->Parameters->Refresh();
DM->ADOSP->Parameters->ParamByName("@BookCN")->Direction = pdInput;
DM->ADOSP->Parameters->ParamByName("@BookCN")->DataType = ftString;
DM->ADOSP->Parameters->ParamByName("@BookCN")->Value = BookID; DM->ADOSP->Parameters->ParamByName("@BookCName")->Direction = pdInput;
DM->ADOSP->Parameters->ParamByName("@BookCName")->DataType = ftString;
DM->ADOSP->Parameters->ParamByName("@BookCName")->Value = BookName; DM->ADOSP->Parameters->ParamByName("@Error")->Direction = pdReturnValue;
DM->ADOSP->Parameters->ParamByName("@Error")->DataType = ftInteger;
DM->ADOSP->Prepared = true; DM->ADOSP->ExecProc(); IsExits = DM->ADOSP->Parameters->ParamByName("@Error")->Value; if(IsExits == 1)
{
ShowMessage("ͼÊéÀà±ðÒÑ´æÔÚ£¬ÇëÖØÐÂÊäÈë");
EtBookID->Text="";
EtBookCName->Text="";
DM->ADOBookCate->SQL->Clear();
//DM->ADOBookCate->SQL->Add("Select * from Book_Category");
DM->ADOBookCate->SQL->Add("Exec FindBookCate");
DM->ADOBookCate->ExecSQL();
DM->ADOBookCate->Active = true;
}
else
{
ShowMessage("ͼÊéÀà±ðÌí¼Ó³É¹¦!");
EtBookID->Text = "";
EtBookCName->Text = "";
DM->ADOBookCate->SQL->Clear();
// DM->ADOBookCate->SQL->Add("Select * from Book_Category");
DM->ADOBookCate->SQL->Add("Exec FindBookCate");
DM->ADOBookCate->ExecSQL();
DM->ADOBookCate->Active = true;
}
}
catch(...)
{
ShowMessage("Êý¾Ý¿âÁ¬½Ó´íÎó");
EtBookID->Text="";
EtBookCName->Text="";
}