C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 式に未定義関数 'Replace' がありますと表示される


(過去ログ 122 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■73095 / inTopicNo.1)  式に未定義関数 'Replace' がありますと表示される
  
□投稿者/ タスク (3回)-(2014/08/18(Mon) 21:26:06)

分類:[.NET 全般] 

OLEDBでローカルにあるCSVファイルを読み取ろうと思っています。

string strSQL = "SELECT ID FROM ["MYCSV.csv"] WHERE REPLACE(TEL番号,'-','') LIKE '" + TextBoxTel.Text + "%'";

dbConnectionStringCSV = "provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" PATH ;Extended Properties='Text;" + "HDR=Yes;FMT=Delimited'";

ole_cn.Open(); //ファイルオープン
OleDbCommand ole_cmd = new OleDbCommand();
ole_cmd.Connection = ole_cn;
ole_cmd.CommandText = strSQL;
var getTel = ole_cmd.ExecuteScalar();

これを実行すると、「式に未定義関数 'Replace' があります。」と例外が発生します。
上記のコードはREPLACE関数を使わなければ問題なく動きます。

色々調べたのですが、下記URLと同じような現象だと思います。
http://stackoverflow.com/questions/4834536/exception-when-trying-to-execute-replace-against-ms-access
http://bbs.wankuma.com/index.cgi?mode=al2&namber=6028&KLOG=16

やりたいことは、ローカルCSVの「TEL番号」列には電話番号が入っているのですが、ハイフンが有りではいっています。「0000-00-0000」などです。
TextBoxTelにはハイフン無しの番号を入力して、例えば「0000000000」と入力すると電話番号が「0000-00-0000」のIDが取得できるような事をしたいです。
なんとか実現できる方法はないでしょうか?

環境はC#、Win7です。
引用返信 編集キー/
■73096 / inTopicNo.2)  Re[1]: 式に未定義関数 'Replace' がありますと表示される
□投稿者/ Hongliang (224回)-(2014/08/18(Mon) 23:09:44)
いったんcsv全体をDataAdaplterでDataTableに読み込むなりDataReaderで独自定義クラスに読み込むなりしてから、C#で検索することになるんじゃないですかね。
引用返信 編集キー/
■73100 / inTopicNo.3)  Re[1]: 式に未定義関数 'Replace' がありますと表示される
□投稿者/ shu (610回)-(2014/08/19(Tue) 09:51:03)
No73095 (タスク さん) に返信

VB.NETですが、こんな感じに各文字の間に%をはさんでしまってはどうでしょう?

Dim SQL As New StringBuilder
SQL.Append("Select * From [MYCSV.csv]")
SQL.Append(" Where TEL番号 Like '%")
SQL.Append(String.Join("%", (From c In TextBoxTel.Text Select CStr(c)).ToArray))
SQL.Append("%'")


取得した後に再度チェックを行うと良いかと思います。

CSVなので結局全件読みは避けられないかと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -