请大家帮忙查找一下问题所在,对象关闭时,操作不被允许 !

huanghhh4 2009-11-21 09:46:42
下面是代码
form5 下面的代码

Private Sub Command1_Click() '修改
'update game set ct_lvneed=1 where ct_item = a,ct_pw =123
Dim sql As String
sql = "update kucuns set "
sql = sql & "shangpinmingcheng ='" & Text1.Text & "',"
sql = sql & " shangpinxinghao='" & Text2.Text & "',"
sql = sql & "jinhuojiage='" & Text3.Text & "',"
sql = sql & "xiaoshoujiage='" & Text4.Text & "',"
sql = sql & "shangpindanwei='" & Combo1.Text & "',"
'sql = sql & "shangpinleixinid='" & Combo2.Text & "',"
sql = sql & "tishishuliang='" & Text6.Text & "' "
sql = sql & "where sid='" & Label11.Caption & "'"

Set sxin = New Class1
sxin.yuJu (sql)
sxin.shuaXin
Unload Me
End Sub

Private Sub Command2_Click() '删除
'DELETE FROM Person WHERE LastName = 'Wilson'
Set shanchu = New Class1
shanchu.yuJu ("delete from kucuns where sid='" & Label11.Caption & "'")
shanchun.shuaXin

Unload Me
End Sub

Private Sub Command3_Click() '保存

Dim sql As String
sql = "insert into kucuns (shangpinmingcheng,shangpinxinghao,jinhuojiage,xiaoshoujiage,shangpindanwei,tishishuliang,sid,kucunshuliang) VALUES ( '" & Text1.Text & "','" & Text2.Text & "','" & Text3.Text & "','" & Text4.Text & "','" & Combo1.Text & "','" & Text6.Text & "','" & Label11.Caption & "','" & Text5.Text & "')"
'sql = "insert into test (use ,pwd) VALUES('" & Text1.Text & "','" & Text2.Text & "')"
Set sxin = New Class1
sxin.yuJu (sql)
sxin.shuaXin
Unload Me
End Sub

Private Sub Command4_Click() '取消
Unload Me
End Sub

class1的代码

Dim sql As String
Dim itmX As ListItem


Public Sub yuJu(sql)
Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\rifeng\data\db1.mdb;Persist Security Info=False"
cn.Open
Rs.CursorLocation = adUseClient
Rs.Open sql, cn, 3, 1
Rs.MoveLast
Form5.Label11.Caption = Val(Rs.Fields("sid")) + 1

End Sub

Public Sub shuaXin()
Form1.ListView1.ListItems.Clear
Form1.ListView2.ListItems.Clear
Form1.ListView3.ListItems.Clear
Form1.ListView4.ListItems.Clear
Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\rifeng\data\db1.mdb;Persist Security Info=False"
cn.Open
Rs.CursorLocation = adUseClient
Rs.Open "SELECT * from kucuns order by shangpinid asc", cn, 3, 1
While Not Rs.EOF
Set itmX = Form1.ListView3.ListItems.Add(, , CStr(Rs!shangpinmingcheng)) '销售
If Not IsNull(Rs!shangpinmingcheng) Then
itmX.SubItems(1) = CStr(Rs!shangpinxinghao)
itmX.SubItems(2) = CStr(Rs!kucunshuliang)
itmX.SubItems(3) = CStr(Rs!xiaoshoujiage)
itmX.SubItems(4) = CStr(Rs!sid)
End If

Set itmX = Form1.ListView1.ListItems.Add(, , CStr(Rs!shangpinmingcheng)) '商品。
If Not IsNull(Rs!shangpinmingcheng) Then
itmX.SubItems(1) = CStr(Rs!shangpinxinghao)
itmX.SubItems(2) = CStr(Rs!kucunshuliang)
itmX.SubItems(3) = CStr(Rs!xiaoshoujiage)
itmX.SubItems(4) = CStr(Rs!jinhuojiage)
itmX.SubItems(5) = CStr(Rs!sid)
End If

If Rs!tishishuliang >= Rs!kucunshuliang Then
Set itmX = Form1.ListView2.ListItems.Add(, , CStr(Rs!shangpinmingcheng)) '进货。
If Not IsNull(Rs!shangpinmingcheng) Then
itmX.SubItems(1) = CStr(Rs!shangpinxinghao) ' Author ID。
itmX.SubItems(2) = CStr(Rs!kucunshuliang) ' Author ID。
itmX.SubItems(3) = CStr(Rs!sid) ' Author ID。

itmX.ForeColor = &HFF& '第一列颜色
itmX.ListSubItems(1).ForeColor = &HFF&
itmX.ListSubItems(2).ForeColor = &HFF&
itmX.ListSubItems(3).ForeColor = &HFF& '列颜色

End If

Else
Set itmX = Form1.ListView2.ListItems.Add(, , CStr(Rs!shangpinmingcheng)) '进货。

'若 AuthorID 字段不为空,则将 SubItem 1 设置为此字段。
If Not IsNull(Rs!shangpinmingcheng) Then
itmX.SubItems(1) = CStr(Rs!shangpinxinghao)
itmX.SubItems(2) = CStr(Rs!kucunshuliang)
itmX.SubItems(3) = CStr(Rs!sid)

End If
End If
If Rs!tishishuliang >= Rs!kucunshuliang Then
Set itmX = Form1.ListView4.ListItems.Add(, , CStr(Rs!shangpinmingcheng)) '订货。
If Not IsNull(Rs!shangpinmingcheng) Then
itmX.SubItems(1) = CStr(Rs!shangpinxinghao)
itmX.SubItems(2) = CStr(Rs!kucunshuliang)
itmX.SubItems(3) = CStr(Rs!tishishuliang)
itmX.ForeColor = &HFF& '第一列颜色
itmX.ListSubItems(1).ForeColor = &HFF&
itmX.ListSubItems(2).ForeColor = &HFF&
itmX.ListSubItems(3).ForeColor = &HFF& '列颜色

End If
End If
Rs.MoveNext '移动到下一条记录。

Wend

Set Rs = Nothing
Set cn = Nothing

End Sub

Public Sub L1shuangji(sql)
Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\rifeng\data\db1.mdb;Persist Security Info=False"
cn.Open
Rs.CursorLocation = adUseClient
Rs.Open sql, cn, 3, 1
With Rs
Form5.Text1.Text = Rs!shangpinmingcheng
Form5.Text2.Text = Rs!shangpinxinghao
Form5.Text4.Text = Rs!xiaoshoujiage
Form5.Text3.Text = Rs!jinhuojiage
Form5.Text5.Text = Rs!kucunshuliang
Form5.Combo1.Text = Rs!shangpindanwei

Form5.Text6.Text = Rs!tishishuliang
Form5.Label11.Caption = Rs!sid
End With
Rs.Close
Set Rs = Nothing
Set cn = Nothing
Form5.Show
End Sub

错误提示在
rs.files("sid")这个 提示是对象关闭时,操作不被允许
...全文
107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kbsssnlss 2009-11-22
  • 打赏
  • 举报
回复
或者有类中那个构造函数和折构函数
private sub class_initialize()'构造函数
end sub
private sub class_terminate()'折构函数
end sub
huanghhh4 2009-11-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cbirdno1no1 的回复:]
在类中,你可以定义函数返回值,如下所示:
Public Function yuJu(DataFile As String,sql As String) As Long
Dim cn As New ADODB.Connection, Rs As ADODB.Recordset
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataFile & ";Persist Security Info=False"
cn.CursorLocation = adUseClient
cn.Open
Set Rs=cn.Execute(sql)'sql必须是合法的Select查询语句
Rs.MoveLast
yuJu= Val(Rs.Fields("sid")) + 1   
End Function

[/Quote]
这个方面我测试过 ,可以了。谢谢了。
还有谢谢大家的关心。
cBirdNO1NO1 2009-11-22
  • 打赏
  • 举报
回复
在类中,你可以定义函数返回值,如下所示:
Public Function yuJu(DataFile As String,sql As String) As Long
Dim cn As New ADODB.Connection, Rs As ADODB.Recordset
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataFile & ";Persist Security Info=False"
cn.CursorLocation = adUseClient
cn.Open
Set Rs=cn.Execute(sql)'sql必须是合法的Select查询语句
Rs.MoveLast
yuJu= Val(Rs.Fields("sid")) + 1
End Function
xyshun2005 2009-11-22
  • 打赏
  • 举报
回复
不错,谢谢分享
clear_zero 2009-11-22
  • 打赏
  • 举报
回复
你传进去的是一个update的代码,现在要取出值需要传一个select开头的sql进去啊

况且你的class1里面直接操作form5里面的label,这个也不符合设计
lb_bn 2009-11-21
  • 打赏
  • 举报
回复
帮顶。。。
huanghhh4 2009-11-21
  • 打赏
  • 举报
回复
class1里面
Public Sub yuJu(sql)
Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\rifeng\data\db1.mdb;Persist Security Info=False"
cn.Open
Rs.CursorLocation = adUseClient
Rs.Open sql, cn, 3, 1
Rs.MoveLast
Form5.Label11.Caption = Val(Rs.Fields("sid")) + 1

End Sub
booksoon 2009-11-21
  • 打赏
  • 举报
回复
Rs.MoveLast
没有记录了吧~~~
huanghhh4 2009-11-21
  • 打赏
  • 举报
回复
Rs.MoveLast
Form5.Label11.Caption = Val(Rs.Fields("sid")) + 1
对不起,说错了。错误是在这个
说:提示是对象关闭时,操作不被允许
射天狼 2009-11-21
  • 打赏
  • 举报
回复
rs.files("sid")这句在哪?
在你给定的代码中没找到呢。
问问题要讲究方法,贴这么一堆代码,错误代码还未在其中。。。

7,786

社区成员

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

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