- ベストアンサー
フィールド名の指定でエラー
Windows2000+IIS5.0+Access(ASP)---使用環境 ASPの勉強を始めた初心者です。 ASPのプログラムで、Accessデータベースのフィールド名(テーブル)を半角英数字で指定した場合、正常に表示するのですがフィールド名を日本語指定--例(商品名)した場合、以下のようなエラーが発生します。 Microsoft VBscriptコンパイルエラー(0X800A0408) ”文字が正しくありません” いろいろ試しましたがお手上げです・・・ 何かプログラム上で宣言or設定が必要なのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
話としては、単純なようですね そもそも、スクリプト内の変数として、2バイト文字は使用できないのが言語仕様であったはずです。 テーブルのカラム名に日本語を使用するのは、MDBの場合特に問題ありませんが、このコードでは変数名として「日時」というキーワードを使っています。 これでは、動かないでしょう。 これが、ASPでなくAccessのVBAだったら動いたのかも知れませんが・・・。 いずれにしても、対処としてはスクリプト内の変数名については、半角英数で名前をつけるしかありませんね。 テーブルのフィールド名とまったく同じ名前にしなければならない理由は、システム的には無いはずです。 もしも、どれがDBのフィールド名でどれがプログラムの変数なのかが判断できないのであれば、まずはそれが読み取れる程度には勉強する必要がありますね。
その他の回答 (1)
- you-m
- ベストアンサー率58% (190/327)
回答するには、情報が欠如しすぎです。 ・スクリプトエンジンのバージョン ・AccessDBのバージョン ・現在、インストールしているMDACのバージョン ・DB接続には、何を使っているか ・具体的にどのようなコードを書いているか しかし、原則的にフィールド名は”[]”でくくることで、明示的に指定することができるので、多分それだけでうまくいくかなとは思いますが。
お礼
回答ありがとうございます。 まったくのド素人で、質問にどのような情報が必要かも分かっていませんでした。とりあえずコードを載せます。
補足
.Access2002 .VBScript version5.6 .MDAC2.7 ある本に載っていたサンプルを個人的にカスタマイズして使用予定です。以下コードの「日時」を「hiduke」に変更すると正常に表示します。 ----コード--- <% Dim ObjConn,ObjRS,StrSQL '=========================================== ' パラメータの取得 '=========================================== 日時 = Request.Form("日時") if 日時 = "" then 日時 = date end if '================================================= ' 処理開始 '================================================= %> <% Call ConnDB %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"> <title></title> </head> <body> <% Call Gamen_iti %> </body> </html> <% Call CloseDB %> <% '================================================= '----- 一覧表示画面 '================================================= Sub Gamen_iti( ) %> <form method="POST" action="timecard.asp"> <table border="1"> <tr> <td><% Call SetMonth %></td> <td><input type="Submit" name="sub" value="表示"></td> </tr> </table> </form> <% End Sub %> <% '=========================================== '----- 年月のセット '=========================================== Sub SetMonth() StrSQL = "select year(日時) as yy,month(日時) as mm from *** " StrSQL = StrSQL & " group by year(日時),month(日時)" StrSQL = StrSQL & " order by year(日時),month(日時)" Set ObjRS = Server.CreateObject("ADODB.Recordset") ObjRS.Open StrSQL, ObjConn,3,3 Response.Write "<select name=""hiduke"">" Do until ObjRS.eof Response.Write "<option value=" & ObjRS("yy") & "/" & _ Right("0" & ObjRS("mm") , 2) if year(日時) = ObjRS("yy") and _ month(日時) = ObjRS("mm") then Response.Write " selected " end if Response.Write ">" & ObjRS("yy") & "/" & ObjRS("mm") ObjRS.MoveNext Loop Response.Write "</select>" ObjRS.Close Set ObjRS = Nothing End Sub '================================================= '----- DB接続 '================================================= Sub ConnDB() Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _ Server.Mappath("***.mdb") End Sub '================================================= '----- DB閉じる '================================================= Sub CloseDB() ObjConn.Close Set ObjConn = Nothing End Sub %>