我有一个SQL字符串,可以转换存储在服务器上的顺序日期,但是当我将字符串添加到VBA时,我得到了Run Time Error that the Column or global variable doesn't exist
。
当我在Microsoft Query中使用字符串时,它可以正常工作。请注意,我几乎不懂SQL。
这是我用来将YYYYDD转换为MMDDYYYY的SQL字符串
decimal(replace(char(date(timestamp_format(digits(CFMAST.CFDOB7),'YYYYDDD')),usa),'/',''),8,0)
这是我将其实施到VBA for Excel中的方式
strSQL="SELECT decimal(replace(char(date(timestamp_format(digits(CFMAST.CFDOB7),'YYYYDDD')),usa),'/',''),8,0) FROM CNCTTP08.JHADAT842.CFMAST "
strSQL = strSQL & " WHERE (CFMAST.CFDOB7<>0) AND (CFMAST.CFDOB7<>1800001)"
当我通过Microsoft Query运行查询时,得到了预期的结果,它格式化了CFMAST.CFDOB7 as MMDDYYYY
中的所有日期,但是当我在VBA
中运行字符串时,出现了以下错误:>
[IBM] [系统i Access ODBC驱动程序] [DB2 for i5 / OS] SQL0206-列或 找不到全局变量CFDOB7。
答案 0 :(得分:1)
问题可能是您为表function save()
{
var firstName= document.getElementById("txtFname").value;
var lastName=document.getElementById("txtLname").value;
var ageValue=parseInt(document.getElementById("age").value,10);
var table2=document.getElementById("dbtable");
var fNameValue= value.createTextNode(firstName);
var lNameValue= value.createTextNode(lastName);
var agetextnode=value.createTextNode(ageValue);
td1=document.createElement("td");
td2=document.createElement("td");
td3=document.createElement("td");
td1.appendChild(fNameValue);
td2.appendChild(lNameValue);
td3.appendChild(agetextnode);
tr1=document.createElement("tr");
tr1.appendChild(td1);
tr1.appendChild(td2);
tr1.appendChild(td3);
table2.appendChild(tr1);
}
使用了三部分名称。删除系统名称CNCTTP08.JHADAT842.CFMAST
,仅使用架构和表CNCTTP08
。您的ODBC连接将使您进入正确的系统。
另一个问题可能是,除非明确定义了DB2 for i,否则我真的不喜欢相关名称。因此,如果确实需要三部分名称,请在JHADAT842.CFMAST
子句中添加一个相关标识符,如下所示:
from
答案 1 :(得分:1)
尝试在FROM子句中使用别名,例如“ FROM CNCTTP08.JHADAT842.CFMAST T01”,并使用T01替换CFMAST”
strSQL="SELECT decimal(replace(char(date(timestamp_format(digits(T01.CFDOB7),'YYYYDDD')),usa),'/',''),8,0) FROM CNCTTP08.JHADAT842.CFMAST T01"
strSQL = strSQL & " WHERE (T01.CFDOB7<>0) AND (T01.CFDOB7<>1800001)"
让我知道你会得到什么。