表格控件输入数据的问题

gongyuchen 2009-07-17 10:45:56
我要设计一个仓库输入发货数据的表单,想用一个表格控件来输入所发零件的厂家、批号及数量。例如车间领取A零件1000个,发货时,发出甲公司0901批该种零件300个,乙公司0911批该种零件500个,乙公司0915批该种零件200个,我希望用表格控件来输入以上信息,在表单上创建一个表格控件,外观如下:
厂家 批号 数量
甲公司 0901 300
乙公司 0911 500
乙公司 0915 200
我想在运行时表格控件不绑定数据源,直接在表格中输入数据,最后在“保存”按钮的CLICK事件中用代码来获取表格中的数据存入相应的表中,请问应该怎么做?
...全文
89 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2009-07-17
  • 打赏
  • 举报
回复
以下是一个简单的例子,请参考使用:

设表名为:BOTO1
设表字段:NAME,SEX,AGE 均为字符型,长度10。
建立一个表单:DEMO.SCX
表单上有:
四个按钮:添加、保存、删除、退出
三个文本框:TEXT1、TEXT2、TEXT3
一个Grid表:

表单的Load事件:
Use boto1

表单的Init事件:
This.GRID1.RecordSource='BOTO1'
This.GRID1.DeleteMark=.F.
This.GRID1.ReadOnly=.T.
For I=1 To 3
J=Alltrim(Str(I))
This.Text&J..Enabled=.F.
Endfor
This.Text1.Value=Alltrim(Name)
This.Text2.Value=Alltrim(sex)
This.Text3.Value=Alltrim(age)

表单的Unload事件:
Use In BOTO1

Grid的AfterRowColChange事件:
Lparameters nColIndex
Thisform.Text1.Value=Alltrim(Name)
Thisform.Text2.Value=Alltrim(sex)
Thisform.Text3.Value=Alltrim(age)
Thisform.Refresh

添加按钮的Click事件:
If Messagebox('是否使用录前值?',4+32+256,'信息提示')=7
Thisform.text1.Value=''
Thisform.text2.Value=''
Thisform.text3.Value=''
Endif
Thisform.text1.Enabled= .T.
Thisform.text2.Enabled= .T.
Thisform.text3.Enabled= .T.
Thisform.Text1.SetFocus

保存按钮的Click事件:
Append Blank
Replace Name With Alltrim(Thisform.text1.Value)
Replace sex With Alltrim(Thisform.text2.Value)
Replace age With Alltrim(Thisform.text3.Value)
Thisform.text1.Enabled= .F.
Thisform.text2.Enabled= .F.
Thisform.text3.Enabled= .F.
Thisform.grid1.Refresh

删除按钮的Click事件:
If Messagebox('是否删除此条记录?',4+32+256,'信息提示')=7 Or Reccount('BOTO1')=0
Return
Endif
Select BOTO1
Delete
Thisform.GRID1.RecordSource=Null
Pack
Thisform.GRID1.RecordSource='BOTO1'
Go Top
Thisform.GRID1.Refresh

退出按钮的Click事件:
Thisform.Release
gongyuchen 2009-07-17
  • 打赏
  • 举报
回复
多谢各位帮忙!
都市夜猫 2009-07-17
  • 打赏
  • 举报
回复
vfp 的 grid 是必须绑定某种数据源的,否则连焦点也无法设置到其上。

赞同二楼的做法,先构造一个结构合适的临时表,添加一空记录,然后开始录入
最后遍历检查所有记录并 insert into 结果表
feiren_1012 2009-07-17
  • 打赏
  • 举报
回复
我感到表格不绑定数据源,好像没法直接输入数据,我原来也有过相似的想法,但没有实现,后改为在表单的init事件中用
Thisform.GRID1.RecordSource='tmp' 来绑定一个临时表,
同时将表格的AllowAddNew属性设为.T.

而后在‘添加’按钮的click事件中写入:
select tmp
append blank
这样就可以连续输入数据了

输入完后,在‘保存’按钮中用copy to 或者append from 将数据添加到相应表中

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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