VB里数据库SQL查询的问题
我知道下面的代码有内行人眼里有不少问题,小弟初入此门让各位见笑了,请多多指教!我建的数据库里有一个“图书登记”的表,表里里五个字段,分别是:ID、图书名称、主编、出版社、...
我知道下面的代码有内行人眼里有不少问题,小弟初入此门让各位见笑了,请多多指教!
我建的数据库里有一个“图书登记”的表,表里里五个字段,分别是:ID、图书名称、主编、出版社、定价,ID为主键。
期望的查询结果是:在Text1输入书名或者在Text2里输入主编(即按书名和主编查询),如果数据库里有此记录,则在数据库里作为焦点显示,并且弹出MsgBox提示有此记录,否则提示无此记录,其查询按钮全部代码如下,请内行人给修改一下,能符合上面的条件,非常感谢!!
Private Sub Command4_Click() '图书查询按钮触发事件
If (Text1.Text = "") And (Text2.Text = "") Then '判断text1~2是否为空
fm = MsgBox("图书名称或主编不能同时为空,二者请选一个输入进行查询", , "系统提示") 'MsgBox赋值给fm
End If
If fm = 1 Then
Text1.SetFocus
Exit Sub
Else
End If
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Str1 As String
Dim Str2 As String
Dim Str3 As String
T1 = Text1.Text
T2 = Text2.Text
Text1.SetFocus
Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;"
Str2 = "Data Source=E:\vb\图书书架.mdb;"
Str3 = "Jet OLEDB:Database Password="
conn.Open Str1 & Str2 & Str3
strSQL = "select * Tsmc=图书登记.图书名称,ZB=图书登记.主编"
strSQL = "select * from 图书登记 "
strSQL = "where rs!Tsmc=" & Val(T1) & " And rs!zb = " & Val(T2) & ""
If Tsmc = Val(T1) Or zb = Val(T2) Then
strSQL = "select ID,图书名称,主编,出版社,定价 from 图书登记 "
rs.Open strSQL, conn, 3, 3
MsgBox "查询系统记录有您需要的图书", , "系统提示"
Adodc1.Refresh
Else
MsgBox ("查无此书")
rs.Close
conn.Close
Exit Sub
End If
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Exit Sub
End Sub
补充一下,数据库查询里是不是不能用中文表头?如果是该如何解决?请指教~~
另外如果全部功能能正常实现,并且注释很清楚(能让我明白),还可追加30分!!! 展开
我建的数据库里有一个“图书登记”的表,表里里五个字段,分别是:ID、图书名称、主编、出版社、定价,ID为主键。
期望的查询结果是:在Text1输入书名或者在Text2里输入主编(即按书名和主编查询),如果数据库里有此记录,则在数据库里作为焦点显示,并且弹出MsgBox提示有此记录,否则提示无此记录,其查询按钮全部代码如下,请内行人给修改一下,能符合上面的条件,非常感谢!!
Private Sub Command4_Click() '图书查询按钮触发事件
If (Text1.Text = "") And (Text2.Text = "") Then '判断text1~2是否为空
fm = MsgBox("图书名称或主编不能同时为空,二者请选一个输入进行查询", , "系统提示") 'MsgBox赋值给fm
End If
If fm = 1 Then
Text1.SetFocus
Exit Sub
Else
End If
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Str1 As String
Dim Str2 As String
Dim Str3 As String
T1 = Text1.Text
T2 = Text2.Text
Text1.SetFocus
Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;"
Str2 = "Data Source=E:\vb\图书书架.mdb;"
Str3 = "Jet OLEDB:Database Password="
conn.Open Str1 & Str2 & Str3
strSQL = "select * Tsmc=图书登记.图书名称,ZB=图书登记.主编"
strSQL = "select * from 图书登记 "
strSQL = "where rs!Tsmc=" & Val(T1) & " And rs!zb = " & Val(T2) & ""
If Tsmc = Val(T1) Or zb = Val(T2) Then
strSQL = "select ID,图书名称,主编,出版社,定价 from 图书登记 "
rs.Open strSQL, conn, 3, 3
MsgBox "查询系统记录有您需要的图书", , "系统提示"
Adodc1.Refresh
Else
MsgBox ("查无此书")
rs.Close
conn.Close
Exit Sub
End If
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Exit Sub
End Sub
补充一下,数据库查询里是不是不能用中文表头?如果是该如何解决?请指教~~
另外如果全部功能能正常实现,并且注释很清楚(能让我明白),还可追加30分!!! 展开
展开全部
Private Sub Command4_Click() '图书查询按钮触发事件
If (Text1.Text = "") And (Text2.Text = "") Then
MsgBox("图书名称或主编不能同时为空,二者请选一个输入进行查询", , "系统提示")
Exit Sub
End If
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Strcon As String
Dim strSQL As String
'这里无需使用那么多的变量,占内存。
Strcon = "Provider=Microsoft.Jet.OLEDB.4.0;"
Strcon = Strcon & "Data Source=E:\vb\图书书架.mdb;"
Strcon =Strcon & "Jet OLEDB:Database Password="
conn.Open Strcon
'查询连接字符串,你写的实在是太...
strSQL="select * from 图书登记 where 图书名称='" & Trim(Text1) & "' and 主编='" & Trim(Text2) & "'"
rs.open strSQL,conn
If rs.EOF and rs.BOF then
msgbox "查无此书"
Text1=""
Text2=""
Text1.Setfource
else
'你的那个Adodc1出现的实在是有些莫名其妙.
msgbox "查到了"
'在Text3中显示查询到的书籍的ID号,即字段ID的值,以下同理。
Text3=rs.Fields("ID")
Text4=rs.fields("出版社")
Text5=rs.Fields("定价")
end if
'关闭游标
rs.close
'释放游标所占内存
set rs=nothing
'关闭连接对象
conn.close
'释放连接对象所占内存
set conn=nothing
End Sub
'补充:
'数据库查询可以用中文表头,但是最好还是使用英文的。
If (Text1.Text = "") And (Text2.Text = "") Then
MsgBox("图书名称或主编不能同时为空,二者请选一个输入进行查询", , "系统提示")
Exit Sub
End If
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Strcon As String
Dim strSQL As String
'这里无需使用那么多的变量,占内存。
Strcon = "Provider=Microsoft.Jet.OLEDB.4.0;"
Strcon = Strcon & "Data Source=E:\vb\图书书架.mdb;"
Strcon =Strcon & "Jet OLEDB:Database Password="
conn.Open Strcon
'查询连接字符串,你写的实在是太...
strSQL="select * from 图书登记 where 图书名称='" & Trim(Text1) & "' and 主编='" & Trim(Text2) & "'"
rs.open strSQL,conn
If rs.EOF and rs.BOF then
msgbox "查无此书"
Text1=""
Text2=""
Text1.Setfource
else
'你的那个Adodc1出现的实在是有些莫名其妙.
msgbox "查到了"
'在Text3中显示查询到的书籍的ID号,即字段ID的值,以下同理。
Text3=rs.Fields("ID")
Text4=rs.fields("出版社")
Text5=rs.Fields("定价")
end if
'关闭游标
rs.close
'释放游标所占内存
set rs=nothing
'关闭连接对象
conn.close
'释放连接对象所占内存
set conn=nothing
End Sub
'补充:
'数据库查询可以用中文表头,但是最好还是使用英文的。
七鑫易维信息技术
2024-09-02 广告
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分...
点击进入详情页
本回答由七鑫易维信息技术提供
展开全部
首先连接数据库:
Dim strPTR As String
strPTR = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "E:\vb\图书书架.mdb"
db.Open strPTR
第二步连接数据表:
1、基本查询语句,查询多条记录,可以DO语句
strSQL = "select * from 图书登记"
RS.Open strSQL, db, 2, 2
2、有条件查询语句,可能是一条记录,也可能有多条记录,可以DO循环语句
strSQL = "select * from 图书登记 where 图书名称='" & Text1.Text & "' or 主编 = '" & Text2.Text & "'
RS.Open strSQL, db, 2, 2
3、DO循环语句读记录
Do While Not RS.EOF
Text1(i).Text = RS!图书名称
Text2(i).Text = RS!主编
Text3(i).Text = RS!出版社
Text4(i).Text = RS!定价
Text5(i).Text = RS!ID
RS.MoveNext
Loop
4、关闭数据库连接
RS.Close
Set RS = Nothing
db.Close
Set db = Nothing
Dim strPTR As String
strPTR = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "E:\vb\图书书架.mdb"
db.Open strPTR
第二步连接数据表:
1、基本查询语句,查询多条记录,可以DO语句
strSQL = "select * from 图书登记"
RS.Open strSQL, db, 2, 2
2、有条件查询语句,可能是一条记录,也可能有多条记录,可以DO循环语句
strSQL = "select * from 图书登记 where 图书名称='" & Text1.Text & "' or 主编 = '" & Text2.Text & "'
RS.Open strSQL, db, 2, 2
3、DO循环语句读记录
Do While Not RS.EOF
Text1(i).Text = RS!图书名称
Text2(i).Text = RS!主编
Text3(i).Text = RS!出版社
Text4(i).Text = RS!定价
Text5(i).Text = RS!ID
RS.MoveNext
Loop
4、关闭数据库连接
RS.Close
Set RS = Nothing
db.Close
Set db = Nothing
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的SQL语句写得有问题啊,感觉写的很乱,比如:
strSQL = "select * Tsmc=图书登记.图书名称,ZB=图书登记.主编"
strSQL = "select * from 图书登记 "
strSQL = "where rs!Tsmc=" & Val(T1) & " And rs!zb = " & Val(T2) & ""
像上面这样写有什么意义呢?
还有
strSQL = "select ID,图书名称,主编,出版社,定价 from 图书登记 "
可以这样写 strSQL="select * from 图书登记 where 图书(名称 = T1 Or 主编 = T2 );"
然后再判断一下查询结果是否为空。
strSQL = "select * Tsmc=图书登记.图书名称,ZB=图书登记.主编"
strSQL = "select * from 图书登记 "
strSQL = "where rs!Tsmc=" & Val(T1) & " And rs!zb = " & Val(T2) & ""
像上面这样写有什么意义呢?
还有
strSQL = "select ID,图书名称,主编,出版社,定价 from 图书登记 "
可以这样写 strSQL="select * from 图书登记 where 图书(名称 = T1 Or 主编 = T2 );"
然后再判断一下查询结果是否为空。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |