• ベストアンサー

フィールド名の指定でエラー

Windows2000+IIS5.0+Access(ASP)---使用環境 ASPの勉強を始めた初心者です。 ASPのプログラムで、Accessデータベースのフィールド名(テーブル)を半角英数字で指定した場合、正常に表示するのですがフィールド名を日本語指定--例(商品名)した場合、以下のようなエラーが発生します。 Microsoft VBscriptコンパイルエラー(0X800A0408) ”文字が正しくありません” いろいろ試しましたがお手上げです・・・ 何かプログラム上で宣言or設定が必要なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • you-m
  • ベストアンサー率58% (190/327)
回答No.2

話としては、単純なようですね そもそも、スクリプト内の変数として、2バイト文字は使用できないのが言語仕様であったはずです。 テーブルのカラム名に日本語を使用するのは、MDBの場合特に問題ありませんが、このコードでは変数名として「日時」というキーワードを使っています。 これでは、動かないでしょう。 これが、ASPでなくAccessのVBAだったら動いたのかも知れませんが・・・。 いずれにしても、対処としてはスクリプト内の変数名については、半角英数で名前をつけるしかありませんね。 テーブルのフィールド名とまったく同じ名前にしなければならない理由は、システム的には無いはずです。 もしも、どれがDBのフィールド名でどれがプログラムの変数なのかが判断できないのであれば、まずはそれが読み取れる程度には勉強する必要がありますね。

その他の回答 (1)

  • you-m
  • ベストアンサー率58% (190/327)
回答No.1

回答するには、情報が欠如しすぎです。 ・スクリプトエンジンのバージョン ・AccessDBのバージョン ・現在、インストールしているMDACのバージョン ・DB接続には、何を使っているか ・具体的にどのようなコードを書いているか しかし、原則的にフィールド名は”[]”でくくることで、明示的に指定することができるので、多分それだけでうまくいくかなとは思いますが。

too1221
質問者

お礼

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

too1221
質問者

補足

.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

  • ACCESSでのフィールド名

    ACCESS2000を使っています。 テーブルに「時間:」というフィールドがあるのですが、 If IsNull(!時間:) Then  :  : というふうに使うとコンパイルエラーになります。 ”:”がまずいと思うのですが。 フィールド名を変更せずにNULLかどうか調べたいのです。 何かいい方法は無いでしょうか。

  • ACCESSでフィールドに-(ハイフン)がついている場いい

    ACCESSのVBAでプログラム構築をしています。 大変初歩的な質問で申し訳ありません。 rs![フィールド名]でデータを取得する場合に フィールド名に-(ハイフン)がついているとコンパイルエラーに なってしまいます。 なにかよい方法はありませんでしょうか?

  • accessでテキスト型のフィールドサイズについて…

    accessで作った受注管理のデータを抜き出してクロネコヤマトのi-cats(b2)に入力するように作りました。 b2のデータ交換規約(?)の方のテキスト型のフィールドサイズの指定が 半角英数字10文字 となっていたり、 15文字/30文字 全角/半角 というようになっています。 質問なんですが このフィールドサイズにぴったり合うようにフィールドサイズの設定をするにはどうしたらいいでしょうか? また、半角英数字・半角カタカナ・数字等、特定の文字の種類だけ入力できるようにたりしたいです。 もうひとつ別の質問です VBAで、設定したフィールドサイズよりも大きいテキストを入れようとするとエラーが出るんですが、VBAで後ろを切り捨てたりして入るサイズに縮める方法を教えてください。 長くなりましたが宜しくお願いします。

  • [ASP]エラー プロバイダが指定されておらず・・・

    こんにちは。 現在、ActiveServerPages(以下ASP)で作られたサイトの環境移行を行っています。 Windows2003R2の32bit版からWindows2003R2の64bit版に 変更しているのですが、ASPのページで、  Set db = Server.CreateObject("ADODB.Connection")  db.Open "uid=xxx;dsn=xxx;" といったようにDBに接続しているところで、下記エラーとなってしまいます。 ================== 3753 プロバイダが指定されておらず、既定のプロバイダがありません。 ADODB.Connection ================== IISのほうでアクセス権(NETWORK)やスクリプトの実行許可、ASP使用許可等の設定を確認しましたが、 特に問題ないように見受けられます。 セキュリティ修正プログラム(MS04-003)等もあててみました。 どなたか分かる方、いらっしゃいますでしょうか? ちなみに同IISでASP.NET(2.0)は問題なく稼動中です。 (旧環境では、共存問題ありませんでした。)

  • エラー処理

    環境:IIS,ASP(VBScript) サーバー Windows2000Server ASP超初心者です。 処理の途中でエラーになっても On Error Resume Next と If Err.Number then ........ を組み合わせればうまく逃げられるのはわかるの ですが、On Error Resume Nextを書いてもエラー が表示されて落ちます。 #include file の中についてはOn Error Resume Nextは無効なのでしょうか?

  • Accessフィールド名でひらがな、カタカナの区別

    Accessのクエリは、フィールド名のひらがな、カタカナを区別しないのでしょうか? こんなことがありました。 VBAのプログラム(クエリ)側ではフィールド名[ひらがな]を指定している箇所で、実際のフィールド名は[ヒラガナ]であり、異なっていることに気づきました。 しかしエラーを出力せずに動作していました。テーブルを見ると、希望通りにデータは格納されていました。 問題個所のクエリと対象のフィールド名は統一する予定ですが、 この動作がMicrosoftの仕様なのか、たまたま動作しているのか、そんなことは無いのか、 ちょっと気になったので質問させて頂きました。 宜しくお願い致します。

  • ASPでタグのエラー

    ASP.NETでタグについてのエラーがでていまして、<Span>タグと</Span>タグの間に<Table>タグをいれているとエラーがでるのです。ただ、プログラム自体は動くし、画面にはちゃんと表示されているのですが、みなさんはこういったエラーがある場合は、ASPではよくあることでしょうか?特に対処は必要ないでしょうか?環境はIIS6.0での動作です。

  • VISTA HOMEEDITIONのIIS7.0でASPをスクリプト実行させられますか?

    店頭で買ったVISTAです。 IIS7.0をコンポーネント追加しました。 localhostにてWEBサーバーを指定しまして http://localhost/web/test.html 上記のようなURLでIEにてローカルでWEBを表示できました。 HTMLは表示できるのですが、VBSCRIPTを使用した ASPを指定するとエラーになります。 MIMEを.aspに何か指定すればASPをスクリプトとして実行できますでしょうか?

  • PLSQLでフィールド名の参照について

    PLSQLでフィールド名で、例えば フィールド1,フィールド2…フィールド5 とし、下記の例のように添え字でフィールドを それぞれ指定したいのですが、可能でしょうか? 出来る場合、具体的にどのようにすればいいのでしょうか? FOR i IN 1..5;  sum := sum + CALCREC01("フィールド" || i);  ↑こんな感じの事がしたい。。。 END LOOP

  • 型エラーについて

    環境  IIS4.0  WIN NT  VB6.0 ASPからDLLを使用して処理を行っている際に 以下のような事象が発生しました。 VB(DLL)側で処理を行い、その結果をASPで受け取る時に エラーが出ております。 ASPではすべてVariant型なのでVBでもVariant宣言しているのに 何故か型エラーが出ています。 ASP部分をVBで記述すると問題なく動作します。 解決方法など分かりましたらご教授願います。 以下コードの一部分を抜粋いたしました。 ▼▼▼▼▼▼▼▼▼ASP▼▼▼▼▼▼▼▼▼ Dim DBErrField() DBErrField = clsSEND_SCHEDULE_T.DBErrField ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲ ▼▼▼▼▼▼▼▼▼VB(DLL)▼▼▼▼▼▼ Private mDBErrField() As Variant Public Property Get DBErrField() As Variant() DBErrField = mDBErrField End Property ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲ ▼▼▼▼▼▼▼▼▼エラー▼▼▼▼▼▼▼▼▼ Microsoft VBScript 実行時エラー (0x800A000D) 型が一致しません。 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

専門家に質問してみよう