如何将序数日期更改为MMDDYYYY

时间:2019-01-24 19:53:40

标签: sql excel vba ibm-midrange

我有一个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。

2 个答案:

答案 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)"

让我知道你会得到什么。