こんにちわ。最近始めたばかりのプログラム初心者です。
VS2010、C#でデータベースから値をとってきて表に出力させたいです。
下のプログラムを実行するとboufuusetsuなどの変数に入った値が1度入ってしまうとずっと値が入ったままでうまく出力できません。
foreach文でループしてるためループがおわるごと変数を空に(null)にすればよいと考えたのですがうまくできません
また、このプログラムだと1行目だけ、最初のループでの出力がおかしいです。
(if文も多分おかしいです。oldCodeとcodeが同じであれば表の同じ行にデータを出力したいです)
空にするという考えがおかしいのでしょうか?
アドバイスお願いします。
C#
1 using (DataSet ds = whs.GetTestList(tblname)) 2 { 3 if (ds.Tables[tblname].Rows.Count > 0) //??? 4 { 5 6 string oldCode = string.Empty; 7 8 string boufuusetsu = string.Empty; 9 string teion = string.Empty; 10 string shimo = string.Empty; 11 string chakuhyo = string.Empty; 12 string chakusetsu = string.Empty; 13 14 sw.Write("<table border=1>"); 15 sw.Write("<tr><td> </td><td>暴風雪</td>"); 16 sw.Write("<td>低温</td><td>霧</td><td>着雪</td><td>着氷</td></tr>");//表のヘッダー 17 18 foreach (DataRow row in ds.Tables[tblname].Rows) 19 { 20 21 string name = row["area_name"].ToString(); 22 string code = row["area_cd"].ToString(); 23 string alrt = row["alert"].ToString();//番号 24 string alrtcode = row["alert_status_code"].ToString();//発表とか 25 string alrtname = row["alert_short_name"].ToString();//雷、暴風とか 26 27 string mark = string.Empty; 28 29 switch(alrtcode) 30 { 31 case "0"://発表 32 switch(alrt){ 33 case "32": 34 case "33": 35 case "38": 36 mark = "◆"; 37 //sw.Write("◆");//特別警報 38 break; 39 case "02": 40 case "08": 41 mark = "●";//警報 42 break; 43 case "13": 44 case "10": 45 case "27": 46 mark = "▲";//注意報 47 break; 48 } 49 break; 50 51 case "1"://警報から注意報 52 sw.Write("▽"); 53 break; 54 55 case "2"://継続 56 switch(alrt){ 57 case "32": 58 case "38": 59 mark = "◇";//特別警報 60 break; 61 case "02": 62 case "03": 63 case "08": 64 mark = "○";//特別警報 65 break; 66 case "13": 67 case "27": 68 mark = "△";//注意報 69 break; 70 } 71 break; 72 73 case "3"://解除 74 mark = "×"; 75 break; 76 77 case "4"://特別警報から警報 78 mark = "▼"; 79 break; 80 81 case "5"://警報から注意報 82 mark = "▽"; 83 break; 84 85 case null: 86 mark = " "; 87 break; 88 } 89 90 switch(alrtname) 91 { 92 case "暴風雪": 93 case "風雪": 94 boufuusetsu = mark; 95 break; 96 97 98 case "低温": 99 teion = mark; 100 break; 101 case "霜": 102 shimo = mark; 103 break; 104 case "着氷": 105 chakuhyo = mark; 106 break; 107 case "着雪": 108 chakusetsu = mark; 109 break; 110 } 111 112 if (code == oldCode) 113 { 114 115 } 116 else 117 { 118 sw.Write("<tr><td>" + name + "</td><td>" + boufuusetsu + "</td>"); 119 sw.Write("<td>" + teion + "</td>"); 120 sw.Write("<td>" + shimo + "</td>"); 121 sw.Write("<td>" + chakuhyo + "</td>"); 122 sw.Write("<td>" + chakusetsu + "</td></tr>"); 123 } 124 oldCode = code; 125 126 127 } 128 129 boufuusetsu = null; 130 teion = null; 131 shimo = null; 132 chakuhyo = null; 133 chakusetsu = null; 134 sw.Write("</table>"); 135 136 } 137 sw.Close(); 138 139 140 }
回答1件
あなたの回答
tips
プレビュー