StringGrid使用
要实现效果:
物料领料单我想用bom配比生成,
表头(edit控件):
领料单号,领料日期,产品名称,预计产量
表体(StringGrid控件):
表体根据表头的产品名称和预计产量生成物料清单
最后将表头和表体分别追加至领料表和领料明细表。
现对我来说主要难度是如何将数据显示到StringGrid控件和将StringGrid控件上的记录追加到表里。
是否还有其他较简单的方法?
最后50分,先谢了...
[解决办法]
1、设置StringGrid.RowCount 最大行数(物料领料单最大条数)
2、//将数据显示到StringGrid控件
StringGrid.Cells[1, 1]:=EDTI领料单号.TEXT;
StringGrid.Cells[1, 2]:=EDTI产品名称.TEXT;
...
3、//将StringGrid控件上的记录追加到表里。
For i:=1 to StringGrid.RowCount -1 do
if StringGrid.Cells[i, 1] <> '' then
begin
adoquery1.close;
adoquery1.sql.text := 'insert tableName(领料单号, 产品名称,...) values('''+StringGrid.Cells[i, 1]:=+''','''+StringGrid.Cells[i, 2]:=+''','''+...+''')';
adoquery1.ExecSql;
end;
[解决办法]
表头和表体都可以采用数据感知控件,即Data Controls控件组。
数据表现:
表头(edit控件)->DBEdit、DBComboBox等。
表体(StringGrid控件)->DBGrid或者第三方控件,如DBGridEh等。
数据提交,可以采用动态解析ADODataSet里头的字段及内容,记录集采用批量更新(只是缓冲数据只用,真正提交数据采用动态解析数据集,转成SQL写库)。这种处理方式数据表现时比较简单,并且对数据的处理可以统一到对数据集处理上。