2012-02-03 12 views
-5

をだから私は、最近、次の質問をした:は、固定形式のテキストファイルの読み込み - パート3

Reading A Fixed Format Text File - Part 2
Reading A Fixed Format Text File

私は最終的に以下のコードを使用してアクセスするデータベースを読み取ることができました:

string DATABASE_PROVIDER = "Provider=Microsoft.ACE.OLEDB.12.0"; 
string CVS Application.StartupPath + ""\\Database.accdb"; 
string DATA_SOURCE = "Data Source" + CVS; 
string connectionString = DATABASE_PROVIDER + DATA_SOURCE; 
string TABLE = " FROM STUFF"; 
string SELECT = "SELECT CODE, NAME, ICON, FUNCTION; 
string StringQueryCmd = SELECT + TABLE; 

OleDbConnection MyConnection = new OleDbConnection(connectionString); 
OleDbCommand Command = OleDbCommand(StringQueryCmd,MyConnection); 
OleDbAdapter MyDataAdapter = new OleDbAdapter(Command); 
DataSet MyDataSet = new DataSet(); 
DataTable MyDataTable = new DataTable(); 
MyConnection.Open(); 
MyDataAdapter.Fill(MyDataSet,"STUFF"); 
MyConnection.Close(); 

次のコードブロックを使用してLINQ to DATASETを利用しようとしています。

var query = (
from order in MyDataTable.AsEnumerable() 
where order.Field<int>("CODE") >= 41 
select new 
{ 
CODE = order.Field<int>("CODE"), 
NAME = order.Field<string>("NAME"), 
ICON = order.Field<string>("ICON"), 
FUNCTION = order.Field<string>("FUNCTION")  
} 
); 

クエリの結果は返されません。何千もの結果が得られるはずですが、基本的にクエリに間違いがありますか? DataTableからの情報を制限する結果を生成する他の方法はありますか?

"NAME"列と一致し、いくつかの結果しか得られない正規表現をクエリ(または他の解決策)に提供する必要があります。私は正規表現のための能力を、各Nameに対してMatch(ブーリアンステートメント)に使用しようとします。

答えて

2

インスタンス化後のデータでMyDataTableを初期化していない場合は、データセットは入力したが、データテーブルは入力していません。だから私はそのミスを犯したとは思わないMyDataSet.Tables[0]代わりの

// DataSet filled in but data table still empty! 
MyDataAdapter.Fill(MyDataSet,"STUFF"); 
+0

を試してみてください。あなたが私のオフィスで働いていたら、私はあなたにビールを買うでしょう。 –

+0

@Ramhound:仲間の仲間:) – sll

関連する問題