📄 图书查询.frm
字号:
Text = "无其他条件"
Top = 1680
Width = 1455
End
Begin VB.TextBox Text1
Height = 285
Left = 1680
TabIndex = 2
Top = 960
Width = 3495
End
Begin VB.ComboBox Combo1
Height = 300
ItemData = "图书查询.frx":0103
Left = 480
List = "图书查询.frx":0113
TabIndex = 1
Text = "书名"
Top = 960
Width = 1095
End
Begin VB.Frame Frame1
Height = 735
Left = 240
TabIndex = 5
Top = 720
Width = 6855
End
Begin VB.Label helpme
AutoSize = -1 'True
BeginProperty Font
Name = "宋体"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = -74160
TabIndex = 23
Top = 840
Width = 150
End
End
End
Attribute VB_Name = "图书查询"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Sub Clear_Click()
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Clear2_Click()
CmbReaderid.Text = ""
TxtPwd.Text = ""
End Sub
Private Sub Cmdexit3_Click()
Unload Me '第一步,第二步执行UNLOAD ME 的过程
Unload 主界面 '第三步
End Sub
Private Sub Cmdreturn3_Click()
Unload Me
End Sub
Private Sub Combo2_click() '不显示第二个查询条件
If Combo2.Text <> "无其他条件" Then
Frame4.Visible = True
Else
Frame4.Visible = False
End If
End Sub
Private Sub Exit_Click()
Unload Me '第一步,第二步执行UNLOAD ME 的过程
Unload 主界面 '第三步
End Sub
Private Sub Exit1_Click()
Unload Me
Unload 主界面 '给主界面发结束信号
End Sub
Private Sub Form_Load()
' Dim str As String
'' Dim cnn1 As New ADODB.Connection
'' cnn1.Open Adodc1.ConnectionString
' str = "select * from book"
' Adodc1.RecordSource = str
' Adodc1.Recordset.Open str, cnn1, adOpenKeyset
Dim rsReader As ADODB.Recordset
Dim i As Long
Set rsReader = de.rsReader
i = 0
While (rsReader.EOF = False And rsReader.BOF = False)
CmbReaderid.AddItem rsReader.Fields("readerid").Value, i
rsReader.MoveNext
i = i + 1
Wend
CmbReaderid.Text = CmbReaderid.List(0)
rsReader.MoveFirst '记录指针复位
helpme.Caption = "图书查询过程:" + vbCrLf + "先选择按什么方式查询," + vbCrLf + "再将你所查询之书的信息填写一下。" + vbCrLf + "按给我搜按钮即可" + vbCrLf + "读者查询过程:" + vbCrLf + "将你的读者号和密码信息填写一下。" + vbCrLf + "按给我搜按钮即可"
End Sub
Private Sub Form_Unload(Cancel As Integer)
主界面.Show
End Sub
Private Sub OK_Click()
On Error GoTo ERR
Dim YesOrNo As Boolean '密码是否正确标志
Dim rsReader As ADODB.Recordset
Dim rsReaderInfo As ADODB.Recordset
If de.Libarary.State = 0 Then de.Libarary.Open '打开数据库和记录集
If de.rsReader.State = 0 Then de.reader
If de.rsReaderInfo.State = 0 Then de.ReaderInfo
Set rsReader = de.rsReader
Set rsReaderInfo = de.rsReaderInfo
' rsReader.Filter = "readerid = '" + Trim(cmbReaderid.Text) + "' and " + " password = '" + Trim(TxtPwd) + "'"
' rsReader.Filter = "readerid = " + cmbReaderid + " and " + " password = " + TxtPwd
' Do While (Not de.rsReader.EOF) '判断密码是否正确
' If CmbReaderid.Text = de.rsReader.Fields(0).Value Then
' If Text4.Text = de.rsReader.Fields(1).Value Then
' YesOrNo = True
' Else
' YesOrNo = False
' End If
'
' Exit Do
' Else
' de.rsReader.MoveNext
' End If
' Loop
'读者号未输入
If Trim(CmbReaderid.Text) = "" Then MsgBox "请输入读者号": CmbReaderid.SetFocus: ERR.Raise 3001
'读者号不存在
rsReader.Filter = "readerid = '" + Trim(CmbReaderid.Text) + "'"
If rsReader.RecordCount = 0 Then MsgBox "此读者不存在": CmbReaderid.SetFocus: ERR.Raise 3001
'读者号与密码不匹配
rsReader.Filter = "readerid = '" + Trim(CmbReaderid.Text) + "' and " + " password = '" + Trim(TxtPwd) + "'"
If de.rsReader.RecordCount = 0 Then MsgBox "此读者号与密码不匹配或密码不正确": TxtPwd.SetFocus: ERR.Raise 3001
'终于可以显示了
rsReaderInfo.Filter = "readerid = '" + Trim(CmbReaderid.Text) + "'"
读者查询结果.Show
' If de.rsreader.EOF Then
' MsgBox "无此读者信息"
' Else
' If YesOrNo = False Then '密码正确与否的处理
' MsgBox "密码不正确"
' Else
' de.rsReaderInfo.Filter = de.rsReaderInfo.Fields(0).Name & " = " & CmbReaderid.Text
' 读者查询结果.Show vbModal
' End If
' End If
de.rsReader.MoveFirst
Exit Sub
ERR:
If ERR.Number = 3001 Then Exit Sub
End Sub
Private Sub Return_Click()
Unload Me
' 主界面.Show 当执行UNLOAD ME 时,UNLOAD ME 过程中有个主界面.Show
End Sub
Private Sub Return1_Click()
Unload Me
End Sub
'后方一致还有问题
'只有两个复合查询
Private Sub search_Click()
On Error GoTo ErrLoc
'Dim strsql As String
'Dim rst As New ADODB.Recordset
Dim i1 As Integer '第一个选择字段的号码
Dim j1 As Integer '第一个选择任意一致还是前方一致
Dim str1 As String '第一个任意一致还是前方一致的具体字符串
Dim i2 As Integer '第二个选择字段的号码
Dim j2 As Integer '第二个任意一致还是前方一致
Dim str2 As String '第二个任意一致还是前方一致的具体字符串
Dim k As Integer '确定与、或、非
Dim strsel As String '确定与、或、非的字符串
i1 = Combo1.ListIndex '取值
i2 = Combo4.ListIndex
j1 = Combo3.ListIndex
j2 = Combo5.ListIndex
k = Combo2.ListIndex
If i1 = -1 Then i1 = 1 '如果未按,将其改为默认值
If j1 = -1 Then j1 = 0
If i2 = -1 Then i2 = 1
If j2 = -1 Then j2 = 0
If k = -1 Then k = 0
If de.Libarary.State = 0 Then de.Libarary.Open '如果未打开,则打开数据库
If de.rsBookInfo.State = 0 Then de.rsBookInfo.Open
'空格不能忘!!!!
Select Case j1 '根据具体的值,转化成具体的字符串
Case 0: '任意一致
str1 = " like " & "'" & "*" & Trim(Text1.Text) & "*" & "'"
Case 1: '前方一致
str1 = " like " & "'" & Trim(Text1.Text) & "*" & "'"
' Case 2: '后方一致
' str1 = " like " & "'" & "*" & Trim(Text1.Text) & "'"
Case 2: '等于
str1 = " = " & "'" & Trim(Text1.Text) & "'"
End Select
Select Case j2 '根据具体的值,转化成具体的字符串
Case 0: '任意一致
str2 = " like " & "'" & "*" & Trim(Text2.Text) & "*" & "'"
Case 1: '前方一致
str2 = " like " & "'" & Trim(Text2.Text) & "*" & "'"
' Case 2: '后方一致
' str2 = " like " & "'" & "*" & Trim(Text2.Text) & "'"
Case 2: '等于
str2 = " = " & "'" & Trim(Text2.Text) & "'"
End Select
Select Case k '根据具体的值,转化成具体的字符串
Case 0:
strsel = ""
Case 1:
strsel = " and "
Case 2:
strsel = " or "
' Case 3:
' strsel = " not "
End Select
If Trim(Text1.Text) = "" Then '没有输入数据,则先输入字符串
MsgBox "请先输入字符串"
Else '获取查询语句,显示查询结果
If Trim(Text2.Text) = "" Or Combo5.Text = "无其他条件" Then '单查询条件
de.rsBookInfo.Filter = de.rsBookInfo.Fields(i1).Name & str1
Else '双查询条件
de.rsBookInfo.Filter = de.rsBookInfo.Fields(i1).Name & str1 & strsel & _
de.rsBookInfo.Fields(i2).Name & str2
End If
查询结果.Show vbModal
End If
Exit Sub
ErrLoc:
Debug.Print ERR.Number & ERR.Description
'Resume '加上会死循环
End Sub
' x = rst.RecordCount
' y = rst.Fields.Count
' ReDim qry(x - 1, y - 1) As String '从0开始(行数和列数)
' 许萦英同学:
' 其实你遇到的这种错误:“Either BOF or EOF is True”
' 是查询不到结果的情况。
' 请不要惊慌! 听从党的安排! 听从政府的号召!
' While rst.BOF = False And rst.EOF = False
' For i = 0 To x - 1
' For j = 0 To y - 1
' 查询结果.qry(i, j) = rst.Fields(j).Value
' Next
' rst.MoveNext
' Next
' Wend
Private Sub SSTab1_DblClick()
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -