51Testing软件测试论坛

标题: 为什么可以录制,但是回放报编译器错误?我用odbc协议的 [打印本页]

作者: herah    时间: 2008-12-16 16:52
标题: 为什么可以录制,但是回放报编译器错误?我用odbc协议的
错误提示如下
vdf.h (633): undeclared identifier `ERROR'
vdf.h (633): initializer must be constant
vdf.h (633): too many initializers
vdf.h (633): syntax error; found `:' expecting `}'
vdf.h (633): skipping `:' `NOT' `A' `VALID' `DATA' `TYPE'
vdf.h (644): initializer must be constant
vdf.h (644): too many initializers
vdf.h (644): syntax error; found `:' expecting `}'
vdf.h (644): skipping `:' `NOT' `A' `VALID' `DATA' `TYPE'
vdf.h (671): initializer must be constant
vdf.h (671): too many initializers
vdf.h (671): syntax error; found `:' expecting `}'
vdf.h (671): skipping `:' `NOT' `A' `VALID' `DATA' `TYPE'
c:\\program files\\mercury interactive\\mercury loadrunner\\scripts\\s3b policy enquiry\\\\combined_s3b Policy Enquiry.c (5): 13 errors, not writing pre_cci.ci
作者: archonwang    时间: 2008-12-17 09:38
请说明下odbc录制的数据库类型和版本。
作者: herah    时间: 2008-12-18 23:09
录制的数据库类型是:sybase

而且用odbc录制的脚本只能在录制的机器上运行吗?因为之前有个脚本可以在录制的机器上运行,整个复制过来,在运行也会报编译器失败
作者: whyleave    时间: 2008-12-18 23:25
是因为脚本的存放路径变了
作者: archonwang    时间: 2008-12-19 09:43
如果是直接从其他机器上复制过来的脚本,必须修正位置
作者: herah    时间: 2008-12-19 12:26
需要修正位置?因为后来我又尝试了另一个,也是整个复制的,就OK了阿,可以编译执行了,所以不知道修正位置是什么意思?
作者: archonwang    时间: 2008-12-19 16:15
odbc连接时,需要指定连接的位置、用户名和密码等信息,需要匹配方可执行通过,若在代码中使用了硬编码,则需要修改。
作者: archonwang    时间: 2008-12-19 16:16
另外,如果lr的配置文件出现错漏,可能也会出现错误。
作者: herah    时间: 2008-12-19 16:46
恩,谢谢,就是将lrd_open_connection这个函数里的参数进行相应修改,这个我明白。但是我觉得参数错误的话,那它也会是在编译之后,在run的时候才会报错,而现在是直接报告编译器出错,因为“loadrunner在回放时会调用 c 预处理器 cpp.exe,以便在开发文件中“填写”所有宏定义、预编译器指令等。然后将创建文件 pre_cci.c,它也是 C 文件(pre_cci.c 是在 options.txt 文件中定义的)。将创建文件 logfile.log (也是在 options.txt 中定义的),其中包含此进程的所有输出。如果预处理阶段没有问题,则此文件应为空。如果此文件不为空,则几乎可以肯定由于致命错误,下一阶段的编译将失败”
作者: wqljourny    时间: 2011-8-5 15:32
为何修改了lrd_open_connection的参数还是报错、:
Action()
{

        lrd_init(&InitInfo, DBTypeVersion);
        lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);
        lrd_open_context(&Ctx2, LRD_DBTYPE_ODBC, 0, 0, 0);
        lrd_db_option(0, OT_ODBC_CP_OFF, 0, 0);
        lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx2, 0 /*Unused*/, 0);
        lrd_db_option(Con1, OT_ODBC_LOGIN_TIMEOUT, (void FAR const *)15, 0);

   


  

  

    lrd_open_connection(&Con1, LRD_DBTYPE_ODBC, "", "", "","DRIVER=SQL SERVER;SERVER=;UID=WD=;DATABASE=", Ctx1, 1, 0);
        lrd_free_connection(&Con1, 0 /*Unused*/, 0);
        return 0;
}

Action.c(5): lrd.c/fjInitDB: Using the "30" entry in section [ODBC_WINNT] in the "lrd.ini" file ("C:\Program Files\Mercury\LoadRunner\bin\lrdb32.dll")
Action.c(18): lrd_open_connection: 错误,返回代码=LRDE2041
作者: 流星的愿望10    时间: 2013-5-6 16:30
请教下LR中,为什么我在选择ODBC协议时给出提示版本之类,回放会有问题。当时没注意直接点是。当我在场景播放时会报错:Action.c(18): lrdb_db_option:  "SQLSetStmtOption", return-code=-1, native-error-code=106, SQLState=S1C00, SQLError=[Microsoft][ODBC Microsoft Access 驱动程序]可选的功能未实现。第一次发帖子,选择的是51测试论坛,希望哪位高手能帮忙解决下,急




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