DataSetをArrayに変換する方法 – プログラミング – Home

DataSetをArrayに変換する方...
 
通知
すべてクリア

[解決済] DataSetをArrayに変換する方法


サマー
 サマー
(@サマー)
ゲスト
結合: 18年前
投稿: 51
Topic starter  

Windows XP,Visual Studio 2005をつかっています。

以下のようなコードでデータベースからデータを取得してリストビューに
データを表示しようとしています。Main_Tableというのがデータベースにある
表の名前です。データセット(dsPubs)にデータがはいるところまではいいの
ですが、それをlistViewにもってくるところがうまくいきません。

なにかいい方法はないでしょうか。よろしくおねがいします。

// データベース接続
SqlConnection ^ objConn;
String ^ sConnectionString;
sConnectionString = Data
Source=.\\SQLEXPRESS;AttachDbFilename=C:\\kakeibo.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True;

objConn = gcnew SqlConnection(sConnectionString);
objConn->Open();

SqlDataAdapter^ daAuthors = gcnew SqlDataAdapter(Select * From Main_Table,
objConn);

DataSet^ dsPubs = gcnew DataSet(Pubs);

// データ読み込み
daAuthors->Fill(dsPubs, Main_Table);

DataTable^ tblAuthors = dsPubs->Tables->Item(Main_Table); //ここらがうまくい
かない

// リストビューにデータ表示
listView2->Items->Add(gcnew ListViewItem(tblAuthors->Rows->ItemArray())); //こ
こがうまくいかない


引用未解決
トピックタグ
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> ですが、それをlistViewにもってくるところがうまくいきません。

そうでしょうね。
ところで、「どううまくいかないか」とかは説明しないのですか。

> なにかいい方法はないでしょうか。よろしくおねがいします。

> ここら辺を勉強してみます。ありがとうございました、。
がんばってください。


返信引用
asd
 asd
(@asd)
ゲスト
結合: 18年前
投稿: 17
 

すでにBanさんも指摘していますが

>ですが、それをlistViewにもってくるところがうまくいきません。

サマーさんが書いたとおりにうまくいってるじゃないですか。
自分の考える理想の処理結果を載せないと”何と比べてうまくいかないのか”伝わりません。

>なにかいい方法はないでしょうか。よろしくおねがいします。

1,最低限のネットマナーをしっかり勉強する
2,立てたスレは解決方法まで責任を持って閉じる(放置しない)
3,自分の考えをしっかり述べる(○○という動きを期待しましたが実際は△△となってしまい
ました)

過去に何度も指摘されてるのでこの辺をしっかりしないとまともに相手にしてはもらえな
いでしょう。

# どうせまた放置するんでしょ?
# Blueさんに指摘されたここは放置決定ですか?
# http://www.vcppclub.com/bbs01/wforum.cgi?mode=allread&no=3558&page=10


返信引用
asd
 asd
(@asd)
ゲスト
結合: 18年前
投稿: 17
 

# はぅ、行き違いになってしまった(汗)

># Blueさんに指摘されたここは放置決定ですか?
># http://www.vcppclub.com/bbs01/wforum.cgi?mode=allread&no=3558&page=10

この2行のみ撤回します。


返信引用
サマー
 サマー
(@サマー)
ゲスト
結合: 18年前
投稿: 51
Topic starter  

DataTable^ tblAuthors = dsPubs->Tables->Item(Main_Table);
↑のコードでDataSet型からMain_TableというなまえのDataTableをひっぱって
こようとしているのですが、コンパイルすると

 'Item': クラス 'System::Data::DataTableCollection' の既定プロパティ (インデク
サ) にアクセスするためには 'default' を使用してください

のようなエラーがでます。

また

listView2->Items->Add(gcnew ListViewItem(tblAuthors->Rows->ItemArray()));
↑のコードでDataTable型のtblAuthorsをarray<String^>^にしようとしているの
ですが、

'ItemArray' : 'System::Data::DataRowCollection' のメンバではありません。

のようなエラーがでます。

型の変換がいまいちよくわからないのですが、なにかいい方法はないでしょうか?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> listView2->Items->Add(gcnew ListViewItem(tblAuthors->Rows->ItemArray()));
ItemArrayメソッドをもっているのはDataRowCollectionではなくDataRowクラスです。

Rows->Item( 0 )->ItemArray()

とかすればできるんじゃない。


返信引用
サマー
 サマー
(@サマー)
ゲスト
結合: 18年前
投稿: 51
Topic starter  

(677):Rows->Item( 0 )->ItemArray()
↑のコードに変えてやってみましたが、以下のようなエラーになります。

(677):'Item': クラス 'System::Data::DataRowCollection' の既定プロパティ (インデ
クサ) にアクセスするためには 'default' を使用してください

(677):'->ItemArray' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタ
ではありません。

Rowsのメンバーについて調べる必要があるかもしれません。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

Arrayとは違うアクセス方法なんでしょうかね。
for each ならうまくいきそう。

for each ( DataRow^ row in tblAuthors->Rows )
{
listView2->Items->Add(gcnew ListViewItem(row->ItemArray()));
}

Tables(DataTableCollection)も同様。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

というか、普通に

dsPubs->Tables[Main_Table]

とか

tblAuthors->Rows[ 0 ]

とかでできそうな希ガス。


返信引用
サマー
 サマー
(@サマー)
ゲスト
結合: 18年前
投稿: 51
Topic starter  

for each ( DataTable^ tblAuthors in dsPubs->Tables )
{
 for each (DataRow^ row in tblAuthors->Rows )
 {
// リストビューにデータ表示
(682): listView2->Items->Add(gcnew ListViewItem(row->ItemArray()));
 }
}

↑のコードで結構いいところまでいきましたが、

(682) : error C2064: 0 引数を取り込む関数には評価されません。

のようなエラーがでてしまいます。ItemArray()のかっこの中にはなにか
いれないといけないんでしょうか?


返信引用
サマー
 サマー
(@サマー)
ゲスト
結合: 18年前
投稿: 51
Topic starter  

for each ( DataTable^ tblAuthors in dsPubs->Tables )
{
 for each (DataRow^ row in tblAuthors->Rows )
 {
// リストビューにデータ表示
(682): listView2->Items->Add(gcnew ListViewItem(row->ItemArray()));
 }
}

↑のコードで結構いいところまでいきましたが、

(682) : error C2064: 0 引数を取り込む関数には評価されません。

のようなエラーがでてしまいます。ItemArray()のかっこの中にはなにか
いれないといけないんでしょうか?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

ItemArrayはメソッドではなくプロパティなのでは?
http://msdn2.microsoft.com/ja-jp/library/system.data.datarow.itemarray.aspx

すぐに質問し返してこないで、MSDNを調べてみてください。(基本)


返信引用
サマー
 サマー
(@サマー)
ゲスト
結合: 18年前
投稿: 51
Topic starter  

array< String^ >^ item1 = dynamic_cast<array< String^ >^>(row->ItemArray);
listView2->Items->Add(gcnew ListViewItem(item1));

キャストすることでコンパイルに通るようになりました。
以上でこの質問を閉じます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました