開発環境 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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- ルーター・ネットワーク機器 NUROのルータF660Aについて 2 2022/09/07 11:44
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) ACCESS2019でのエラーメッセージ 1 2023/08/15 17:40
- Outlook(アウトルック) Outlook2019のアドレス帳を別のPCのOutlook2021のアドレス帳に移行するには 1 2023/07/23 13:36
- Windows 10 新規PC導入して、うっかりマイクロソフトアカウントも新規登録してしまった時の復帰方法 3 2022/06/12 16:11
- 確定申告 確定申告時の減価償却 1 2023/01/10 06:41
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- 経営情報システム 社員5人の会社ですが、PC買い替えやHP作り直し、顧客管理ソフト導入などに使える補助金はありますか 1 2022/05/12 23:32
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
だれがとけるの?
-
C言語 アロー演算子について質...
-
テキストボックスの値を変数に...
-
EXCEL/VBA 変数の値をクリップ...
-
C言語 exitで終了した関数の戻...
-
C言語 列挙型(enum型)変数について
-
jsp~jspにhiddenを使って変数...
-
Variant型で宣言してるのにEmpt...
-
Char* に文字列代入
-
プログラミングで変数と関数の...
-
C言語 exitの使い方
-
エクセルのマクロについて教え...
-
○桁にある数値を取得する VB.N...
-
エクセルへのデータの貼付時に...
-
Cプログラムについて
-
正規表現で、英数記号を含むパ...
-
異なる文字列のマッチングを、D...
-
VBAでC列が入力済みならそのま...
-
LOG(10)2の意味は?
-
VisualStudio2022でC言語プログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
だれがとけるの?
-
C言語 列挙型(enum型)変数について
-
[VBS]変数を定数に変換する方法...
-
jsp~jspにhiddenを使って変数...
-
Variant型で宣言してるのにEmpt...
-
processing エラーで、 "cannot...
-
テキストボックスの値を変数に...
-
整数xxxが大き過ぎますというエ...
-
C言語 アロー演算子について質...
-
i++と++i ってどう違うのですか?
-
数値計算??
-
python の 連鎖代入の文法
-
インクリメント演算子の前置(+...
-
「%」を使って、偶数か奇数かを...
-
【VBA】複合代入演算子
-
VBA 1行で複数の代入を行った...
-
datagridviewに行...
おすすめ情報