開発環境 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.1
- 回答日時:
Replace(+"PC管理台帳.使用者氏名+", " ", "")
これの"("直後の"+"と、"~使用者氏名+"の"+"がとても気になるんですが…
あと、文字列の結合には古風に"&"でやった方が意思が伝わるようです。
"+"を使うと、String型でない(演算可能な型の)場合、加算しようとしますから。
この回答への補足
("SELECT " Replace("PC管理台帳.使用者氏名", " ", "") ",PC管理台帳.新PC名,PC管理台帳.部署名,PC管理台帳.マシンベンダ名,PC管理台帳.マシンモデル FROM PC管理台帳 WHERE 新PC名='" + TextBox1.Text + "'", cn)
をどうかえればいいのか正直わかりません。
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.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.4ベストアンサー
- 回答日時:
No.2です。
ぐあ、ついつい釣られてダブルクオーテーション前提の書き方にしてしまった(汗)
すみません。おっちょこちょいだなぁ俺…
No.3の方が書いてるように、
selectCommand = "SELECT REPLACE(PC管理台帳.使用者氏名, ' ', ''), PC管理台帳.新PC名, ... FROM PC管理台帳 ..."
で行けますね。REPLACEが使えるのであれば。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Borland C++ Compiler 5.5の警...
-
整数xxxが大き過ぎますというエ...
-
VBAでダブルコーテーション入り...
-
コマンドプロンプト バッチ|結...
-
processing エラーで、 "cannot...
-
テキストボックスの値を変数に...
-
インクリメント演算子の前置(+...
-
[VBS]変数を定数に変換する方法...
-
String型ローカル変数の初期化...
-
Excel VBAでイコール二回使えま...
-
Excel VBA教えてください
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
引数とは なんですか?
-
def partition(fn, ls): a, b =...
-
datagridviewに行...
-
Variant型で宣言してるのにEmpt...
-
プログラミングで変数と関数の...
-
python の 連鎖代入の文法
-
配列の値を置換するにはどうす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
Variant型で宣言してるのにEmpt...
-
[VBS]変数を定数に変換する方法...
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
整数xxxが大き過ぎますというエ...
-
【VBA】複合代入演算子
-
JavaScriptをURLから直接実行し...
-
VB6.0での条件文にある#の意味
-
だれがとけるの?
-
インクリメント演算子の前置(+...
-
プログラミングで変数と関数の...
-
datagridviewに行...
-
C言語 列挙型(enum型)変数について
-
verilog HDLの[=]と[<=]の使い分け
-
「%」を使って、偶数か奇数かを...
-
i++と++i ってどう違うのですか?
おすすめ情報