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

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

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

datasetのTableメンバーの切り替えを変数の様にした

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

■85156 / inTopicNo.1)  datasetのTableメンバーの切り替えを変数の様にした
  
□投稿者/ paku (1回)-(2017/09/15(Fri) 12:03:25)

分類:[C#] 

Windows7、Visual Studio2010、.NET Framework ver4.6

お世話になります。
c#を初めて2〜3週間なので何を言っているのか分からない時もあると思いますが、お願いします。
現在、Windowsフォームアプリを作っていまして、データグリッドビューにて入力した値で集計や
グラフを出すアプリを作っています。
その際に、datatableの操作を行うのですが、うまく行きません。
具体的に描くと

DataRow dr = dataTable1.NewRow();

この”dataTable1”の部分をその都度変更したいのですが、この部分を変数の様に条件により変えることは
出来ないのでしょうか?

条件分岐で

var  table = this.dataTable1

や

var table = this.dataTable2

などとやり、

DataRow dr = table.NewRow();

などやったのですがエラーでした。
何か方法があれば教えて下さい。

引用返信 編集キー/
■85157 / inTopicNo.2)  Re[1]: datasetのTableメンバーの切り替えを変数の様にした
□投稿者/ WebSurfer (1304回)-(2017/09/15(Fri) 12:30:38)
No85156 (paku さん) に返信

エラーになるというので実際に以下のコードで試してみましたが問題ありませんが?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace UpdateSingleTableWalkthroug
{
    public partial class Form15 : Form
    {
        private NorthwindDataSet.OrdersDataTable table1;
        private NorthwindDataSet.CustomersDataTable table2;
        
        public Form15()
        {
            InitializeComponent();

            this.table1 = new NorthwindDataSet.OrdersDataTable();
            this.table2 = new NorthwindDataSet.CustomersDataTable();

            DataTable table = new DataTable();

            table = this.table1;
            DataRow row = table.NewRow();

            table = this.table2;
            row = table.NewRow();
        }
    }
}

やり方の問題では? ちなみに、OrdersDataTable と CustomersDataTable は Visual
Studio のデータソース構成ウィザードで作った型付 DataTable ですが、基本的に普通
の DataTable と同じです。

普通、DataGridView を使う Windows Forms アプリ上記のようなことはしないと思うの
ですが、そもそものやりたいことは何でしょう?

部分的なところの質問ではなく、全滝的なシナリオややりたいことを書いてもらえると、
こうした方が良いとかの提案が出てくるかもしれません。

引用返信 編集キー/
■85159 / inTopicNo.3)  Re[1]: datasetのTableメンバーの切り替えを変数の様にした
□投稿者/ WebSurfer (1305回)-(2017/09/15(Fri) 12:39:43)
No85156 (paku さん) に返信

【追伸1】

上のコードで、DataTable table = new DataTable(); は DataTable table; だけでいいです。
余計なコードが混ざってしまいました。分かっているとは思いますが念のため。

【追伸2】

どのような構造のアプリを作っているのか分かりませんが、できれば一度 Visual Studio の
ウィザードを使って定番の構成のアプリを作ってみてはいかがでしょう?

LocalDB か SQL Server Express を使ってとりあえず作ってみて、ウィザードが自動生成する
コードを見れば今後の開発の参考になると思います。

以下のチュートリアル、

チュートリアル : データベースへのデータの保存 (単一テーブル)
https://msdn.microsoft.com/ja-jp/library/0f92s97z(v=vs.120).aspx

10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688

・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet +
TableAdapter を作って、それを利用してアプリを作ると、以下のページの図のような構造の
アプリが、ほとんど自分でコードを書くこと無しに作れます。

Windows フォーム アプリケーションでのデータへの接続
https://msdn.microsoft.com/ja-jp/library/wxt2cwcc(v=vs.120).aspx

操作に慣れると 10 分もかからず作れるはずです。今回のような問題に悩むことはなくなり、
開発工数は激減するはずです。保守工数も減るはずです。お試しください。

引用返信 編集キー/
■85160 / inTopicNo.4)  Re[2]: datasetのTableメンバーの切り替えを変数の様にした
□投稿者/ paku (2回)-(2017/09/15(Fri) 12:54:57)
ご指導ありがとうございます。
会社でやってくれという話があり、急遽勉強しながら作っている次第でこの様な事になってしまいました。

シナリオを書かずに申し訳ありませんでした。
まだ始めたばかりで、どう説明して良いか難しいのですが聞いて下さい。

インスタンスを作って、やるわけではなく、データグリッドビューのフォームひとつからデータソースとデータメンバーを指定して
xmlのデータを読み込み表示する内容を切り替えようと思っています。
その際に、指定したデータテーブル名の中にデータが入っていない時、先ほどのプログラムで行を追加して日付を記載したかったのです。
しかし、エラーとなってしまったので、質問させて頂きました。

会社のパソコンなのですがコードもコピー出来ず手打ちなので、説明だけなのですが、申し訳ありません。
引用返信 編集キー/
■85163 / inTopicNo.5)  Re[3]: datasetのTableメンバーの切り替えを変数の様にした
□投稿者/ WebSurfer (1306回)-(2017/09/15(Fri) 14:57:33)
No85160 (paku さん) に返信

まずは、最初の質問に戻って、質問者さんのコードと私がアップしてコードを見比べて、どこが違う
のか、何故質問者さんのコードではエラーになるかを考えてみませんか?

私が先走って質問とは直接関係ないことをいろいろ書いてしまって、その点すみませんでしたが、と
にかく最初の質問をクリアにしましょう。
引用返信 編集キー/
■85261 / inTopicNo.6)  Re[3]: datasetのTableメンバーの切り替えを変数の様にした
□投稿者/ イーピン (2回)-(2017/09/27(Wed) 14:16:23)
エラーの内容は何でしょうか?
例えば、System.NullReferenceException
(オブジェクト参照がオブジェクト インスタンスに設定されていません。)
引用返信 編集キー/
■85267 / inTopicNo.7)  datasetのTableメンバーの切り替えを変数の様にした
□投稿者/ ぶなっぷ (128回)-(2017/09/28(Thu) 13:55:11)
2017/09/28(Thu) 13:55:59 編集(投稿者)
実は、たったこれだけの話?
なのかなとも読めたのでresしてみます。
外れてたら失礼。

void Func(DataTable Table)
{
}
と、メソッド化しておいた上で、

if(IsTbl1)
{
   Func(dataTable1);
}
else if(IsTbl2)
{
   Func(dataTable2);
}

と呼び出す。

引用返信 編集キー/
■85268 / inTopicNo.8)  Re[4]: datasetのTableメンバーの切り替えを変数の様にした
□投稿者/ ぶなっぷ (129回)-(2017/09/28(Thu) 13:56:09)
実は、たったこれだけの話?
なのかなとも読めたのでresしてみます。
外れてたら失礼。

void Func(DataTable)
{
}
と、メソッド化しておいた上で、

if(IsTbl1)
{
   Func(dataTable1);
}
else if(IsTbl2)
{
   Func(dataTable1);
}

と呼び出す。

引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ