在 Delphi 中,我有一个组件:
dbgridsimpipa: Tdbgrid,
DSpipa: Tdatasource,
Qpipa: Tquery,
btnViewdata: tbutton
btnRecNumber: tbutton.
我使用以下代码搜索表格:
procedure TfrmMain.btnViewDataClick(Sender: TObject);
var
st,st4,y0,y1,y2: string;
begin
st:='5';
grid2.Enabled := True;
st5 := 'SELECT tblRekapROT.CY2IDR, tblRekapROT.Produk, tblRekapROT.Total, tblRekapROT.ARRWL, tblRekapROT.ARBYL, tblRekapROT.Status '+
'FROM tblRekapROT '+
'WHERE ((tblRekapROT.Status Like ''%'+st+'%''))';
Qpipa.Close;
Qpipa.SQL.Clear;
Qpipa.SQL.Add(st5);
Qpipa.Open;
label22.Caption:= dbgridsimpipa.Fields[0].AsString;
end;
然后我用以下命令计算 DBGrid
中的记录:
procedure TfrmMain.btnRecNumberClick(Sender: TObject);
var
vCount: Integer;
vBookmark: TBookmark;
begin
vCount := 0;
with DBGridSimPipa.DataSource.DataSet do
begin
vBookmark := GetBookmark;
First; // move to the first record
while not EoF do
begin
vCount := vCount + 1;
Next; // move to next record
end;
GotoBookmark(vBookmark);
FreeBookmark(vBookmark);
end;
ShowMessage('We found ' + IntToStr(vCount) + ' records');
end;
如何获取 DBGrid
中一列中的行值?也许是这样的:
//label1.Caption:= dbgridsimpipa.DataSource.DataSet.First //record vtotal row 1
//label2.Caption:= dbgridsimpipa.DataSource.DataSet.second //record vtotal row 2
//label3.Caption:= dbgridsimpipa.DataSource.DataSet.third //record vtotal row 3
最佳答案
首先欢迎来到 StackOverflow。
您对数据集的工作原理存在一些误解。首先,如果您想知道找到了多少行,您可以调用 RecordCound 属性:
procedure TfrmMain.btnRecNumberClick(Sender: TObject);
begin
ShowMessage('We found ' + IntToStr(DBGridSimPipa.DataSource.DataSet.RecordCount) + ' records');
end;
如果您想访问数据集中的第一行,您可以调用 First
但没有 Second
或 Third
属性,因此您可以'必须使用属性RecordNo
DataSet.First
与 Dataset.RecordNo := 0
通过调用Dataset.RecordNo := 1
等获得的第二行。
然后你想将一行的内容放入标签中。没有构建方法可以做到这一点,因此您必须为此编写自己的函数。
function DataRowToString(const aDataset: TDataSet; aRecNo: Integer): String;
var
i: Integer;
begin
aDataset.RecNo := aRecNo;
Result := '';
for i := 0 to aDataset.FieldCount - 1 do
Result := Result + aDataset.Fields[i].AsString + ' ';
Result := Trim(Result);
end;
最后我们只需要调用新创建的函数:
label1.Caption:= DataRowToString(dbgridsimpipa.DataSource.DataSet, 0); //record vtotal row 1
label2.Caption:= DataRowToString(dbgridsimpipa.DataSource.DataSet, 1); //record vtotal row 2
label3.Caption:= DataRowToString(dbgridsimpipa.DataSource.DataSet, 2);//record vtotal row 3
关于mysql - 如何使用 DBGrid 从第 1 行、第 2 行、第 3 行第 3 列中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29045056/