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

deak 2001-12-29 09:47:39
...全文
462 39 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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