| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1784 人关注过本帖
标题:我想用mshflexgrid删除某一行并同时删除数据库中那一行,为什么总是显示参数 ...
只看楼主 加入收藏
凛冬1
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2020-3-14
结帖率:81.82%
收藏
已结贴  问题点数:10 回复次数:3 
我想用mshflexgrid删除某一行并同时删除数据库中那一行,为什么总是显示参数类型不匹配,或不在可以接受的范围内,或与其他参数冲突
Private Sub Command2_Click()
'连接数据库
If conn.State = 0 Then
   conn.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & _
 App.Path & "\设计计算.mdb;Persist Security Info=False"   '连接数据库的驱动字符串并打开数据库
   conn.Open
End If


'删除
Dim sql As String, r$
Set rs = New ADODB.Recordset     '创建数据集对象的连接

sql = "delete from [设计计算] where  [管段编号]=' " & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0) & " ' "     '删除指定行
conn.Execute sql   '执行sql语句
MSHFlexGrid1.RemoveItem MSHFlexGrid1.Row

rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic

MsgBox "删除成功!"

'删除数据库中该行记录
Dim a As String
a = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0)

'锁定到这条记录,然后查询并删除
txtSQL = "select * from [设计计算]  where [管段编号]= '" & a & "'"

Set rs = conn.ExecuteSQL(txtSQL, msgtext)     这行显示参数类型不匹配,或不在可以接受的范围内,或与其他参数冲突

conn.Close  '关闭连接
Set conn = Nothing   '释放变量

End Sub
搜索更多相关主题的帖子: sql 参数 删除 一行 conn 
2020-03-16 21:48
show147
Rank: 2
等 级:论坛游民
威 望:3
帖 子:40
专家分:81
注 册:2020-3-14
收藏
得分:10 

你用rs 删除数据并没有真正写入数据库, 要在后面加上 rs.update  ,  这样才真正的在数据库里删掉了记录,MSHFlexgrid控件绑定了数据表的,你数据表变了,只要刷新MSHFlexgrid1就行了,不用再删除相应MSHFlexgrid1 对应的行,即在这里rs.update后再加上去MSHFlexgrid1.Refresh 就可以了。  
好久没用过ado对象了,比较喜欢用Adodc控件,不知道你sql这样写行不行,你先看看问题解决没,不行的话在帮你查下以前资料
2020-03-19 11:22
凛冬1
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2020-3-14
收藏
得分:0 
回复 2楼 show147
Private Sub Command2_Click()
'连接数据库
If conn.State = 0 Then
   conn.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & _
 App.Path & "\设计计算.mdb;Persist Security Info=False"   '连接数据库的驱动字符串并打开数据库
   conn.Open
End If

'删除(有问题,按查询则删除的东西又回来了!)
Dim sql As String
Set rs = New ADODB.Recordset     '创建数据集对象的连接

Set rs.ActiveConnection = conn
sql = "delete from [设计计算] where  [管段编号]=' " & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0) & " ' "     '删除指定行
conn.Execute sql   '执行sql语句
MSHFlexGrid1.RemoveItem MSHFlexGrid1.Row
rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic
rs.Update
MSHFlexGrid1.Refresh
MsgBox "删除成功!"
conn.Close  '关闭连接
Set conn = Nothing   '释放变量
End Sub

是这样子么?可是还是在rs.update报错对象关闭时,不允许操作
2020-03-19 20:26
show147
Rank: 2
等 级:论坛游民
威 望:3
帖 子:40
专家分:81
注 册:2020-3-14
收藏
得分:0 
Private Sub Command2_Click()
'连接数据库
If conn.State = 0 Then
   conn.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & _
 App.Path & "\设计计算.mdb;Persist Security Info=False"   '连接数据库的驱动字符串并打开数据库
   conn.Open
End If

Dim sql As String
Set rs = New ADODB.Recordset     '创建数据集对象的连接

Set rs.ActiveConnection = conn
sql = "delete from [设计计算] where [管段编号]='" & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0) & "'"     '删除指定行
conn.Execute sql   '执行sql语句
rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic
MSHFlexGrid1.Refresh
MsgBox "删除成功!"
conn.Close  '关闭连接
Set conn = Nothing   '释放变量
End Sub

试试这样可以吗
2020-03-21 17:11
快速回复:我想用mshflexgrid删除某一行并同时删除数据库中那一行,为什么总是显 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.202167 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved