关于sql语句和vb数组的关系问题

Ice1982 2004-09-09 03:26:46
我用vb作了一个程序,用来连接sql server2000中的一个表。用一个数组来记录此表中的一个字段,然后把此数组作为where语句中的查询条件,但是t-sql语句处报错。具体代码如下
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim i As Integer
Dim str1(1000) As String

Set cn = New ADODB.Connection
cn.Open "Provider=sqloledb;Data Source=SERVER ;Initial Catalog=OFFICE;User Id=sa;Password="
sql = "select 名称 from 表"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sql, cn, adOpenDynamic, adLockOptimistic
i = 1
While (rs.EOF = False)
str1(i) = rs.Fields(0) '名称
i = i + 1
rs.MoveNext
Wend

For i = 1 To 1000
Set cn = New ADODB.Connection
cn.Open "Provider=sqloledb;Data Source=SERVER ;Initial Catalog=OFFICE;User Id=sa;Password="
sql = "select 数量 from 表 where 名称=str1(i)"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sql, cn, adOpenDynamic, adLockOptimistic
j = 0
While (rs.EOF = False)
j = j + rs.Fields(0) '数量
rs.MoveNext
Wend
str3(i) = j
Next i

sql = "select 数量 from 表 where 名称=str1(i)"报错为:“str1不是可识别的函数名”请问大家该怎样解决
...全文
167 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Ice1982 2004-09-13
请大家帮帮忙。自己顶一下
回复
Ice1982 2004-09-13
在输入了:入库时间<'" & Format(Text1.Text, "yyyy-mm") & "'之后就报错。只有输入改为:入库时间<'" & Format(Text1.Text, "yyyy-mm-dd") & "'之后才能正常运行。但是我希望:入库时间='" & Format(Text1.Text, "yyyy-mm") & "'只要满足该月的条件就行,但要是改为:入库时间='" & Format(Text1.Text, "yyyy-mm-dd") & "'就只能满足改天的条件才行了。这与我希望的不符。请问各位应该怎样处理?
回复
harryho 2004-09-12
sql = "select 数量 from 表 where 名称=str1(i)"将这句改为:
sql = "select 数量 from 表 where 名称='" &str1(i) &"'"
回复
cosio 2004-09-10
(year(入库时间)<year( '" & Format(Text1.Text, "yyyy-mm") & " ')) or (year(入库时间)=year('" & Format(Text1.Text, "yyyy-mm") & " ') and month(入库时间)< month('" & Format(Text1.Text, "yyyy-mm") & " ') ) "


上面已经指出了yyyy-mm 无需在判断year和month了
还有year('" & Format(Text1.Text, "yyyy-mm") & " ') 这个本来是datatime ,而 year()转换字符串,当然去提示出错了!


就用 入库时间<format(text1.text,yyyy-mm) 就可以了!
回复
vzxq 2004-09-10
stduy
回复
badboyst 2004-09-10
去掉''试试,在sqlserver中时间不能加''
(year(入库时间)=year(" & Format(Text1.Text, "yyyy-mm") & ")
回复
Ice1982 2004-09-10
可以了。但是又遇到新的问题了。
text1.text="2004-09"

sql = "select 数量 from 入库表 where 名称='" & str1(i) & "' and [规格/型号]='" & str2(i) & "' and (year(入库时间)<year( '" & Format(Text1.Text, "yyyy-mm") & " ')) or (year(入库时间)=year('" & Format(Text1.Text, "yyyy-mm") & " ') and month(入库时间)< month('" & Format(Text1.Text, "yyyy-mm") & " ') ) "

在执行sql语句时提示错误为:
从字符串转换为datetime是发生语法错误
请问大家,这情况将如何处理?
回复
cosio 2004-09-09
str1不是可识别的函数名 不是SQL的函数!


改成:名称='"&strl(i)&"' 看行不行了
回复
starsoulxp 2004-09-09
变量名要写在引号外面,写里面它不认识,又不是sql函数
回复
starsoulxp 2004-09-09
sql = "select 数量 from 表 where 名称='" & str1(i) & "'"
回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2004-09-09 03:26
社区公告
暂无公告