为何在PB运行中没有执行成功!!在查询分析器中能成功执行

cairg 2004-12-06 03:24:24
string str_sql
str_sql="INSERT INTO " + ls_sqltablename + " (项目名称 ,项目地点 ,建设单位 ,开工时间 ,竣工时间) " &
+"VALUES ('" + ls_xmmc + "','" + ls_xmdd + "','" + ls_jsdd + "',convert(datetime,('" + ls_kgss + "')),convert(datetime,('" + ls_jgss + "'))) USING sql_sql"
EXECUTE IMMEDIATE :str_sql USING sql_sql;

例:
INSERT INTO use_date (项目名称 ,项目地点 ,建设单位 ,开工时间 ,竣工时间) VALUES ('9','9','9',convert(datetime,('2004-01-01 00:00:00')),convert(datetime,('2004-01-01 00:00:00'))) USING sql_sql
注: PB调试下COPY出来的。在查询分析器中能成功执行。。
环境:PB8+SQL2000...因为表经常变所以用动态SQL进行处理?
为何在PB运行中没有执行成功!!
...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cairg 2004-12-06
  • 打赏
  • 举报
回复
结了
青锋-SS 2004-12-06
  • 打赏
  • 举报
回复
不客气.解决了就好.
cairg 2004-12-06
  • 打赏
  • 举报
回复
谢谢: sdhylj(青锋--SS) ,行了,,今天写糊涂了。。。
青锋-SS 2004-12-06
  • 打赏
  • 举报
回复
可你这一句:
str_sql="INSERT INTO " + ls_sqltablename + " (项目名称 ,项目地点 ,建设单位 ,开工时间 ,竣工时间) " &
+"VALUES ('" + ls_xmmc + "','" + ls_xmdd + "','" + ls_jsdd + "',convert(datetime,('" + ls_kgss + "')),convert(datetime,('" + ls_jgss + "'))) USING sql_sql" //此处的USING sql_sql应去掉.
EXECUTE IMMEDIATE :str_sql USING sql_sql;
是动态的SQL语句,str_sql里面包含了USING sql_sql,下面执行的时候就不对了呀.
cairg 2004-12-06
  • 打赏
  • 举报
回复
我知道啊。。。这个我当然知道啊。。。在查询分析器中我当然拿掉的啊。。。我的系统连接两个数据库的。。access与sql2000,这里是对sql2000做插入操作。。
青锋-SS 2004-12-06
  • 打赏
  • 举报
回复
你在PB里面直接用可以,但一旦拼成字符串,里面就不应该有using sql_sql了,SQL Server是不认识它的.
cairg 2004-12-06
  • 打赏
  • 举报
回复
INSERT INTO use_date(项目名称,项目地点,建设单位,开工时间,竣工时间)
VALUES (:ls_xmmc,:ls_xmdd,:ls_jsdd,:da_kgss,:da_jgss) USING sql_sql;
我写成这样能成功能的,,,但写在动态SQL形式就没有数据插入了。。我想应该出在动态SQL那里,我一定要写成动态SQL形式,因为我的表use_date经常变化的。
青锋-SS 2004-12-06
  • 打赏
  • 举报
回复
这一句有问题:
str_sql="INSERT INTO " + ls_sqltablename + " (项目名称 ,项目地点 ,建设单位 ,开工时间 ,竣工时间) " &
+"VALUES ('" + ls_xmmc + "','" + ls_xmdd + "','" + ls_jsdd + "',convert(datetime,('" + ls_kgss + "')),convert(datetime,('" + ls_jgss + "'))) USING sql_sql"
字符串里面不应该有:USING sql_sql
cairg 2004-12-06
  • 打赏
  • 举报
回复
//连接SQL2000数据库
Transaction sql_sql
sql_sql=create transaction
sql_sql.DBMS = profilestring(s_instpath+config_file_name,'sqldatabase','dbms','')
sql_sql.LogId = profilestring(s_instpath+config_file_name,'sqldatabase','logid','')
sql_sql.database = profilestring(s_instpath+config_file_name,'sqldatabase','databasename','')
sql_sql.ServerName = profilestring(s_instpath+config_file_name,'sqldatabase','servername','')
sql_sql.logpass = profilestring(s_instpath+config_file_name,'sqldatabase','pwd','')
sql_sql.autocommit = True
ls_sqltablename = profilestring(s_instpath+config_file_name,'sqldatabase','tablename','')
connect using sql_sql;
if sql_sql.sqldbcode <> 0 then
messagebox("警告","SQL2000数据库连接错误信息:" + sql_sql.sqlerrtext + "~r~n数据库连接失败!!",stopsign!)
return
end if
cairg 2004-12-06
  • 打赏
  • 举报
回复
sql_sql.autocommit = True
不对啊。。我数据库连接时参数就是true的。。
zhengshouquan 2004-12-06
  • 打赏
  • 举报
回复
sqlma.autocommit = true

string str_sql
str_sql="INSERT INTO " + ls_sqltablename + " (项目名称 ,项目地点 ,建设单位 ,开工时间 ,竣工时间) " &
+"VALUES ('" + ls_xmmc + "','" + ls_xmdd + "','" + ls_jsdd + "',convert(datetime,('" + ls_kgss + "')),convert(datetime,('" + ls_jgss + "'))) USING sql_sql"
EXECUTE IMMEDIATE :str_sql USING sql_sql;

sqlma.autocommit = false

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧