设计一个查询功能求助,谢谢!
呃……表简单是这样子的,用ACCESS表的:
编号型号备注
11a大齿轮
21b中齿轮
31c中齿轮
42a大齿轮
52b中齿轮
63b中齿轮
73c小齿轮
83d细齿轮
94a大齿轮
104b中齿轮
114c小齿轮
124d细齿轮
然后我想在文本框TEXT1里输入:1a-1c,4a,然后就可以查询到以下几条记录:
编号型号备注
11a大齿轮
21b中齿轮
31c中齿轮
94a大齿轮
之后我想在文本框TEXT1里输入:1a-1c,4a-4c,然后就可以查询到以下几条记录:
编号型号备注
11a大齿轮
21b中齿轮
31c中齿轮
94a大齿轮
104b中齿轮
114c小齿轮
124d细齿轮
然后输入单个的条件,例如:1c,就会出现:
31c中齿轮
这应该怎么写?刚刚学SQL不太懂怎样写……求解答,谢谢!~
[解决办法]
Private Sub Command1_Click()
Dim v As Variant, sqlstr As String
v = Split(Text1.Text, ",")
For Each s In v
If InStr(s, "-") > 0 Then
sqlstr = sqlstr & "型号>=""" & Replace(s, "-", """ And 型号<=""") & """ or "
Else
sqlstr = sqlstr & "型号=""" & s & """ or "
End If
Next s
sqlstr = "select * from tb where " & Left(sqlstr, Len(sqlstr) - 4)
Set rs = conn.execute(sqlstr)
End Sub
[解决办法]
基本的思路是这样:
1 首先分解你在 Text1 中的输入条件。例如:
1a-1c,4a-4c -> 1a, 1b, 1c, 4a, 4b, 4c
strTypeList = "1a, 1b, 1c, 4a, 4b, 4c"
2 查询语句如下:
"SELECT * FROM yourTable WHERE 型号 IN (" & strTypeList & ")"
[解决办法]
这样分解:
Dim strGroup() As String, strItem() As String
Dim i As Integer
Dim a As String, z As String
Dim strTypeList As String
strGroup = Split(Replace(Text1, " ", ""), ",")
For i = 0 To UBound(strGroup)
If InStr(strGroup(i), "-") Then
strItem = Split(strGroup(i), "-")
If UBound(strItem) = 1 Then
a = Trim(strItem(0))
z = Trim(strItem(1))
Do Until a > z
strTypeList = strTypeList & a & IIf(a < z, ", ", "")
a = Left(a, 1) & Chr(Asc(Right(a, 1)) + 1)
Loop
End If
Else
strTypeList = strTypeList & strGroup(i)
End If
If i < UBound(strGroup) Then strTypeList = strTypeList & ", "
Next i
Debug.Print strTypeList
你可能还需要一些输入句法检查来避免输入错误。
[解决办法]
感谢!
但我的搜索还需要同时符合其它的条件,例如TEXT2.TEXT再按其它条件再搜索一次。
我是想用复合查询,但又想不到怎样写啊……
[解决办法]
为什么你的输入
1a-1c,4a-4c
结果中会有?
12 4d 细齿轮
你想要的是什么逻辑呢?我以为4a-4c就是 4a,4b,4c阿
虽然搞不懂你的逻辑,但是你可以多设置几个textbox
就是4a填写在一个box里面,4c填写在另外一个里面; 1a在一个里面,1c在另一个里面。这样比较简单。
[解决办法]
dim s() as string
dim ss as string
dim S1() as string
dim sa as string
s=split(text1,",")
for i=0 to ubound(s)
if s(i)<>"" then
s1=split(s(i),"-")
if ubound(s)=0 then
sa="字段名='"&s1(0)&"'"
else
sa="字段名 between '"& s1(0) &"' AND '"& s1(1)&"'"
end if
if ss="" then
ss=sa
else
ss=ss & " OR "& sa
end if
end if
next
sql="select * from 表名 WHERE "& ss