bb64844866 发表于 2008-3-17 14:11:50

求助SQA Basic连接数据库语法变量问题!

打开robot使用SQA Basic语言编写连接数据库相关参数语句时,如果sql语句中的where后面的条件不想用常量控制而使用变量,如select ..from .. where name=???, "name"后的值如果是变量该如何写?我连接的是oracle9i数据库,目前在robot的脚本定义了一个变量,也能编译不报错,但运行时提示sql语句那不识别的变量,有点迷茫,不知道到底该在哪里声明这个变量才可以?请有经验的人事指点!

注:部分代码
    dim a as string
    set rs=createobject("adodb.recordset")
    sql="select 字段名 from 表名 where 字段名 =变量"
    rs.open sql,conn
在sql字符串中如果把变量写进sql语句才能运行?

net_ufo 发表于 2008-3-17 14:28:59

回复 1# 的帖子

直接使用变量?
可以重新组织SQL语句:
1字段是数字型
             sql="select 字段名 from 表名 where 字段名 =" & 变量
2字段是字符型
             sql="select 字段名 from 表名 where 字段名 =‘" & 变量&"'"

bb64844866 发表于 2008-3-17 14:42:52

感谢二楼的回复!

好象看明白了,我记得robot里如果是字符串连接变量都是加&,比如inputkeys "aaaaa"&变量名;
C#.net中好象是where 字段名="+变量名+";但是如果是子查询的话,是不是一样啊?
如sql="select * from.......where 字段名 in(select * from.......where 字段名2="&变量名&)",这样可以吗?
还有问题就是,我这个变量在前面脚本里取的是object类型的数据(变量名=rs("字段名")),这样的话编译就又有问题了......

net_ufo 发表于 2008-3-17 15:10:04

回复 3# 的帖子

子查询一样

第二个不知具体错误是什么

你可以试试   变量名=rs.fields("字段名")

bb64844866 发表于 2008-3-17 15:28:00

就是使用了rs后出现的问题

dim a as string
dim conn As Object
dim rs As Object
dim rs2 as object
dim strconn,sql,sql2 As String
Set conn = CreateObject("ADODB.Connection")
strconn="... ..."
... ...

Set rs = CreateObject("ADODB.Recordset")
sql = "select to_char(max(flowid)) as flowid from project_flowwhere fstate = '处理中'"   
rs.Open sql,conn

a=rs.fields("flowid")
set rs2=createobject("adodb.recordset")
sql2="select logonname from sys_user where userid in (select cl_lrqx from lcsj_lcdqxx where lcmc =' "&a&" ')"
现在的问题就是红色这条语句,提示Variable 'a' type conflict,是不是变量a类型不匹配啊?

[ 本帖最后由 bb64844866 于 2008-3-17 15:33 编辑 ]

net_ufo 发表于 2008-3-18 16:19:44

有可能,强制转换一下 ,用cstr(a)

a 和 & 之间加上空格

bb64844866 发表于 2008-3-24 17:04:25

问题已解决,非常感谢!

连接字符串可以用+,即"+变量名+",和C#一样...如果像您说的&还确实得加上空格,要不编译过不去...呵呵
还有那个cstr(表达式)函数也很好使,真是太感谢了!以后有问题再求助啦!:)

[ 本帖最后由 bb64844866 于 2008-3-24 17:05 编辑 ]
页: [1]
查看完整版本: 求助SQA Basic连接数据库语法变量问题!