• ベストアンサー

全角文字が???になる

コマンドプロンプトからクエリを発行したときは問題なく表示されるんですが、ASPからだと全角文字が???になってしまいます。 また、NULL項目を除外したいので Where DeleteFlg is Null という条件を付加したんですが、 今度は何も表示されなくなります。 原因等、わかるかたがいましたら、お力をお貸しください。 Set db=Server.CreateObject("ADODB.Connection") db.Open "dsn=AIU;Server=172.17.0.110; Database=db1; UID=root; PWD=admin;" db.CursorLocation = 3 Set rs = db.Execute("Select * From table1") Do While Not(rs.EOF) Response.Write rs.Fields.Item("koumoku1") & vbNewLine Loop 環境 Windows2003Serverエンタープライズ MySQL5.0 MySQL ODBC 3.51 Driver IE6.0

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

  • ベストアンサー
回答No.3

関連するか分かりませんが、 SQL文の構文は、大文字小文字をごちゃまぜに するのではなく、統一されてはいかがでしょうか。 Where DeleteFlg is Null という部分、 is Null ではなく、is null でどうでしょうか。 is Null だと、is 'Null' とご認識されて出てこない のかなという気もします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

#1の回答者です。 全角は良かったです。。自分も前になったことがあったので・・・・ DeleteFlg ですが、タブが入っているのではないでしょうか? DeleteFlg='\t' でコマンドプロンプトで検索してみてください。 それか、中に入っている内容を見られてもよろしいかと思います。 select distinct DeleteFlg from table1 その結果にあわせて、条件をセットしてはいかがでしょうか?

rin10rin
質問者

補足

タブもスペース(半角・全角)も入っていませんでした。 らちが明かないので、 DeleteFlg <> '1' で対応しようとしたらこれもだめで、 DeleteFlg <> 1 でやっとOKになりました。 文字列なのになぜ数値扱いされているのかはわかりませんが。。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

接続の際にcharacter setを指定してみては いかがでしょうか? ODBCで接続を行っていると思いますが、 ODBC3.51.12では、Connect Optionsタブに Initial Statement項目があります。そこに set character set sjis <--sjisの場合 など、キャラセットを指定して接続をしてみてください。 >NULL項目を除外したいので >Where DeleteFlg is Null と有りますが、除外する(Nullデータを表示させない)なら DeleteFlg is not Null ではないでしょうか? 確認してもらえればと思います。。

rin10rin
質問者

補足

>set character set sjis 全角文字の文字化けは直りました。 >NULL項目を除外したいので >Where DeleteFlg is Null は誤りでした。 正しくは、 NULLのものだけを表示させるです。 is NULL だけでなく = '' とか = ' ' などもためしたのですが、 やはり表示されません。 (コマンドプロンプトもASPも同様) Accessではうまくいったのですが、扱いが違うんでしょうか。 ※データをインサートするときはタブ区切りのCSVから行いました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エラーは出ないが抽出もされない

    アクセスからのデータ抽出はうまくいったので、 接続部分のソースを変更してMySQLにつないでみたんですが、うまくいきません。いろいろ調べてはいるんですが、原因や解決策がまったく分からない状態です。。。 システムDNSのTestはやはりうまくいきます。 ブラウザで確認すると、エラーは出ないものの、 データも抽出されない状態です。 IISマネージャの仮想ディレクトリ設定では、 フォルダ参照権限以外はすべて与えています。 ASP自体は、以下だけだと不十分なのでしょうか? Set db=Server.CreateObject("ADODB.Connection") db.Open "dsn=AIU;Server=172.17.0.110; Database=db1; UID=root; PWD=admin;" db.CursorLocation = 3 Set rs = db.Execute("Select * From table1") Do While Not(rs.EOF) Response.Write rs.Fields.Item("koumoku1") & vbNewLine Loop 環境 Windows2003Serverエンタープライズ MySQL5.0 MySQL ODBC 3.51 Driver IE6.0

  • ADO+ODBCでテーブルに接続する時のエラー

    VB6.0(SP6)から、ADOとODBCでMySQLに接続しました。 '-------------------------------------------- Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strCn As String Set cn = New ADODB.Connection strCn = "dsn=MySQL;uid=user;pwd=" cn.CursorLocation = adUseClient cn.Open strCn Set rs = New ADODB.Recordset rs.Open "select * from tbl;", cn, adOpenDynamic, adLockPessimistic Set DataGrid1.DataSource = rs '-------------------------------------------- データグリッドコントロールにテーブルの内容を表示させようとしているのですが、rs.Openの行でエラーが出てしまいます。エラーメッセージは「複数ステップの操作でエラーが発生しました。各状態の値を確認してください」です。 SQL文を変えて試してみると、何故かデータ型がDECIMALのカラムが含まれているとエラーになります。 DECIMALだといけないかと思うと、挿入は問題なく出来ます。 cn.Execute "insert into tbl (id,decimal_clm) values (10,900);" ご存知の方がいらっしゃいましたら宜しくお願いします。

    • ベストアンサー
    • MySQL
  • VBA(SQL使用)でiseriesのデータ取得できない

    iseriesのDBにエクセルのVBAを使ってデータをとりたいのですが、1レコードも取得できずにいます。ソースを提示しますのでどこが間違っているか教えていただけますでしょうか。VBAの初心者なんですが前任の見よう見まねで作っているところです。よろしくお願いします。 Public PARM As String  'PARMには入力してあります。  Sub 受信() ReDim SHINA(5000) ReDim BANGO(5000) GYO2 = 5 GYO1 = 1 Set ASCON = New ADODB.Connection ASCON.CursorLocation = adUseClient ASCON.Open = "DSN=" & DSN1 & "; UID=" & UID1 & ";PWD=" & PWD1 QSQL = "" QSQL = QSQL & "SELECT MISE SHINA BANGO " QSQL = QSQL & " FROM " & LIBLRY1 & ".DATAB" QSQL = QSQL & " WHERE MISE =" & PARM  'MISEは文字列です Set RS = New ADODB.Recordset RS.Open QSQL, ASCON, adOpenDynamic, adLockOptimistic Do While Not RS.EOF   'データがないのでloopで抜けてしまう SHINA2(GYO1) = RS("SHINA") BANGO2(GYO1) = RS("BANGO") Cells(GYO2, 1) = RS("SHINA") Cells(GYO2, 3) = RS("BANGO") GYO1 = GYO1 + 1 GYO2 = GYO2 + 1 Loop   RS.Close Set RS = Nothing ASCON.Close Set ASCON = Nothing   end sub

  • Microsoft ODBC For Oracle の設定方法

    Oracle9iです。 Oracle in OraHome92 のドライバで以下の方法でデータベースに接続していました。 Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.open ("DSN=dsn;UID=uid;PWD=pwd") マイクロソフトから出ているドライバもあるということを知ったので、Microsoft ODBC For Oracleで接続するにはどうしたら良いか教えて下さい。 よろしくお願い致します。

  • Microsoft Access DBへの接続

    Microsoft Access MDBへの接続方法で先日投稿致しましたが、 接続方法が違う事が判明し別の方法で試しているのですが こちらの方法でも問題が発生しました。 require_once "adodb/adodb.inc.php"; $db = ADONewConnection("access"); $dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=d:\\yoyaku.mdb;Uid=Admin;Pwd=;"; $db->Connect($dsn); if (!$db) { echo "NG"; } $sql = "select * from T_YOYAKU"; $rs = $db->Execute($sql); if ( $row = $rs->Fields(1) ) {  if ( $row[YOYAKU_CODE] == "1" ) { $a="×"; } else { $a="○"; } } else {  $a="○"; } DB接続の部分(Connectの部分)では問題は起きてないのですが、Execute文のところで問題が発生し、その下に記述してある処理が実行されていないのが現状です。 インターネット等で調べても何も解決しなかったため、投稿致しました。 ご教授お願い致します。

    • 締切済み
    • PHP
  • [ODBC]Oracle接続時のエラー

    初めて投稿させて頂きます。 客先システム(ASPサービス)の保守をすることになり社内に環境を構築したのですが、以下の「※」の行で エラーが発生してしまいます。(エラー内容を確認するため、On Error Resume Nextを一時的にコメントにしてあります) インデントが効かないようなので見辛いと思いますが... [ソース] ------------------------------------------------------------------------------- 'オブジェクトの生成 Set wkdbCnct = Server.CreateObject("ADODB.Connection") 'On Error Resume Next ※→wkdbCnct.Open "DSN=" & DBCNN_DSN & "; UID=" & DBCNN_UID & "; PWD=" & DBCNN_PWD & ";" If Err.Number <> 0 Then Set wkdbCnct = Nothing On Error Goto 0 Response.Redirect DBERROR_URL Exit Function End If -------------------------------------------------------------------------------- [エラー内容] Microsoft OLE DB Provider for ODBC Drivers エラー '80040e4d' [Microsoft][ODBC driver for Oracle][Oracle]ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。 DSN等の設定値を確認するため以下のようなデバッグコードを仕込んで、変数「vPara」を画面に表示させてみました。 [デバッグコード入りソース] ------------------------------------------------------------------------------- Set wkdbCnct = Server.CreateObject("ADODB.Connection") On Error Resume Next wkdbCnct.Open "DSN=" & DBCNN_DSN & "; UID=" & DBCNN_UID & "; PWD=" & DBCNN_PWD & ";" If Err.Number <> 0 Then '↓デバッグ用コード val1 = Err.Number val2 = Err.Description vPara = "" vPara = "DSN=" & DBCNN_DSN & "; UID=" & DBCNN_UID & "; PWD=" & DBCNN_PWD & ";" & " | " & "Err.Number = " & val1 & " | Err.Description = " & val2 Exit Function '↑デバッグ用コード Set wkdbCnct = Nothing On Error Goto 0 Response.Redirect DBERROR_URL Exit Function End If -------------------------------------------------------------------------------- [画面に表示したvParaの内容] DSN=HOGE; UID=USER123; PWD=PASS123; | Err.Number = -2147217843 | Err.Description = [Microsoft][ODBC driver for Oracle][Oracle]ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。 SQL*Plusで「USER123/PASS123@HOGE」でログインを試みたところ、問題なく接続出来ました。 どういった事が原因として考えられるでしょうか? [AP&DBサーバ] Windows Server2016 Standard IIS Version 10.0.14393.0 OracleDatabase12c(12.2.0.1) + OracleClient12c(12.2.0.1-32bit) 不足している情報等ありましたらご指摘お願いします。

  • エクセルVBAの処理速度アップについて

    以下のエクセルVBAを組んでいるのですが、処理の速度をあげたいです。 無駄な記述があると思うのですが、調べても試行錯誤しても、上手くいきません。 処理速度をあげる記述をご教示願います。よろしくお願い申し上げます。 ※別ファイルのAccessファイルをデータベースとして、「今年」テーブルと、「前年」テーブルそれぞれから条件抽出して、受注数量を合計させるものです。 ※SQLのVBAです。なお、実際ファイルのVBAは、以下記述の5倍量あります(内容は、セル範囲が違うだけで同じ。現在速度:約30秒)。 ※「配列」というのを活用すれば速くなるようなのですが、理解できませんでした。。。 ーーーー【以下、VBA】----------- Sub DSUM集計() Application.ScreenUpdating = False Dim db As ADODB.Connection Dim rs As ADODB.Recordset Dim mySQL As String Dim cmd As ADODB.Command Dim AA As Variant AA = "AND 営業箇所" & Range("C13") & " AND 拒 IS NULL AND 販売伝票 <" & Range("D13") & " AND 品名 " & Range("E13") & " AND 得意先名 " & Range("F13") & " AND 請求先名 " & Range("G13") & " AND 出荷先名 " & Range("H13") Set db = New ADODB.Connection db.Provider = "Microsoft.Ace.OLEDB.12.0" db.Open "\\▲▲▲\ACCESS.accdb" With Worksheets("補助計算") mySQL = " SELECT SUM(受注数量) FROM 今年 " mySQL = mySQL & "WHERE 納入期日=" & Range("B13") & AA Set rs = New ADODB.Recordset Set cmd = New ADODB.Command Set cmd.ActiveConnection = db cmd.CommandText = mySQL Set rs = cmd.Execute Range("I13").CopyFromRecordset rs mySQL = " SELECT SUM(受注数量) FROM 今年 " mySQL = mySQL & "WHERE 納入期日=" & Range("B14") & AA Set rs = New ADODB.Recordset Set cmd = New ADODB.Command Set cmd.ActiveConnection = db cmd.CommandText = mySQL Set rs = cmd.Execute Range("I14").CopyFromRecordset rs mySQL = " SELECT SUM(受注数量) FROM 前年 " mySQL = mySQL & "WHERE 納入期日=" & Range("K14") & AA Set rs = New ADODB.Recordset Set cmd = New ADODB.Command Set cmd.ActiveConnection = db cmd.CommandText = mySQL Set rs = cmd.Execute Range("M14").CopyFromRecordset rs    mySQL = " SELECT SUM(受注数量) FROM 前年 " mySQL = mySQL & "WHERE 納入期日=" & Range("K15") & AA Set rs = New ADODB.Recordset Set cmd = New ADODB.Command Set cmd.ActiveConnection = db cmd.CommandText = mySQL Set rs = cmd.Execute Range("M15").CopyFromRecordset rs rs.Close Set rs = Nothing Set db = Nothing Application.ScreenUpdating = True End With End Sub ーーーーーーーーーーーーーーーーーーーー 以上

  • ADOでエクセルに接続した後の文字検索方法について

    http://home.att.ne.jp/zeta/gen/excel/c04p42.htm こちらのページ下の方で■ADOレコードセットを取得して検索しますを 参考にさせて頂き、 検索.xlsを作成→VBAに下のように記述してtest.xlsのA列の中の文字列”excel”を検索して、 もしexcelという文字があれば該当セルの横のセルの文字を返すというものです、 この中で、test.xlsのA列を検索する部分の記述で RS.Find RS.Fields(0) & "='excel'" の部分でうまく行きません。 エラー内容としては 実行時エラー ’3001’: 引数が間違った型、許容範囲外、または競合しています。 と出てしまいます。 ためしにtest.xlsのA1セルにkoumokuと入力して RS.Find RS.Fields(0) & "='excel'"を 以下のように書き換るとうまく行きます RS.Find "koumoku='excel'" test.xlsには項目を作らずに今回は 項目指定ではなく列を指定して文字列を検索したいのですが どなたかお知恵を拝借させていただきたく存じます。 Public Sub test() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Set CN = New ADODB.Connection CN.Provider = "Microsoft.Jet.OLEDB.4.0" CN.Properties("Extended Properties") = "Excel 8.0" CN.Open "c:\test.xls" SQL = "SELECT * FROM [Sheet1$]" Set RS = New ADODB.Recordset RS.Open SQL, CN, adOpenStatic, adLockReadOnly 'RS.Find "koumoku='excel'" →これだとOK RS.Find RS.Fields(0) & "='excel'" If RS.EOF Then Debug.Print "Not Found" Else Debug.Print RS.Fields(1) TextBox1.Text = RS.Fields(1) End If End Sub

  • VB6.0+MyODBC5.0+MySQL4.1にてインサートデータが0になる

    VB初心者です。 上記の条件でVB上からDBへインサート文を実行させたのですがMyadminを開いてデータを確認するとデータがすべて0になってしまいます。 因みにインサート文に直接データを代入するとちゃんとDBに登録されます。 OS:WinXP Dim a AS Integer Dim b AS Integer Dim c AS Integer Private Sub form_load() Set cn = CreateObject("ADODB.Connection") cn.Open "dsn=MySQL;uid=root;Pwd=" cn.CursorLocation = 3 a = 1 b = 2 c = 3 cn.BeginTrans cn.Execute "insert into test values (a, b, c)" cn.CommitTrans cn.Close インサートを変数指定ではなく直接(1, 2, 3)と入れると登録できます。 単純な勘違いを犯しているだけだと思うのですが、どちら様かお知恵を拝借できませんでしょうか? よろしくお願いいたします。

  • ADOのExecuteメソッドで交互にエラーが出る

    こんにちは。 ExcelでADO+ODBCを用いてローカルのMySQLにアクセスしています。 とあるサイトから参考にさせてもらって作成した以下のソースで、 シート上のボタンをクリックしたら ODBCに設定したDSNのテーブル一覧をシートに出力 するというマクロなのですが、実行してみると正常終了とエラーが交互に繰り返されます。 エラーが出るときにデバッグしてみると標準モジュールの Set adoRS = adoCON.Execute("SHOW TABLES;") を実行した時点でエラー(赤丸の×でエラー説明なし)がでて強制終了します。 この原因について心当たりがありましたら教えてください。 ****シートモジュール**** Private dsn As String Private uid As String Private pwd As String Private strsql As String Sub para_get() dsn = Range("C6") uid = Range("C7") pwd = Range("C8") strsql = Range("C9") End Sub Sub ボタン1_Click() Dim errflag As Integer errflag = 0 Call para_get errflag = DBconnect(dsn, uid, pwd) If errflag <> 0 Then MsgBox "データベースに接続できませんでした" Else MsgBox "データベースに接続できました" End If errflag = sql_exe End Sub *****標準モジュール****** Dim adoCON As New ADODB.Connection Public Function DBconnect(dsn As String, uid As String, pwd As String) Dim errflag As Integer errflag = -1 On Error GoTo errflag 'Access VBA Tips '4.5 MySQLのデータベースを開く・閉じる 'ADOでデータソースをオープン adoCON.Open "dsn=" & dsn & ";uid=" & uid & ";pwd=" & pwd & ";" errflag = 0 Exit Function errflag: 'データベースのクローズ adoCON.Close Set adoCON = Nothing End Function Function sql_exe() As Integer Dim adoRS As New ADODB.Recordset 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("SHOW TABLES;") Range("B15").CopyFromRecordset adoRS 'データベースのクローズ adoRS.Close Set adoRS = Nothing End Function

カラー印刷できない
このQ&Aのポイント
  • クリックポストの宛名をカラー印刷できない。年賀状もカラー印刷できません。
  • お使いの環境はWindows11で、接続は無線LANです。関連するソフト・アプリはありません。
  • 電話回線の種類はひかり回線です。
回答を見る