편집 : 질문 맨 아래의 답변 됨/해결 방법.JavaScript Access Database SQL 조건 식의 데이터 형식이 일치하지 않습니다.
나는이 같은 오류에 관해서 다른 모든 질문을 이미 보았지만 이것은 매우 독특한 시나리오이다.
나는 다음과 같은 문제가 오전 자바 스크립트를 사용하여 자체 내장 된 웹 사이트에서 Access 데이터베이스 관리 꽤 많이입니다 :
"INSERT INTO PendingChanges([Eval Date]) VALUES ('04/19/2018')"
IE9에서 :
var evDate = new Date(hDate);
evDate.setFullYear(evDate.getFullYear() + 1);
evDate = evDate.toLocaleDateString().toString();
var SQL = "INSERT INTO PendingChanges([Eval Date]) VALUES ('" + evDate + "')";
이 다음과 같은 문자열을 제공합니다 이것은 잘 작동하지만 IE11에서는 오류 "조건 식의 데이터 형식 불일치"가 표시됩니다.
나는 그것에 년을 추가하지 않고 날짜 선택과 입력에서 오는 대신 hDate 값을 사용한다면 :
이var SQL = "INSERT INTO PendingChanges([Eval Date]) VALUES ('" + hDate + "')";
나는 다음과 같은 문자열로 끝날 것입니다 :
"INSERT INTO PendingChanges([Eval Date]) VALUES ('04/19/2017')"
IE9 및 IE11에서 정상적으로 작동합니다. 일시적인 해결책은 hDate 입력에서도 "onchange"를 추가하는 것입니다.이 트리거는 값을 가져 와서 연도가 추가 된 날짜로 변환하고,이 새 값을 다른 입력에 전달하고,이 새 입력을 전달합니다 주요 기능. 나는 그것을 피하려고 노력하고있다.
왜 IE11이 evDate의 문자열 값을 "보고"있지 않는지 아이디어가 있습니까? (저를 믿으십시오, hDate와 동일하게 본다, 단지 다름은 2017/2018 년이다).
편집 : 이것은 데이터베이스에 대한 쿼리를 만들기 위해 SQL 변수를 사용하는 방법입니다.
var pad = "Access Database File Path";
var cn = new ActiveXObject("ADODB.Connection");
var strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pad;
cn.Open(strConn);
var rs = new ActiveXObject("ADODB.Recordset");
rs.Open(SQL, cn);
//if i close the rs after the rs.Open, the function returns an error that the change can not be completed on a closed connection, so i just close the connection.
cn.Close();
편집 2 : 대답
나는 더 쉬운 해결 방법을 발견했다. 대신 상자에 hDate와 날짜 코드의 3 개 라인을 사용하는, 내가 moment.js에게
var evDate = moment(hDate).add(1, 'year').format('MM/DD/YYYY');
이 내가 일하던 같은 값을 반환을 사용, 일년에 추가하고 짧은 날짜 문자열로 변경 전에는 그렇지만 IE9와 IE11 모두에서 제대로 작동 할 수 있습니다.
내 질문과 나를 도우려는 사람들을 보았던 모든 사람에게 감사드립니다.
어떻게'SQL' 변수를 사용하고 있습니까? – Barmar
질문에 코드를 넣지 말고 질문을 수정하여 명확하게하십시오. – Barmar
나는 코드로 질문을 편집했다. 감사. –