51Testing软件测试论坛

标题: 求助SQA Basic连接数据库语法变量问题! [打印本页]

作者: bb64844866    时间: 2008-3-17 14:11
标题: 求助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
标题: 回复 1# 的帖子
直接使用变量?
可以重新组织SQL语句:
1  字段是数字型
             sql="select 字段名 from 表名 where 字段名 =" & 变量
2  字段是字符型
             sql="select 字段名 from 表名 where 字段名 =‘" & 变量  &  "'"
作者: bb64844866    时间: 2008-3-17 14:42
标题: 感谢二楼的回复!
好象看明白了,我记得robot里如果是字符串连接变量都是加&,比如inputkeys "aaaaa"&变量名;
C#.net中好象是where 字段名="+变量名+";但是如果是子查询的话,是不是一样啊?
如sql="select * from.......where 字段名 in(select * from.......where 字段名2="&变量名&)",这样可以吗?
还有问题就是,我这个变量在前面脚本里取的是object类型的数据(变量名=rs("字段名")),这样的话编译就又有问题了......
作者: net_ufo    时间: 2008-3-17 15:10
标题: 回复 3# 的帖子
子查询一样

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

你可以试试     变量名=rs.fields("字段名")
作者: bb64844866    时间: 2008-3-17 15:28
标题: 就是使用了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_flow  where 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
有可能,强制转换一下 ,用cstr(a)

a 和 & 之间加上空格
作者: bb64844866    时间: 2008-3-24 17:04
标题: 问题已解决,非常感谢!
连接字符串可以用+,即"+变量名+",和C#一样...如果像您说的&还确实得加上空格,要不编译过不去...呵呵
还有那个cstr(表达式)函数也很好使,真是太感谢了!以后有问题再求助啦!

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




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2