亲爱的同行们,帮我提供一个:一对多的数据录入控件或解决方法

huangyueming 2000-08-15 05:15:00
在信息系统中,常见的定单录入,有主表和子表,对于VB不太熟的我,有点束手无策!
我的email:huangyueming@263.net
...全文
234 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt642 2001-05-31
  • 打赏
  • 举报
回复
95373关注!
huangyueming 2000-08-21
  • 打赏
  • 举报
回复
bokei:
还请问:rstSave与rstTemp怎样建立关系,是重定义一个recordset,再写一个sql语句吗?
huangyueming 2000-08-21
  • 打赏
  • 举报
回复
bokei:
感谢你耐心的回答,我的问题已解决,但不知道怎样给你加分,我是不是很笨?
不管怎么样,我都非常的感谢你!
bokei 2000-08-18
  • 打赏
  • 举报
回复
如果是用循环来保存明细表的记录,通常是用一个变量存下明细表的外键(如主表的编号),然后在保存明细表时再一个个记录的赋值。
象这样:
conData.Excute("insert......") '加入主表的记录
Do Until rstTemp.EOF
rstSave.AddNew
rstSave.Fields("Key")=外键的值
rstSave.Fields("xxx")=rstTemp.Fields("xxx") 'rstTemp是绑定给DataGrid的无连接记录集,由于没有连接,所以对它里面的字段作的任何修改都不会直接作用于数据库,这里把它当作一个临时的存放数据的地方,rstSave是有连接的记录集合,用它来更新明细表
......
rstSave.update
rstTemp.MoveNext
Loop
bokei 2000-08-17
  • 打赏
  • 举报
回复
创建没有连接的记录集的代码如下:
conSell.Open SOURCE ‘打开连接

rstSell.CursorLocation = adUseClient
rstSell.CursorType = adOpenStatic
rstSell.SOURCE = strSource
rstSell.ActiveConnection = conSell
rstSell.LockType = adLockBatchOptimistic
rstSell.Open ‘打开记录集合

Set rstSell.ActiveConnection = Nothing '让记录集变成没有连接的记录集合

把记录集绑定给Datagrid的代码如下:
Set DataGrid.DataSource = rstSell

如果让用户修改过的记录集更新数据,代码如下:
rstSell.MarshalOptions = adMarshalModifiedOnly
Set rstSell.ActiveConnection = conSell '从新设置连接
rstSell.UpdateBatch ‘更新
huangyueming 2000-08-17
  • 打赏
  • 举报
回复
bokei:
当提交的时候,先录入主表的数据,然后录入明细表的数据,都在一个事件里完成。
我不知道明细表的外键怎样加入


bokei 2000-08-17
  • 打赏
  • 举报
回复
在UpdateBacth之前可以象操作普通记录集那样操作无连接的记录集,你可以自己用代码来检验一下。
也可以不用UpdateBatch,自己做一个循环来把记录集里的记录一条条的检验,再一条条的加入明细表里。
huangyueming 2000-08-17
  • 打赏
  • 举报
回复
bokei:
如果要检验明细表里每条数据的有效性,如:没有该产品代码(需要在另外的数据表里查出得到)怎么办?我用了一个axgrid的控件,并不是很方便。
huangyueming 2000-08-16
  • 打赏
  • 举报
回复
谢谢你的回复:
bokei 可能理解了我的意思,我试着用了datagrid这个控件,但是我不知道怎样把记录集合绑给Datagrid,你能给我发一段代码吗?谢谢
AChung666 2000-08-16
  • 打赏
  • 举报
回复
参考计算机世界"http://www.computerworld.com.cn/99/tips/9906/062803_11.asp"的
《利用VB动态设计多“主细表”应用》
bokei 2000-08-15
  • 打赏
  • 举报
回复
主表有的东西用text框录入。
从表的东西可以用datagrid或者其他的网格类控件录入;或者你自己加一个按钮,一按就弹出另外一个对话框来让用户录入一条从表里的信息,这样他想录多少条都可以自己控制了。
最灵活的是用代码来控制,就象我用ADO时,通常是做一个没有连接的记录集,直接把记录集合绑给Datagrid,任用户修改,如果确定保存,再一条条的加入到从表里。不想保存就把它cancel掉就是了。
lty 2000-08-15
  • 打赏
  • 举报
回复
是多用户还是多个子表?
AChung666 2000-08-15
  • 打赏
  • 举报
回复
能否说得详细一点

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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