QTP从MySQL数据库检索值时遇到问题

QTP从MySQL数据库检索值时遇到问题,mysql,vbscript,qtp,Mysql,Vbscript,Qtp,我正在处理一个QTP测试用例的数据库检查点。首先,脚本查询表时间表的第一行,并检索列部门代码的值。然后查询表department,根据departmentCode的值检索列name的值。然后将name的值与QTP的本地数据表中的值进行比较 strcurrentenev=“localhost” dbName=“timex” strConnection=“DRIVER={MySQL ODBC 5.3 ANSI DRIVER};Server=“&strcurrentv&”DATABASE=“&dbNa

我正在处理一个QTP测试用例的数据库检查点。首先,脚本查询表
时间表的第一行
,并检索列
部门代码
的值。然后查询表
department
,根据
departmentCode
的值检索列
name
的值。然后将
name
的值与QTP的本地数据表中的值进行比较

strcurrentenev=“localhost”
dbName=“timex”
strConnection=“DRIVER={MySQL ODBC 5.3 ANSI DRIVER};Server=“&strcurrentv&”DATABASE=“&dbName&”uid=root;pwd=”
Set conn=CreateObject(“ADODB.Connection”)
连接开放式结构连接
querydpcode=“从时间表中选择timesheetId=1的部门代码”
设置exDepCode=conn.Execute(queryDepCode)
depCode=exDepCode.GetString
打印部门代码
querydpname=“从departmentCode=”所在的部门中选择名称(&depCode)”
设置exDepName=conn.Execute(queryDepName)
depName=exDepName.GetString
打印部门名称
打印数据表(“部门”,dtLocalsheet)
如果depName=DataTable(“department”,dtLocalsheet),则
打印“等于”
其他的
打印“不相等”
如果结束
depCode
的值是'CS',
depName
是'Customer Support',
DataTable(“department”,dtLocalsheet)
也是'Customer Support'

目前我对这个测试用例有两个问题

  • 运行此脚本时,QTP返回一个错误

    [MySQL][ODBC 5.3(a)驱动程序][mysqld-5.1.41]where子句中的未知列“CS”

    第(30)行:“设置exDepName=conn.Execute(querydpname)”

    我不知道这是什么意思。未知列“CS”?
    depCode
    的输出是
    CS
    department
    表的第二行有一个
    departmentCode
    的“CS”和一个
    name
    的“客户支持”

  • 我改变了陈述

    querydpname=“从departmentCode=”所在的部门中选择名称(&depCode)”
    

    querydpname=“从部门代码='CS'所在的部门中选择名称”
    
    这次QTP没有返回错误,但输出为

    CS Customer Support Customer Support not equal 反恐精英 客户支持 客户支持 不相上下
  • 我不明白,在产出完全相同的情况下,它们怎么可能不相等呢


    您的帮助将不胜感激。

    为什么不在
    时间表和
    部门中针对
    部门代码执行SQL
    加入
    ?会节省很多不必要的来回。我承认我对MySQL不太了解,但是对于初始错误
    未知列“CS”
    这正是它所说的,因为你通过
    。。。departmentCode=“&depCode
    作为
    …departmentCode=CS
    MySQL正确地假设
    CS
    是一个列,因为需要使用引号(
    )定义字符串,但由于
    CS
    不是一列,而是一个字符串值
    'CS'
    if将永远找不到该列,因此会出现错误。至于它们不相等的原因,您没有包含函数
    DataTable(“department”,dtLocalsheet)
    的定义,因此我无法真正提供帮助。
    DataTable()
    不是VBScript中的内置函数,因此假设您有定义,是否可以将其包括在内?是否尝试过
    如果Trim(depName)=Trim(DataTable(“department”,dtLocalsheet))那么
    是否要对尾随空格进行折扣?@Lankymart感谢您的回答。因此,我试图在depCode中添加单引号,但似乎depCode中有一行我无法删除的新行。使用此“depCode=Replace(chr(39)&exDepCode.GetString&chr(39),vbCrLf,””),depCode的输出为“CS(此处新行)”“。也尝试了
    Trim
    ,结果相同。很抱歉,我不明白
    Replace()
    代码是为了什么,这就是为什么我问
    DataTable()
    函数做什么的原因。如果你做了这个Replace,它解释了为什么显示
    不相等的
    ,所以不应该感到意外。