c++ builder DBGrid1如何同时2个字段定位到行
时间: 2024-03-05 09:55:02 浏览: 13
您可以使用 TDataSet 对象的 Locate 方法来定位到包含指定值的记录。假设您要定位到具有特定值的两个字段,您可以使用以下代码:
```c++
void TForm1::locateTwoFields(TDataSet* dataSet, const AnsiString& fieldName1, const AnsiString& fieldName2, const Variant& value1, const Variant& value2)
{
if (!dataSet->Active)
return;
TBookmark bookmark = dataSet->GetBookmark();
try
{
dataSet->First();
while (!dataSet->Eof)
{
if (dataSet->FieldByName(fieldName1)->Value == value1 && dataSet->FieldByName(fieldName2)->Value == value2)
{
DBGrid1->DataSource->DataSet->GotoBookmark(bookmark);
return;
}
dataSet->Next();
}
}
__finally
{
dataSet->FreeBookmark(bookmark);
}
}
```
您可以将以上代码作为一个方法添加到您的 TForm1 类中,然后在需要定位到包含特定值的两个字段的记录时调用它。例如:
```c++
locateTwoFields(Table1, "Field1", "Field2", "Value1", "Value2");
```
其中,Table1 是您的数据集,"Field1" 和 "Field2" 是您要查找的两个字段,"Value1" 和 "Value2" 是您要查找的值。