关于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不是可识别的函数名”请问大家该怎样解决
...全文
201 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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) & "'"

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧