編集:質問の末尾にある回答/回避策。JavaScript AccessデータベースSQL条件式のデータ型の不一致
私はすでにこの同じエラーに関する他のすべての質問を見てきましたが、これは非常に肯定的です。これは独自のシナリオです。
私は次の問題が生じています、JavaScriptを使用して自己構築されたWebサイトからAccessデータベースを管理し、かなり午前:IE9で
"INSERT INTO PendingChanges([Eval Date]) VALUES ('04/19/2018')"
:
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"を追加してください。このトリガーで値を取得し、それを1年の日付に変換し、この新しい値を別の入力に渡して、この新しい入力を渡します主な機能に。私はそれを避けようとしています。
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
私はこのコードで質問を編集しました。ありがとう。 –