谢谢各位: 我本来是想用格子内容来定为另一个表的相应记录,然后用几个label显示 那个记录的几个字段值。但是,我点不同格子后,另一个表的记录不变,值也不变。 请看毛病在哪里?程序如下: procedure TForm1.DBGrid1CellClick(Column: TColumn); var vgh:string; begin if Column.Grid.DataSource.DataSet.Active then begin if dm6.ADOtable2.Active then begin dm6.ADOtable2.Locate('gh',label7.caption,[lopartialkey]); label1.caption:=Dm6.ADOTable2.FieldByName('yl').AsString; label2.caption:=Dm6.ADOTable2.FieldByName('swd').AsString; label3.caption:=Dm6.ADOTable2.FieldByName('zwd').AsString; label4.caption:=Dm6.ADOTable2.FieldByName('xwd').AsString; end else showmessage('aaaaa'); end; end;
为什么不用数据库敏感控件DBTEXT,直接连接DataSource,随游标变化而变化数据
AsString的话,直接转换成string型,不管字段是什么类型
哦,确实是这样哈! 按Corn1的写法就是这样写了: procedure TForm1.DBGrid1CellClick(Column: TColumn); begin if Column.Grid.DataSource.DataSet.Active then Label1.Caption := Column.Grid.DataSource.DataSet.FieldByName(Column.FieldName).AsString; end; 再把1楼写法贴过来: procedure TForm1.DBGrid1CellClick(Column: TColumn); begin if Column.Grid.DataSource.DataSet.Active then Label1.Caption := Column.Field.Value; end; 另外还有一种写法: procedure TForm1.DBGrid1CellClick(Column: TColumn); begin if Column.Grid.DataSource.DataSet.Active then Label1.Caption := Column.Grid.DataSource.DataSet.FieldValues[Column.FieldName]; end;
begin
if Column.Grid.DataSource.DataSet.Active then
Label1.Caption := Column.Field.Value;
end;
Field1: 点的那一列的字段名
这种方式需要判断字段类型的,如果有整型字段,需要用代码转换为string,否则出错
我本来是想用格子内容来定为另一个表的相应记录,然后用几个label显示
那个记录的几个字段值。但是,我点不同格子后,另一个表的记录不变,值也不变。
请看毛病在哪里?程序如下:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
vgh:string;
begin
if Column.Grid.DataSource.DataSet.Active then
begin
if dm6.ADOtable2.Active then
begin
dm6.ADOtable2.Locate('gh',label7.caption,[lopartialkey]);
label1.caption:=Dm6.ADOTable2.FieldByName('yl').AsString;
label2.caption:=Dm6.ADOTable2.FieldByName('swd').AsString;
label3.caption:=Dm6.ADOTable2.FieldByName('zwd').AsString;
label4.caption:=Dm6.ADOTable2.FieldByName('xwd').AsString;
end
else
showmessage('aaaaa');
end;
end;
AsString的话,直接转换成string型,不管字段是什么类型
哦,确实是这样哈! 按Corn1的写法就是这样写了:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if Column.Grid.DataSource.DataSet.Active then
Label1.Caption := Column.Grid.DataSource.DataSet.FieldByName(Column.FieldName).AsString;
end;
再把1楼写法贴过来:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if Column.Grid.DataSource.DataSet.Active then
Label1.Caption := Column.Field.Value;
end;
另外还有一种写法:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if Column.Grid.DataSource.DataSet.Active then
Label1.Caption := Column.Grid.DataSource.DataSet.FieldValues[Column.FieldName];
end;