Private Sub cmdOK_Click()
'用来存放SQL语句
Dim txtSQL As String
'用来存放记录集对象
' Dim mrc As ADODB.Recordset
--------这里改为-----------------------1
Dim mrc As New ADODB.Recordset
'用来存放返回信息
Dim MsgText As String
UserName = ""
'判断输入用户名是否为空
If Trim(txtUserName.Text = "") Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
'查询指定用户名的记录
txtSQL = "select * from user where 用户名='" & txtUserName.Text & "'"
'执行查询语句
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
'判断输入密码是否正确
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text)
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End If
'记载输入密码次数
miCount = miCount + 1
If miCount = 3 Then
Me.Hide
End If
Exit Sub
End Sub
'用来存放SQL语句
Dim txtSQL As String
'用来存放记录集对象
' Dim mrc As ADODB.Recordset
--------这里改为-----------------------1
Dim mrc As New ADODB.Recordset
'用来存放返回信息
Dim MsgText As String
UserName = ""
'判断输入用户名是否为空
If Trim(txtUserName.Text = "") Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
'查询指定用户名的记录
txtSQL = "select * from user where 用户名='" & txtUserName.Text & "'"
'执行查询语句
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
'判断输入密码是否正确
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text)
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End If
'记载输入密码次数
miCount = miCount + 1
If miCount = 3 Then
Me.Hide
End If
Exit Sub
End Sub
解决方案 »
- 赚分...
- 变通使用RichTextBox1.SelFontName的问题
- 如何确定采购订单完成状态情况
- 关于 :二维动态数组的小问题!请各位大侠帮忙!急!急!急!急!急!急!
- 用VB+ADO连接Sysbase数据库时候用where 不能查询到中文字符串条件的记录
- 可以利用API改变TreeView 与 ListView 的滚动条的宽度吗?
- vb6调用ansys11.0出错
- SQL server 数据库的数据导入导出
- 使用过微软MSWINSCK.OCX控件的朋友帮忙看一下,在线等待!
- 如何做一个能计元音字符的dll部件?
- 助手的使用
- 怎么会这样?一个access表,jet.4.0无法打开,jet.3.51却可以打开??
Dim mrc As New ADODB.Recordset
运行,出现:实时错误‘3704’
Operation is not allowed when the object is closed大家帮帮忙啊!
1。能不能把sql的实现方在函数中,看上去太乱了。
2。你的程序我没有仔细看,但从报的错误看,估计是数据库的连接有误!!
3。另外一个低级错误是:
mrc.eof是判断记录是否超底,它本身是一个布尔值,不用写 mrc.Eof=true/flase,用mrc.eof或Not mrc.eof就可以了。
建议要不把查询过程写到cmdOK_Click事件里,要不把查询过程做的封装性再强一些,自己定义返回的数据结构。
其二:你没有定义以什么方式打开表。这将导致表的查询方式只能向后查询而不能用MoveFirst等方式。
其三:建议你打开Cnn时采用
with cnn
.connectiontstring = 连接字符串
.connecttimeout = 45
.open
end with
然后判断cnn是否已经正常打开了。如果不能打开,请打cnn的相应选项加上,直到能打开数据库为止。
其四:
If mrc.EOF Then
msgbox"Can't open the table"
exit function
end if
mrc.EOF本身就是布尔型值,如果不能打开表,你可以进行相应的处理。
[email protected]
这是你的数据库表中没有记录的原因: 干脆给你一个实例算了:
比较多要仔细看看才行:
im connstr As String
Dim i, j, X, y As Integer
Dim re As New ADODB.Recordset
Dim re1 As New ADODB.Recordset
Dim re2 As New ADODB.Recordset
Dim db As New ADODB.Connection
connstr = "provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=zldb;Data Source=BUSINESS;Connect Timeout=30"
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'%This Business is SQL Server name %
'%This zldb is a dababase name %
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
If db.State = 0 Then
db.Open connstr
re.CursorLocation = adUseClient
re.Open "select* from system", connstr, adOpenDynamic, adLockOptimistic
re1.CursorLocation = adUseClient
re1.Open "select* from ruzhudj order by id ", connstr, adOpenDynamic, adLockOptimistic
re2.CursorLocation = adUseClient
re2.Open "select* from bill_night order by id ", connstr, adOpenDynamic, adLockOptimistic
End If
'**************************************************
Dim sign As String
Dim X, y, z As Integer
Text1.Text = 1
Text2.Text = ""
Text3.Text = ""
Dim dd As String
re.MoveFirst
dd = CDate(Trim(re.Fields("datime").Value))
Text2.Text = dd
d1 = DateAdd("d", CInt(Text1), dd)
Text3.Text = d1
sign = MsgBox("È·ÈÏÏëÒª¹ý" & Trim(re.Fields("datime").Value) & "µÄ·¿ÕÊÂð£¿", vbYesNo + vbQuestion, "·¿×â¹ý×â")
If sign = vbYes Then
re.MoveFirst
re.Fields("datime").Value = d1
re.Update
re.MoveNext
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
i = 0
j = 0
If re1.RecordCount <> 0 Then
re1.MoveFirst
For i = 0 To re1.RecordCount - 1
If (Trim(re1.Fields("status1").Value) <> 1) And (Trim(re1.Fields("status2").Value) <> 1) And (Trim(re1.Fields("status3").Value) <> 1) Then
For j = 1 To 3
With re2
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
If j = 1 Then
.AddNew
.Fields("order_no").Value = j
.Fields("room_no").Value = Trim(re1.Fields("room_no").Value)
.Fields("write_t").Value = Date 'Trim(re1.Fields("arrivedate").Value)
.Fields("item").Value = dd & "É¢¿Í·¿×â"
.Fields("jf").Value = Trim(re1.Fields("realprice").Value)
.Fields("jf_leiji").Value = CSng(Trim(re1.Fields("realprice").Value))
.Fields("df").Value = ""
.Fields("oper").Value = Trim(fmlogin.Label3.Caption)
.Fields("meno").Value = "1" & "-" & Trim(re1.Fields("room_no").Value) & " " & Trim(re1.Fields("name").Value)
re2.Update
End If
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
If j = 2 Then
If Trim(re1.Fields("servicecharge").Value) = "¼ÓÊÕ" Then
.AddNew
.Fields("order_no").Value = j
.Fields("room_no").Value = Trim(re1.Fields("room_no").Value)
.Fields("write_t").Value = Date 'Trim(re1.Fields("arrivedate").Value)
.Fields("item").Value = dd & "É¢¿Í·þÎñ·Ñ"
.Fields("jf").Value = (CSng(Trim(re1.Fields("roomprice").Value)) * 10) / 100
.Fields("jf_leiji").Value = Trim(re1.Fields("roomprice").Value * 10) / 100
.Fields("df").Value = ""
.Fields("oper").Value = Trim(fmlogin.Label3.Caption)
.Fields("meno").Value = "1" & "-" & Trim(re1.Fields("room_no").Value) & " " & Trim(re1.Fields("name").Value)
re2.Update
End If
End If
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
If j = 3 Then
.AddNew
If Trim(re1.Fields("servicecharge").Value) = "ÃâÊÕ" Then
.Fields("order_no").Value = j - 1
Else
.Fields("order_no").Value = j
End If
.Fields("room_no").Value = Trim(re1.Fields("room_no").Value)
.Fields("write_t").Value = Date
.Fields("item").Value = dd & "±£ÏÕ·Ñ"
.Fields("jf").Value = "5"
.Fields("jf_leiji").Value = "5"
.Fields("df").Value = ""
.Fields("oper").Value = Trim(fmlogin.Label3.Caption)
.Fields("meno").Value = "1" & "-" & Trim(re1.Fields("room_no").Value) & " " & Trim(re1.Fields("name").Value)
re2.UpdateEnd If
End With
Next j
End If
re1.MoveNext
Next i
End If'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Else
Exit Sub
End If
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'If MaskEdBox2.Text = "0000-00-00" Then
'dd = MsgBox("ÇëÈ·ÈÏÊÇ·ñÐèÒª¸ü¸Ä´ËÈÕÆÚ", vbYesNo + vbQuestion, "Ìáʾ")
'If dd = vbYes Then
'MaskEdBox2.SetFocus
'Exit Sub
'End If
'If dd = vbNo Then
'Exit Sub
'End If
'End If
'If Text3.Text = "" Then
'Exit Sub
'End If
'MaskEdBox2.Format = "yyyy-mm-dd"
'd1 = CDate(MaskEdBox2.Text)
'd2 = DateAdd("d", CInt(Text3), d1)
'MaskEdBox3.Text = d2
tmrTimer1.Enabled = True
PlaySound App.Path & "\the microsoft sound.wav"
End SubPrivate Sub Label6_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)Picture6.BackColor = &HFFFF00
Label6.BackColor = &HFFFF00End Sub
'*************************************************************
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then '××××有问题
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
很久没有写vb代码了,记得是这样的,如果ExecuteSQL没有返回。mrc是空的,EOF不可用用IsEmpty()判断一下,你试试吧
1.你连接数据库时可能出错了,检查一下connectstring这句语句,是否写正确,或者把他该成connectstring ="file name=你保存的DNS的路径".注意的是在odbc源中选择dns文件哦!
2.你的sql语句有没有写正确,查看方法是把你的语句放到sql server中的查询分析器中去运行一下,看看有没有什么问题!有问题就改一下!就这样了,又问题就与我联系,我的 QQ是57766476
你不能用函数返回一个记录集,而且在Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset中你并没有将ExecuteSQL初始化,我不明白你怎么就调试的过去?还有Set mrc = ExecuteSQL(txtSQL, MsgText)你也应该用
Set mrc = ExecuteSQL(txtSQL, MsgText).clone
建议你最好不要用函数返回记录集
就会没有东西建议不要用函数返回记录集