0

几年来,我一直使用下拉列表来确定 SQL 查询的要求,并且直到现在才需要使用带有“相关选择”的下拉列表。我找到了一个关于如何做到这一点的示例,我可以创建相关的选择(使用静态数据),效果很好,请参阅下面使用我与车辆和品牌相关的数据。

在此处输入图像描述

但是,当我将它应用到我的环境并使用动态 SQL 查询数据时,我无法让它工作。我相信所有代码段都可以一起工作(因为它非常适合静态数据),但是如果我尝试自动构建数据然后创建字符串以传递给 queryNew函数,它会失败。

这是带有STATIC查询字符串/数据数组的工作Content.cfc 文件

<cfcomponent>

    <cfset tblMake = queryNew("name,id", "varchar,varchar", [{name:'RENAULT',id:'RENAULT'},{name:'RENAULT',id:'RENAULT'},{name:'RENAULT',id:'RENAULT'}])>
    <cfset tblModel = queryNew("name,code,continent_id", "varchar,varchar,varchar", [{name:"TSERIES",code:"TSERIES",continent_id:"RENAULT"},{name:"MASTER",code:"MASTER",continent_id:"RENAULT"}])>
    <cfset tblVoltage = queryNew("name,code", "varchar,varchar", [{name:"24 volt",code:"MASTER"},{name:"12 volt",code:"TSERIES"}])>

   <cffunction name="getContent" access="remote" returntype="query" output="true">
      <cfargument name="strTableName" type="string" required="true">
      <cfargument name="strID" type="string" required="true">
      <cfargument name="strName" type="string" required="true">
      <cfargument name="intDistinct" type="numeric" required="false" default="0">
      <cfargument name="selectedCol" type="string" required="false" default="0">
      <cfargument name="selectedID" type="string" required="false" default="0">
      <cfquery name="qryContent" dbtype="query">
         select
         <cfif arguments.intDistinct eq 1>distinct</cfif>
         #arguments.strID# as theID,
         #arguments.strName# as theValue
         from #arguments.strTableName#
         <cfif arguments.selectedID neq 0>
            where #arguments.selectedCol# = '#arguments.selectedID#'
         </cfif>
         order by #arguments.strName#
      </cfquery>
      <cfreturn qryContent />
   </cffunction>
</cfcomponent>

当我尝试使用此方法创建查询时,似乎没有任何效果。我正在遍历数据库(来自查询),然后使用所需的结构创建一个字符串并将其传递给函数。

<cfcomponent>

    <cfset XSTATIC = ""/>
    <cfquery name="NOXVehicleModels" datasource="EBSNOX" >
        SELECT DISTINCT VehicleMake  
        FROM [dbo].[NOX-Master]
        WHERE VehicleMake IS NOT NULL
    </cfquery>
    <cfloop query="NOXVehicleModels">
      <cfset XSTATIC = XSTATIC & "{name:'" & #Trim(NOXVehicleModels.VehicleMake)# & "',id:'"& #Trim(NOXVehicleModels.VehicleMake)# & "'},"/>
    </cfloop>
    <cfset XLEN=LEN(#XSTATIC#)/>
    <cfset XSTATIC = MID(XSTATIC,1,XLEN-1)/>
    <cfoutput>#XSTATIC#</cfoutput> 

    <cfset tblMake = queryNew("name,id", "varchar,varchar", [#XSTATIC#])>

我创建了一个单独的cfoutput来测试字符串的结构等,它似乎是正确的,但它只是没有传递给 querynew 函数。这是输出的样子:-

{name:'CUMMINS',id:'CUMMINS'},{name:'DAF',id:'DAF'},{name:'IVECO',id:'IVECO'},{name:'MAN',id :'MAN'},{name:'MERCEDES',id:'MERCEDES'},{name:'RENAULT',id:'RENAULT'},{name:'SCANIA',id:'SCANIA'},{name :'VOLVO',id:'VOLVO'} {name:'RENAULT',id:'RENAULT'},{name:'RENAULT',id:'RENAULT'},{name:'RENAULT',id:'RENAULT '}

到目前为止我所做的:-

  1. 我已经检查过引号并不重要,即单/双。
  2. 我试图在标签之外构建查询。

同样,一切似乎(?)都井井有条,我无法理解这可能是问题所在。可能结构在解析为函数之前丢失了一些东西?

任何帮助将不胜感激。

谢谢,杰克

在此处输入图像描述

新的下拉 v2

4

0 回答 0