dポイントプレゼントキャンペーン実施中!

Windows2000+IIS5.0+Access(ASP)---使用環境

ASPの勉強を始めた初心者です。
ASPのプログラムで、Accessデータベースのフィールド名(テーブル)を半角英数字で指定した場合、正常に表示するのですがフィールド名を日本語指定--例(商品名)した場合、以下のようなエラーが発生します。

Microsoft VBscriptコンパイルエラー(0X800A0408)
”文字が正しくありません”

いろいろ試しましたがお手上げです・・・
何かプログラム上で宣言or設定が必要なのでしょうか?

A 回答 (2件)

話としては、単純なようですね


そもそも、スクリプト内の変数として、2バイト文字は使用できないのが言語仕様であったはずです。
テーブルのカラム名に日本語を使用するのは、MDBの場合特に問題ありませんが、このコードでは変数名として「日時」というキーワードを使っています。
これでは、動かないでしょう。

これが、ASPでなくAccessのVBAだったら動いたのかも知れませんが・・・。

いずれにしても、対処としてはスクリプト内の変数名については、半角英数で名前をつけるしかありませんね。
テーブルのフィールド名とまったく同じ名前にしなければならない理由は、システム的には無いはずです。
もしも、どれがDBのフィールド名でどれがプログラムの変数なのかが判断できないのであれば、まずはそれが読み取れる程度には勉強する必要がありますね。
    • good
    • 0

回答するには、情報が欠如しすぎです。


・スクリプトエンジンのバージョン
・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

%>

補足日時:2003/10/17 03:02
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
まったくのド素人で、質問にどのような情報が必要かも分かっていませんでした。とりあえずコードを載せます。

お礼日時:2003/10/17 02:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!