★★★快来抢300分★★★:设置DataGrid1.DataSource = 某recordset(ado)后,如何再修改DataGrid1中某column的值而不改变数据库表的值?

deak 2001-12-29 09:47:39
...全文
439 39 打赏 收藏 举报
写回复
39 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
deak 2001-12-30
add
  • 打赏
  • 举报
回复
deak 2001-12-29
to Brunhild:
我那个select语句特别繁琐,而且有十几个,
能不能用别的方法?
  • 打赏
  • 举报
回复
Brunhild 2001-12-29
我明白,你这个字段大概是另一个表(包含有ID、名称字段)的ID号,现在你想把另一个表的名称显示出来,对吧?
如果这个字段不需要修改,记录集也不需要增加记录,可以这样:
select b.名称, a.* from [表1] a inner join [表2] b on a.名称id=b.id
显示的时候把名称id隐含掉就可以了。
  • 打赏
  • 举报
回复
deak 2001-12-29
to Brunhild:
我的意思是记录集中有个字段的值是12001,表中定义的大小是5
我的要求是在DataGrid1中显示出来的值是“党政机关”,而不改变数据库表的值
你能不能说具体一点?
  • 打赏
  • 举报
回复
fuxc 2001-12-29
同意Brunhild(),TRUE DBGRID真的很不错
  • 打赏
  • 举报
回复
leonadoromario 2001-12-29
不要用绑定 vc编程高手
里有 gridctrl 可以拿来用
操作非常方便
  • 打赏
  • 举报
回复
zzgthc 2001-12-29
用truedbgrid6.0
  • 打赏
  • 举报
回复
Brunhild 2001-12-29
好象有个DBGRID的控件可以支持非绑定模式,可以试试。
  • 打赏
  • 举报
回复
Brunhild 2001-12-29
如果你用TRUE DBGRID就方便了,DATAGRID的非绑定列没法获得数据,也不能自动转换数据。
  • 打赏
  • 举报
回复
fuxc 2001-12-29
数据类型有问题吧
原先的数据是否int?
  • 打赏
  • 举报
回复
Brunhild 2001-12-29
这个字段需要更改吗?或者有没有增加记录的需要?
如果以上两个可能都没有,可以在SQL语句中先把12001转换。
  • 打赏
  • 举报
回复
deak 2001-12-29
也是不需要判断的,或者大小超过几倍
  • 打赏
  • 举报
回复
deak 2001-12-29
to Brunhild:
我这里的实现要求就是从12001改成“党政机关”,是不用判断的
难道没有解决的办法?
  • 打赏
  • 举报
回复
Brunhild 2001-12-29
哦,应该是beforecolupdate事件
  • 打赏
  • 举报
回复
Brunhild 2001-12-29
可以在datagrid的beforecoledit事件中判断字段大小是否合适
  • 打赏
  • 举报
回复
deak 2001-12-29
to Brunhild:
比如字段的初值是12001,表中定义的大小是5
我要修改后的值是“党政机关”,这时就会提示:
multiple-step operation generated errors .check each status value
怎么办?????

  • 打赏
  • 举报
回复
Brunhild 2001-12-29
修改字段应该是在 Set ActiveConnection = Nothing之后
  • 打赏
  • 举报
回复
fuxc 2001-12-29
Brunhild()的方法也很好,可以释放connection占用的的资源

recordset不能动态改变field的长度,只能想办法把数据导出recordset,通过非绑定来处理

提供你一个思路:
用recordset的getrows方法可以把recordset输出到一个数组
array = recordset.GetRows( Rows, Start, Fields )

  • 打赏
  • 举报
回复
Brunhild 2001-12-29
"前后大小不一致"是什么意思?
  • 打赏
  • 举报
回复
jett 2001-12-29
用fuxc(Michael)的那个方法,属性如下设置
ado.LockType = adLockBatchOptimistic
ado.cursortype=adopenkeyset 或adopenstatic
ado.cursorlocation=aduserclient
这样的话会在本地生成一个临时的表
字段做了修改后用update方法只会在临时表上修改不会写到基表中,datagrid可看到变化。
用updatebatch才会写进基表。
我曾经做过绝对不会错
  • 打赏
  • 举报
回复
加载更多回复(19)
相关推荐
发帖
数据库(包含打印,安装,报表)

1200

社区成员

VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
帖子事件
创建了帖子
2001-12-29 09:47
社区公告
暂无公告