![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Windows2000+IIS5.0+Access(ASP)---使用環境
ASPの勉強を始めた初心者です。
ASPのプログラムで、Accessデータベースのフィールド名(テーブル)を半角英数字で指定した場合、正常に表示するのですがフィールド名を日本語指定--例(商品名)した場合、以下のようなエラーが発生します。
Microsoft VBscriptコンパイルエラー(0X800A0408)
”文字が正しくありません”
いろいろ試しましたがお手上げです・・・
何かプログラム上で宣言or設定が必要なのでしょうか?
No.2ベストアンサー
- 回答日時:
話としては、単純なようですね
そもそも、スクリプト内の変数として、2バイト文字は使用できないのが言語仕様であったはずです。
テーブルのカラム名に日本語を使用するのは、MDBの場合特に問題ありませんが、このコードでは変数名として「日時」というキーワードを使っています。
これでは、動かないでしょう。
これが、ASPでなくAccessのVBAだったら動いたのかも知れませんが・・・。
いずれにしても、対処としてはスクリプト内の変数名については、半角英数で名前をつけるしかありませんね。
テーブルのフィールド名とまったく同じ名前にしなければならない理由は、システム的には無いはずです。
もしも、どれがDBのフィールド名でどれがプログラムの変数なのかが判断できないのであれば、まずはそれが読み取れる程度には勉強する必要がありますね。
No.1
- 回答日時:
回答するには、情報が欠如しすぎです。
・スクリプトエンジンのバージョン
・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
%>
回答ありがとうございます。
まったくのド素人で、質問にどのような情報が必要かも分かっていませんでした。とりあえずコードを載せます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataTableに特定のフィールドが...
-
Accessのフィールド名に半角括...
-
Accessの画像挿入のVBAコード
-
Access 2010で実行時エラー3061
-
フィールド名の指定でエラー
-
ACCESSで日別集計をする場合
-
INT64対応のprintf系関数はあり...
-
オートナンバー型を抽出条件に...
-
accessでフィールド追加のあと...
-
NULLを含む文字列の結合で...
-
ADOでNullフィールドの抽出
-
AccessのDAOでフィールド名を配...
-
COBOLで、文字タイプのフィール...
-
アクセス ADO Null以外のレコ...
-
ACCESSデータベースにV...
-
Access VBA 添付型フィールド
-
データベース操作(DAO)でのフィ...
-
クリスタルレポート(8.5)の書式...
-
テーブルのデータ型の変更がで...
-
Access :ALTER TABLE で作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでフィールド追加のあと...
-
Accessのフィールド名に半角括...
-
クリスタルレポートで困ってい...
-
2つ目のレコードの値を取得す...
-
DataTableに特定のフィールドが...
-
Access 2010で実行時エラー3061
-
INT64対応のprintf系関数はあり...
-
テーブルのデータ型の変更がで...
-
AccessのDAOでフィールド名を配...
-
日付と文字列を条件としてDLook...
-
クリスタルレポートで文字列の...
-
クリスタルレポート(8.5)の書式...
-
Access VBA 添付型フィールド
-
Access クエリで変数を参照する...
-
Accessの画像挿入のVBAコード
-
NULLを含む文字列の結合で...
-
SQLで複数のテーブルと結合した...
-
ACCESSで視覚的タイムテーブル...
-
ACCESSデータベースにV...
-
オートナンバー型を抽出条件に...
おすすめ情報