天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 2193|回复: 10

关于SQL视图的问题

[复制链接]
hbbs2012 发表于 2012-3-23 09:10:37 | 显示全部楼层 |阅读模式
本帖最后由 irene 于 2012-3-26 11:55 编辑

1.建立了一个映射表单
2.建立了一个查询表单
3.建立了一个SQL视图,在“过滤”中录入如下代码,报错:

var sql = " ";
if getItemValue("备件编码")!=null &&  getItemValue("备件编码").trim().length()>0){
   sql = " and ITEM_备件编码=" ' +getItemValue("备件编码")+' ";
}

if getItemValue("备件名称")!=null &&  getItemValue("备件名称").trim().length()>0){
   sql = " and ITEM_备件名称=" ' +getItemValue("备件名称")+' ";
}

if getItemValue("备件单位")!=null &&  getItemValue("备件单位").trim().length()>0){
   sql = " and ITEM_备件单位=" ' +getItemValue("备件单位")+' ";
}

if getItemValue("备件标志")!=null &&  getItemValue("备件标志").trim().length()>0){
   sql = " and ITEM_备件标志=" ' +getItemValue("备件标志")+' ";
}


"SELECT dma00000 as  ITEM_备件编码,MCHENG00 as  ITEM_备件名称,DWEI0000 as  ITEM_备件单位,BZHI0000 as ITEM_备件标志
  FROM tlk_bjbm3 where   "+sql+"   order by dma00000";

错误提示:*JavaScriptRunning:[VIEW(11e1-732a-a3209ee3-97af-8b107770ddda).备件编码维护查询.SqlFilterScript]: missing ( before condition (VIEW(11e1-732a-a3209ee3-97af-8b107770ddda).备件编码维护查询.SqlFilterScript#2)   

想知道问题到底是在哪里?

PS:1.我的数据库是ORACLE
      2.基表是已经存在的,事先建好的,里面有数据的。
irene 发表于 2012-3-23 09:45:35 | 显示全部楼层
您好,您的错误提示的意思是您的查询语句漏了一个“)”,您在您的数据库客户端用您的sql语句试试能不能查询出记录,看看是不是sql语句不正确的原因,您先试试,我们再沟通
 楼主| hbbs2012 发表于 2012-3-23 10:14:02 | 显示全部楼层
本帖最后由 hbbs2012 于 2012-3-23 10:15 编辑

呃,我又试了下,把SQL语句改成如下:
"SELECT dma00000 as  ITEM_备件编码,MCHENG00 as  ITEM_备件名称,DWEI0000 as  ITEM_备件单位,BZHI0000 as ITEM_备件标志
  FROM tlk_bjbm3  order by dma00000";
还是报错:
*JavaScriptRunning:[VIEW(11e1-732a-a3209ee3-97af-8b107770ddda).备件编码维护查询.SqlFilterScript]: unterminated string literal (VIEW(11e1-732a-a3209ee3-97af-8b107770ddda).备件编码维护查询.SqlFilterScript#1)  


PS:SQL语句在我的数据库中可以正常查询出数据。
linner 发表于 2012-3-23 11:21:55 | 显示全部楼层
回复 3# hbbs2012


    楼主,你的if后面是不是都少了个"("
 楼主| hbbs2012 发表于 2012-3-23 11:23:12 | 显示全部楼层
谢谢楼上的哈,我现在不只是少括号的问题,单独的一句SQL语句也执行出错。
purple 发表于 2012-3-23 11:27:44 | 显示全部楼层
您好,错误信息是未结束的字符串常量。 请检查您的字符串里面是不是有转义字符,或者少了引号之类的,谢谢。
linner 发表于 2012-3-23 11:31:45 | 显示全部楼层
你的if语句里面是这样写的:
sql = " and ITEM_备件编码=" ' +getItemValue("备件编码")+' ";
不对吧,应该改成:
sql = " and ITEM_备件编码='" +getItemValue("备件编码")+"' ";
linner 发表于 2012-3-23 11:33:52 | 显示全部楼层
而且sql的初始值应该是:
var sql = "1=1";这样当你的查询条件为空的时候sql语句才不会错啊
 楼主| hbbs2012 发表于 2012-3-23 11:39:47 | 显示全部楼层
谢谢哈,我再试试!

完全零基础,所以经常会出一些很弱的问题,谢谢楼上的两位了!
 楼主| hbbs2012 发表于 2012-3-23 11:46:53 | 显示全部楼层
本帖最后由 hbbs2012 于 2012-3-23 11:48 编辑

终于不再报以上的错了!谢谢linner还有purple。
不过现在又出现新问题了。
*ORA-00904: "ORDTB"."ID": invalid identifier   

我觉得这应该是和我的表建的有关系。
1.我的表是一个现成的表,没有主键。
2.为了作映射表单,我加了一个字段,名为ID,并将这个字段做为主键,字段里的值我就从1-200这样不重复的赋值。
3.在作视图时,没有考虑到这个ID字段,只考虑到了上述贴子中提到的四个字段。

这样是不是不行?

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 23:06

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表