在DBGridEh的回车事件中写代码, var Qry1:TQuery; begin Qry1 := TQuery.create(self); Qry1.sql.close; Qry1.sql.add('select 数据一,数据二 from table1 where gjz='+'关键字一'); Qry1.open; if not Qry1.eof then begin Qry数据一.value := Qry1.数据一.value; Qry数据二.value := Qry1.数据二.value; Qry.Appupdate; end; .... Qry.apend; end; ..... 大概意思是这样,家里没装DELPHI,没测试,参考.
刚才自己尝试着写了一段,总的感觉很不满意,虽然完成了,写在DBGrid的KeyPress事件中 求更好更健壮的方法. if Key =#13 then begin if dbgrdh.SelectedIndex = 0 then begin ADOqry.Close; ADOqry.SQL.Text := ' Select * from barcode where barcode = ''' + dbgrdh.SelectedField.AsString +''''; ADOqry.Open; dbgrdh.DataSource.DataSet.FieldByName('mmfname').AsString := ADOqry.FieldByName('name').AsString; dbgrdh.DataSource.DataSet.Append; end; end;
var
Qry1:TQuery;
begin
Qry1 := TQuery.create(self);
Qry1.sql.close;
Qry1.sql.add('select 数据一,数据二 from table1 where gjz='+'关键字一');
Qry1.open;
if not Qry1.eof then
begin
Qry数据一.value := Qry1.数据一.value;
Qry数据二.value := Qry1.数据二.value;
Qry.Appupdate;
end;
....
Qry.apend;
end;
.....
大概意思是这样,家里没装DELPHI,没测试,参考.
求更好更健壮的方法.
if Key =#13 then
begin
if dbgrdh.SelectedIndex = 0 then
begin
ADOqry.Close;
ADOqry.SQL.Text := ' Select * from barcode where barcode = '''
+ dbgrdh.SelectedField.AsString +'''';
ADOqry.Open;
dbgrdh.DataSource.DataSet.FieldByName('mmfname').AsString := ADOqry.FieldByName('name').AsString;
dbgrdh.DataSource.DataSet.Append;
end;
end;
就是回车是横向跳到下一个单元格?还是纵向跳到下一新行?
还有使用键盘上下左右键来移动单元格.
DBGrid不能直接产生"合计:",作一些字段数量的统计,要在存储过程中写SQL.