質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

0回答

1959閲覧

データベースのデータをカレンダーに反映させるにはどうすればよいのでしょうか

pj7577bm60v

総合スコア13

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2020/03/31 08:51

編集2020/03/31 14:30

前提・実現したいこと

データベースにdateカラムのデータを呼び出したときに、その日付のデータをリストボックス(カレンダー)に出力させたい。

イメージ説明

発生している問題・エラーメッセージ

リストボックス1ではなく、3/17などの名前をリストボックスにつけられるのでしょうか? もしくは、dateカラムのデータをintに変換などをして各リストボックスに振り分けることはできるのでしょうか?

該当のソースコード

C#

1 private void button1_Click(object sender, EventArgs e) 2 { 3 var date = new DateTime(); 4 5 cn.ConnectionString = cnstr; 6 cn.Open(); 7 8 cmd.Connection = cn; 9 cmd.CommandType = CommandType.Text; 10 cmd.CommandText = "SELECT * FROM [dbo] . [Table]"; 11 12 rd = cmd.ExecuteReader(); 13 while (rd.Read()) 14 { 15 16 17 name = Convert.ToString(rd["名前"]); 18 date = Convert.ToDateTime(rd["日付"]); 19 20 21 listBox2.Items.Add(name); 22 listBox3.Items.Add(date); 23 24 25 26 27 } 28 rd.Close(); 29 cn.Close(); 30 } 31 32//追記させていただきました。 33using System; 34using System.Collections.Generic; 35using System.ComponentModel; 36using System.Data; 37using System.Drawing; 38using System.Linq; 39using System.Text; 40using System.Threading.Tasks; 41using System.Windows.Forms; 42using System.Data.SqlClient; 43 44namespace WindowsFormsApp4 45{ 46 public partial class Form1 : Form 47 { 48 private SqlConnection cn = new SqlConnection(); 49 private SqlCommand cmd = new SqlCommand(); 50 private SqlDataReader rd; 51 private String cnstr = @"Data Source=(LocalDB)\MSSQLLocalDB;" + @"AttachDbFilename=|DataDirectory|\Schedule2.mdf;" + "Integrated Security = True; Connect Timeout = 30"; 52 private string name = ""; 53 private DateTime date = new DateTime(2000, 1, 1); 54 private string task = ""; 55 56 readonly List<ListBox> listBoxs; 57 58 public Form1() 59 { 60 InitializeComponent(); 61 62 listBoxs = new List<ListBox> 63 { 64 null, 65 listBox1, 66 listBox2, 67 listBox3, 68 listBox4, 69 listBox5, 70 listBox6, 71 listBox7, 72 listBox8, 73 listBox9, 74 listBox10, 75 listBox11, 76 listBox12, 77 listBox13, 78 listBox14 79 }; 80 } 81 82 private void button1_Click(object sender, EventArgs e) 83 { 84 85 cn.ConnectionString = cnstr; 86 cn.Open(); 87 88 cmd.Connection = cn; 89 cmd.CommandType = CommandType.Text; 90 cmd.CommandText = "SELECT * FROM [dbo] . [Table]"; 91 92 rd = cmd.ExecuteReader(); 93 while (rd.Read()) 94 { 95 name = Convert.ToString(rd["名前"]); 96 date = Convert.ToDateTime(rd["日付"]); 97 task = Convert.ToString(rd["タスクネーム"]); 98 99 if (name == "A") 100 { 101 var listBox = listBoxs[ListBoxItems]; 102 //listBox.Items.Add = task; 103 } 104 105 } 106 rd.Close(); 107 cn.Close(); 108 } 109 110 private int ListBoxItems 111 { 112 113 get 114 { 115 //if (date ==3,1 ) return 1; 116 117 return 0; 118 } 119 } 120 } 121}

試したこと

dateカラムデータを変数に代入できたので計算できればと思ったのですが計算方法がうまくいきませんでした。
リストボックスにdate形式の名前をつけることはできるのでしょうか。
よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Community 2019
Version 16.5.0
.NET Framework version 4.8.03752

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/31 09:49 編集

質問には一週間分のコントロールしかないんですが、画面のデザインの仕方から聞いていますか?
pj7577bm60v

2020/03/31 10:42

完成予定は人数の方が増える予定なので一週間1ページで表示させたいと思っています。 画面のデザインのいい方法がありましたらよろしければ教えていただけたらありがたいです。
Zuishin

2020/03/31 10:48

ではリストボックスに日付の名前をつけてはいけません。 表示する一週間の始めの日と終わりの日を求め、それを元にデータベースから範囲内のデータを読み取り、それを振り分けてください。リストボックスは配列に入れるのが易しいのではないかと思います。
Zuishin

2020/03/31 10:52

例えば始めの日が 3/1 であった場合、最初のリストボックスにな 3/1 のデータを、次のリストボックスには 3/2 のデータを入れます。具体的にはデータベースから取得した日付から 3/1 を引いたものを日数に直し、0 になるものを最初に、1 になるものを次に入れます。
Zuishin

2020/03/31 10:53

それができるようになったらデータバインディングというもう少し保守性の高い方法もあります。通常はこちらの方法を選択します。
pj7577bm60v

2020/03/31 14:34

追記させていただきました。 コメント部分になっている場所がエラーになってしまい listboxの配列化がうまくいってないのと、if文でdateの比較がintとの比較になってしまいうまくいきません。 方向性はあってるのでしょうか?
pj7577bm60v

2020/04/01 09:43

違います。HTMLとJavaScriptは現在の段階で使用する予定はありません。 現在作成しようとしているのはローカルデータベースを使用してローカルの状態で 使用できる予定表を作成するつもりでした。
pj7577bm60v

2020/04/01 09:48

自分のレベルが低くせっかく回答いただいても解決できていない状態にあるため基礎を身に着ける為の質問に変更させていただこうと思います。 改めて質問させていただきたいのでよろしければ回答いただければ幸いです。
Zuishin

2020/04/01 10:40

この質問はこのまま、わからないところを新しく質問してください。私は回答するとは限りませんが、適切な具体性を持った質問であれば誰か回答すると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問