開発環境 VB2008
PC管理台帳.使用者氏名のスペースを削除して表示させたいのですが、デバッグすると下記のようなエラーがでます。どなたかアドバイスおねがいします。
「String "PC管理台帳.使用者氏名+" から型 'Double' への変換は無効です。」
ちなみにPC管理台帳.使用者氏名には空行があります。
--------------------------------------------------
Private Sub Btn検索_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn検索.Click
Dim cn As New OleDb.OleDbConnection
Dim dView As New DataView
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source = C;\管理台帳データベース.mdb"
dadp = New OleDb.OleDbDataAdapter("SELECT " + Replace(+"PC管理台帳.使用者氏名+", " ", "") + ",PC管理台帳.新PC名,PC管理台帳.部署名,PC管理台帳.マシンベンダ名,PC管理台帳.マシンモデル FROM PC管理台帳 WHERE 新PC名='" + TextBox1.Text + "'", cn)
dadp.Fill(dset, "PC管理台帳")
'データベースの表示
DataGridView1.DataSource = dset.Tables("PC管理台帳")
End Sub
--------------------------------------------------
No.4ベストアンサー
- 回答日時:
No.2です。
ぐあ、ついつい釣られてダブルクオーテーション前提の書き方にしてしまった(汗)
すみません。おっちょこちょいだなぁ俺…
No.3の方が書いてるように、
selectCommand = "SELECT REPLACE(PC管理台帳.使用者氏名, ' ', ''), PC管理台帳.新PC名, ... FROM PC管理台帳 ..."
で行けますね。REPLACEが使えるのであれば。
No.3
- 回答日時:
"SELECT " + Replace(+"PC管理台帳.使用者氏名+", " ", "") + ",PC管理台帳.新PC名,PC管理台帳.部署名,PC管理台帳.マシンベンダ名,PC管理台帳.マシンモデル FROM PC管理台帳 WHERE 新PC名='" + TextBox1.Text + "'"
↓
"SELECT Replace(PC管理台帳.使用者氏名,' ', '') AS 使用者名,PC管理台帳.新PC名,PC管理台帳.部署名,PC管理台帳.マシンベンダ名,PC管理台帳.マシンモデル FROM PC管理台帳 WHERE 新PC名='" & TextBox1.Text & "'"
こんな感じでしょうか。
No.2
- 回答日時:
まず、REPLACE関数は、Access MDBでは使用できないようです。
(ソフトバンク SQLハンドブック第2版で調査)
もし使えたとしても、そのSQL文だと検索出来ないですね。
以下、REPLACE関数が使えるDBでの検索と仮定して書きます。
DataAdapterを宣言する前に、SQL文(selectCommandの部分)を
String変数に入れて、Debug.Print、またはConsole.WriteLine等で
実際にその変数の中身を確認してみてください。
まともな形になってないはずです。
REPLACE関数の部分は、
REPLACE(PC管理台帳.使用者氏名, " ", "")
になるようにしないと。
その書き方ですと、根本的に勘違いなさっているような感じですが、
SQL文はあくまで「DBに渡す『文字列』」です。
VB内部で解析される関数などではありません。
selectCommand = "SELECT REPLACE(PC管理台帳.使用者氏名, """ & _
" " & _
""", """"), PC管理台帳.新PC名, ... FROM PC管理台帳 ..."
みたいな形でないと。(意図的に途中で切ってます)
(「"」3つで、文字列に直接「"」を代入。4つで直接「""」を代入)
ともあれ、REPLACE関数(または類似の関数)が使えない以上、
REPLACEせずにデータを取り込んで、VB側で変換を掛けるしか
なさそうです。
No.1
- 回答日時:
Replace(+"PC管理台帳.使用者氏名+", " ", "")
これの"("直後の"+"と、"~使用者氏名+"の"+"がとても気になるんですが…
あと、文字列の結合には古風に"&"でやった方が意思が伝わるようです。
"+"を使うと、String型でない(演算可能な型の)場合、加算しようとしますから。
この回答への補足
("SELECT " Replace("PC管理台帳.使用者氏名", " ", "") ",PC管理台帳.新PC名,PC管理台帳.部署名,PC管理台帳.マシンベンダ名,PC管理台帳.マシンモデル FROM PC管理台帳 WHERE 新PC名='" + TextBox1.Text + "'", cn)
をどうかえればいいのか正直わかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
processing エラーで、 "cannot...
-
C言語 アロー演算子について質...
-
ExcelのVBAでをA列に第0〜19項...
-
だれがとけるの?
-
VB6.0での条件文にある#の意味
-
ASP+SQLにてSessionがNullになる
-
Variant型で宣言してるのにEmpt...
-
Serialize(CArchive& ar)にて
-
gridViewの行選択解除
-
【VBA】複合代入演算子
-
変数にオフセットが付いている...
-
親ウィンドウの情報をインライ...
-
シェルスクリプトでPHPのchr()
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
VB6.0-整数と余りを求める
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
[VBS]変数を定数に変換する方法...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
Variant型で宣言してるのにEmpt...
-
整数xxxが大き過ぎますというエ...
-
C言語 アロー演算子について質...
-
プログラミングで変数と関数の...
-
Excel VBAでイコール二回使えま...
-
python の 連鎖代入の文法
-
Accessコンボボックスにレコー...
-
stdpicture型の変数に、、
-
C言語 列挙型(enum型)変数について
-
変数にオフセットが付いている...
-
複数の代入オペレーターオーバ...
-
【VBA】複合代入演算子
-
VBA 1行で複数の代入を行った...
おすすめ情報