关于beforepost的问题,请帮忙看下,谢谢
beforePost里面验证数据是否有重复,我需要遍历AdodataSet,但是一遍历就会陷入死循环了,因为ADS_Person->First()会移动记录的游标
for(ADS_Person->First(); !ADS_Person->Eof; ADS_Person->Next())
{
AnsiString strtemp = ADS_Person->FieldByName("member_num")->AsString;
}
[解决办法]
>First()会移动记录的游标,所以也就调用了post,也就触发了BeforePost,死循环了,不要放在BeforePost里
[解决办法]
或者用另外一个Query查询是否有重复记录,这样当前Query就不会影响了
[解决办法]
是否重复,只校验一个字段还是多个字段,每次保存添加到StringList,然后用IndexOf是否已经添加过
[解决办法]
void __fastcall TForm1::ADS_PersonBeforePost(TDataSet *DataSet)
{
TLocateOptions Opts;
TADODataSet *cdsCLONE = new TADODataSet(NULL);
try
{
cdsCLONE->Clone(ADS_Person); // 建立產生一個 ADS_Person 的副本
Opts.Clear();
// 搜尋以驗證是否重複
if (cdsCLONE->Locate("member_num", ADS_Personmember_num->Value, Opts))
throw Exception("輸入值重複");
}
__finally
{
delete cdsCLONE;
}
}