首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请问一个ADODataset的有关问题,多谢

2013-09-15 
请教一个ADODataset的问题,谢谢ADS_Person是个ADODataset,点新增时执行 ADS_Person-Append()点保存按钮

请教一个ADODataset的问题,谢谢
ADS_Person是个ADODataset,  
点新增时执行 
ADS_Person->Append();
点保存按钮执行
ADS_Person->UpdateBatch();


我在一个dbedit的excit响应函数中,查找当前记录集中有没有相同的值,如果有相同的,则不让修改,如下,但是这样做有个问题,会改变当前记录集的游标,请问有没有什么好的方法可以做到验证值重复的,谢谢

 AnsiString string;
     for (ADS_Person->First(); !ADS_Person->Eof; ADS_Person->Next())
     {
       string = ADS_Personmember_num->Value;
       if(string == "32")
       {
           //值相同了
        }
     }
     ADS_Person->Close();


[解决办法]
ADS_Person->Abort;
ADS_Person->Cancel;
ADS_Person->CancelUpdates
调用这几个函数试试 
[解决办法]
好的方法 : 其實只要從 MDB 數據結構裡指定需驗證欄位(字段)將其索引(index)屬性設為不可重複既可!
[解决办法]
楼主啊,你可以再用一个ADODataset控件专门做这种检测的。
[解决办法]
剛才對照了一下 ADO ErrorCode 發現是對應 SQLState...以 HelpContext 核對不適當...更正後如下 :

void __fastcall TDataModule1::ADOTable1PostError(TDataSet *DataSet,
EDatabaseError *E, TDataAction &Action)
{
if (ADOConnection1->Errors->Item[0]->SQLState == L"3022") {
throw Exception(L"值相同了!");
}
}

热点排行