[英]How to take a value from row 1, row 2, row 3 in column 3 using DBGrid?
在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.