高分求助:dbgrideh的批量录入的几个问题?自动录入,计算,保存的问题?

sdweihailh 2006-12-09 12:35:03
数据库:ACCESS
如何在DBGRIDEH中批量录入数据,如下:
编 号 品 名 类别 产地 单位 单价 数量 总金额
100001 作业本 本子类 四川  本   3.00 2  6.00
100002 钢笔   笔类  上海  支   25.00 10 250.00
..........
..........
等等,很多数据.不用stringgrid用dbgrideh实现下面功能
1.我想让这些数据一次性就在DBGRIDEH中数入,然后点保存按钮,这些数据就保存到数据库中去.不保存这些数据就会消失,不得在数据库中有记录.
2.我想在编号中输入编号后,后面的品名、类别、产地、单价、单位等字段就会根据输入的编号自动查找对应的数值而录入(这几个字段是不能人工录入的)到对就的字段中。注:数量可以人工录入数据。
3。当录入数量后,总金额就会自动计算出结果。
4.如果输入的编号在数据库中没有(或错误),那么系统就会弹出一个对所有数据查询的窗体,在弹出的查询窗体中在查询选择.
请各位大哥帮帮小弟解决这个问题。
有源码示例最好,weihailh@126.com.
...全文
294 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
SmallMaker 2007-03-28
  • 打赏
  • 举报
回复
实现自动计算可以参考下面的例子
procedure TForm2.dbgrdh1Columns3GetCellParams(Sender: TObject;
EditMode: Boolean; Params: TColCellParamsEh);
begin
Params.Text:=FloatToStr(dbgrdh1.Columns[0].Field.Value+dbgrdh1.Columns[1].Field.Value);
end;
huangjinyin 2006-12-14
  • 打赏
  • 举报
回复
谁有DEMO,我也想要一个,楼主可否加我:44921619
柯本 2006-12-09
  • 打赏
  • 举报
回复
1.用临时表或内存虚拟表,如TBDEClientDataSet,我一般用ODAC的TVirtualTable
a.如果是输入,先将数据全部输入虚拟表,按保存时写数据库
b.如果是修改,先将数据库中符合条件的数据写入虚拟表,按保存时,判数据有无修改,并将修改过的数据存入数据库
2.如果用虚拟表,这个也方便,输入编号后,在数据库中查找记录,并写入虚拟表的对应字段
当然,也可用计算字段
3.用计算字段即可
4.这个一般可在DBgrid的OnCOlExit中判,如果是编号字段,就在数据中是查找,弹出窗口应该是很基础的
我只能给你一个思路,程序还是自已写的好
在他人的DBGridEh导出到Excel的基础上进行改进,增加功能如下: 1、支持多个DBGridEH同时导出到Excel的不同Sheet页 2、进度条与数据进度保持一致 3、增加了进度百分比显示 //调用方法: procedure TForm1.Button1Click(Sender: TObject); var DbOut: TDBGridEhToExcel; i: integer; begin try DbOut := TDBGridEhToExcel.Create(Self); for i := 0 to 9 do //初始化数组 begin DbOut.DBGridEhRecAry[i].TempDBGridEh := nil; DbOut.DBGridEhRecAry[i].TitleName := ''; DbOut.DBGridEhRecAry[i].SheetTabName := ''; end; //有多少个DBGridEh的数据要导出,此处表示两个 DbOut.DBGridEhRecLength := 2; //统计结果一 DbOut.DBGridEhRecAry[0].TempDBGridEh := dbgSpotCheckCount; DbOut.DBGridEhRecAry[0].TitleName := '统计结果一'; DbOut.DBGridEhRecAry[0].SheetTabName := '统计结果一'; //统计结果二 DbOut.DBGridEhRecAry[1].TempDBGridEh := dbgValuationCount; DbOut.DBGridEhRecAry[1].TitleName := '统计结果二'; DbOut.DBGridEhRecAry[1].SheetTabName := '统计结果二'; DbOut.TitleName := '统计结果'; DbOut.ShowProgress := True; DbOut.ShowOpenExcel := True; DbOut.ExportToExcel; finally FreeAndNil(DbOut); end; end; 还可以改进的地方,比如: 1、标题栏占用几行,字体,字体颜色,字体大小,背景颜色可以封装提供设置方法; 2、字段标题字体,字体颜色,字体大小; 3、表格样式设置; 就是动态数据不会封装到类里面,如果有高人封装得更好一些,请发一份我;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧