- 題名: 式が未定義関数
- 日時: 2008/07/15 21:38:50
- ID: 22438
- この記事の返信元: - (なし)
 
- この記事への返信: - [22439] Re[1]: 式が未定義関数2008/07/15 22:42:12
 
- ツリーを表示
■No22438に返信(SOPPOさんの記事)
> "M = to_date('" & Now & "','yyyy/mm/dd hh24:mi:ss')," & _
作成しようとした
  M = to_date('2008/07/15 12:34:56', 'yyyy/mm/dd hh24:mi:ss'),
の SQL は、Oracle 用の構文ですよね。JET SQL においては、
  M = #7/15/2008 12:34:56#,
という日付リテラルで表記してください。
で、to_date 以前に、暗黙の型変換を利用してはいけません。
日付型(Now)を、文字列にそのまま & 連結するのではなく、
Now.ToStringやString.Format で、書式付きの変換を行いましょう。
具体的には、Imports System.Globalization.CultureInfo を追加した上で、
  "M = #" & Now.ToString("MM/dd/yyyy HH:mm:ss", InvariantCulture) & "#," & _
のようにします。
>  "AND C = '" & Me.C.Text & "' " & _
このような記述もまた、問題があります。
もし、Me.C.Text の内容に「'」の文字が含まれていた場合、
SQL の構文エラーになりますので、' を '' に置換する必要があります。
ただし、こういった処理では、SQL 文字列を生成しようとするのではなく、
可能な限り、パラメータ クエリを用いるようにするべきかと思いますよ。
SQL インジェクション対策のためにも。
分類:[.NET]
いつもお世話になっております。
早速ですが、現在Accessで作成したTBLの中身のデータを更新しようとし、
下記のSQL文を作成したのですが、”式に未定義関数'to_date'があります”というエラーメッセージが出てきます。
to_dateが使用できないというのはわかったのですが、この関数を使わずに他に方法があるのでしたら伝授して頂けないでしょうか?
sqldata = "UPDATE TBL_AA SET J = '" & Me.J.Text & "'," & _
"K = '" & Microsoft.VisualBasic.Left(Me.K.Text, 1) & "'," & _
"L = '" & Me.L.Text & "'," & _
"M = to_date('" & Now & "','yyyy/mm/dd hh24:mi:ss')," & _
"N = '" & strEmployeeID & "'," & _
"O = '" & Me.O.Text & "' " & _
"WHERE A = '" & Me.A.Text & "' " & _
"AND B = '" & Microsoft.VisualBasic.Left(Me.B.Text, 2) & "' " & _
"AND C = '" & Me.C.Text & "' " & _
"AND D = '" & Me.D.Text & "' " & _
"AND E = '" & E.Text & "' " & _
"AND F = '" & Me.F.Text & "' " & _
"AND G = '" & Me.G.Text & "' " & _
"AND H = '" & Me.H.Text & "' " & _
"AND I = '" & Me.I.Text & "'"
宜しくお願い致します。