51Testing软件测试论坛

标题: 鳖的太久的问题,望大家帮我解决下子 [打印本页]

作者: 断寒    时间: 2006-8-1 09:02
标题: 鳖的太久的问题,望大家帮我解决下子
char msgid[80];
int i;
char WORKITEMID1[10];
lr_load_dll("d:\\getdata_382.dll");
i=init_db("DRIVER={Oracle in OraHome92};SERVER=TMS119;UID=USR_SYNCHRO;PWD=SYNCHRO;DBQ=TMS119;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;");
lr_output_message("i=%d",i);
i+=execSQL("select max(workitem_id) from t_workitem where participant={ID}");
lr_output_message("i=%d",i);
i+=bindCol(1,msgid,"i",7);
lr_output_message("i=%d",i);
i=fetchData()+1;
lr_output_message("i=%d",i);
lr_output_message("i=%s",msgid);
disConnect();


代码中红色部分,因为需要关联SQL中的where条件,{ID}类型是file.选的是id.txt

问题,可以这样做关联吗,但是用lr_output_message查看,ID并没有传递数据进去.不知道这个字段怎么做关联.DLL选用的是斑竹的DLL.


kernzhang:
你需要将他转化成LPSTR类型!及你要首先通过lr_eval_string()函数将值转化出来!

wo:
i+=execSQL("select workitem_id from t_workitem where process_ins_id=%d",lr_eval_string("{LCID}"));
这样写在lr_output_message看语句是对的,但是实际中没有执行.

kernzhang:
呵呵!你别偷懒了!你先把要执行的SQL保存到一个变量中去!但是这个这里不能有LR提供的内部变量

wo:
可以给我个例子参考一下吗,我这个问题困扰的时间太久了,心里憋的慌 .
作者: 断寒    时间: 2006-8-1 13:11
char msgid[80];
     int m;
     int i;
     int p;
     char str[1024];
     char pid[64];
     char WORKITEMID1[80];

     lr_load_dll("d:\\getdata_382.dll");
     i=init_db("DRIVER={Oracle in OraHome92};SERVER=192.168.103.119:1521;UID=USR_SYNCHRO;PWD=SYNCHRO;DBQ=TMS;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;");
     lr_output_message("i=%d",i);
     m= atoi(lr_eval_string("{LCID}"));
     p = itoa(m,pid,10);
     strcpy(str,"select workitem_id from t_workitem where process_ins_id=");
     strcat(str,p);
     lr_output_message("str=%s",str);
     i+=execSQL(str);
   //i+=execSQL("select workitem_id from t_workitem where process_ins_id=3768");
     lr_output_message("i=%d",i);
     i+=bindCol(1,msgid,"i",7);
     lr_output_message("i=%d",i);
     i=fetchData();
     lr_output_message("i=%d",i);
     lr_output_message("i=%s",msgid);
     disConnect();

     i=atoi(msgid);
     lr_output_message("i=%d",i);
     itoa(i,WORKITEMID1,10);
     lr_output_message("WORKITEMID1=%s",WORKITEMID1);

     lr_save_string(WORKITEMID1,"WORKITEMID1");

我是看了kernzhang发的那个预定机票的DEMO后,突然一下明白"要执行的SQL保存到一个变量中去"这句话的意思了.,这样写,我的脚本很顺利通过,可能中间有段代码有点冗余,不过总算算是能把软件的工作流自动跑下去了.哈哈,谢谢!!!




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