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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

3708閲覧

Windowsフォーム入力値をinsertする画面中ですが、SQLで落ちてしまいます

yamaguti

総合スコア185

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

0クリップ

投稿2017/05/18 12:01

お世話になります。
画面から入力値を受取り、insertする処理を実装しております。
エラーの解消方法が分からないので、質問させて頂きます。
ご教示のほどよろしくお願い致します

エラー内容:228行目
cmd.Parameters.Add(" 登録者ID", System.Data.DbType.String);

System.ArgumentOutOfRangeException: 'インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。'

C#+SQL

1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10using System.Globalization; 11using System.Data.SQLite; 12 13namespace 基幹システム.給料管理 14{ 15 public partial class kyuyotouroku : Form 16 { 17 18 public kyuyotouroku() 19 { 20 InitializeComponent(); 21 22 } 23 24 private void label2_Click(object sender, EventArgs e) 25 { 26 27 } 28 29 private void splitContainer1_Panel1_Paint(object sender, PaintEventArgs e) 30 { 31 32 } 33 34 private void kyuyotouroku_Load(object sender, EventArgs e) 35 { 36 //画面ロード時に初期値を当年で設定 37 var TounenY = DateTime.Now; 38 comboYD.Text = TounenY.Year.ToString(); 39 40 var TougetuM = DateTime.Now; 41 comboM.Text = TougetuM.Month.ToString(); 42 43 #region タブインデックスがずれたので設定 44 this.textsikyou.TabIndex = 1; 45 this.textkouzyoSUM.TabIndex = 2; 46 this.textsasihikiSUM.TabIndex = 3; 47 this.textsonotakou.TabIndex = 4; 48 this.textsyotoku.TabIndex = 5; 49 this.textkenko.TabIndex = 6; 50 this.textkousei.TabIndex = 7; 51 this.textkoyou.TabIndex = 8; 52 #endregion 53 } 54 55 private void btnback_Click(object sender, EventArgs e) 56 { 57 //給与管理画面を開く 58 基幹システム.給料管理.kyuyo kyuyo = new 給料管理.kyuyo(); 59 60 kyuyo.Show(); 61 this.Visible = false; 62 } 63 64 private void textsikyou_KeyDown(object sender, KeyEventArgs e) 65 { 66 } 67 #region 金額を3桁で区切る処理 68 private void textsikyou_Validated(object sender, EventArgs e) 69 { 70 //支給金合計 71 if (textsikyou.Text == "") 72 { 73 74 } 75 else 76 { 77 var str = textsikyou.Text; 78 var a = string.Format("{0:#,##0}", Int32.Parse(str)); 79 textsikyou.Text = a; 80 } 81 } 82 83 private void textkouzyoSUM_Validated(object sender, EventArgs e) 84 { 85 //控除金合計 86 if (textkouzyoSUM.Text == "") 87 { 88 89 } 90 else 91 { 92 var str1 = textkouzyoSUM.Text; 93 var a = string.Format("{0:#,##0}", Int32.Parse(str1)); 94 textkouzyoSUM.Text = a; 95 } 96 } 97 98 private void textsasihikiSUM_Validated(object sender, EventArgs e) 99 { 100 //差引支給額 101 if (textsasihikiSUM.Text == "") 102 { 103 104 } 105 else 106 { 107 var str2 = textsasihikiSUM.Text; 108 var a = string.Format("{0:#,##0}", Int32.Parse(str2)); 109 textsasihikiSUM.Text = a; 110 } 111 } 112 113 private void textsonotakou_Validated(object sender, EventArgs e) 114 { 115 //その他・控除 116 var str3 = textsonotakou.Text; 117 var a = string.Format("{0:#,##0}", Int32.Parse(str3)); 118 textsonotakou.Text = a; 119 } 120 121 private void textsyotoku_Validated(object sender, EventArgs e) 122 { 123 //所得税 124 var str4 = textsyotoku.Text; 125 var a = string.Format("{0:#,##0}", Int32.Parse(str4)); 126 textsyotoku.Text = a; 127 } 128 129 private void textkenko_Validated(object sender, EventArgs e) 130 { 131 //健康保険 132 var str5 = textkenko.Text; 133 var a = string.Format("{0:#,##0}", Int32.Parse(str5)); 134 textkenko.Text = a; 135 } 136 137 private void textkousei_Validated(object sender, EventArgs e) 138 { 139 //厚生年金 140 var str6 = textkousei.Text; 141 var a = string.Format("{0:#,##0}", Int32.Parse(str6)); 142 textkousei.Text = a; 143 } 144 145 private void textkoyou_Validated(object sender, EventArgs e) 146 { 147 //雇用保険 148 var str7 = textkoyou.Text; 149 var a = string.Format("{0:#,##0}", Int32.Parse(str7)); 150 textkoyou.Text = a; 151 } 152 153 #endregion 154 155 private void btntouroku_Click(object sender, EventArgs e) 156 { 157 #region テキストボックスを空にする 158 textsikyou.ResetText(); 159 textkouzyoSUM.ResetText(); 160 textsasihikiSUM.ResetText(); 161 textsyotoku.ResetText(); 162 textkenko.ResetText(); 163 textkousei.ResetText(); 164 textkoyou.ResetText(); 165 textsonotakou.ResetText(); 166 #endregion 167 168 } 169 170 private void btnclear_Click(object sender, EventArgs e) 171 { 172 string dbpath = Application.StartupPath + @"\kabukanri.db"; 173 using (SQLiteConnection con = new SQLiteConnection("Data Source=" + dbpath)) 174 { 175 con.Open(); 176 DataTable datatable = new DataTable(); 177 178 179 using (SQLiteTransaction trans = con.BeginTransaction()) 180 { 181 //給料テーブルinsert用 182 StringBuilder sql = new StringBuilder(); 183 SQLiteCommand cmd = con.CreateCommand(); 184 185 #region 給料テーブル insert文 186 sql.AppendLine("insert into 給料テーブル "); 187 sql.AppendLine("( "); 188 sql.AppendLine(" , 登録者ID"); 189 sql.AppendLine(" , 年度"); 190 sql.AppendLine(" , 月度"); 191 sql.AppendLine(" , 支給金合計"); 192 sql.AppendLine(" , 控除金合計"); 193 sql.AppendLine(" , 差引支給額"); 194 sql.AppendLine(" , 所得税"); 195 sql.AppendLine(" , 健康保険"); 196 sql.AppendLine(" , 厚生年金"); 197 sql.AppendLine(" , 雇用保険"); 198 sql.AppendLine(" , その他税・控除等"); 199 sql.AppendLine(" , DEL_FLG )"); 200 sql.AppendLine("VALUES ( "); 201 sql.AppendLine(" , @登録者ID"); 202 sql.AppendLine(" , @年度"); 203 sql.AppendLine(" , @月度"); 204 sql.AppendLine(" , @支給金合計"); 205 sql.AppendLine(" , @控除金合計"); 206 sql.AppendLine(" , @差引支給額"); 207 sql.AppendLine(" , @所得税"); 208 sql.AppendLine(" , @健康保険"); 209 sql.AppendLine(" , @厚生年金"); 210 sql.AppendLine(" , @雇用保険"); 211 sql.AppendLine(" , @その他税・控除等"); 212 sql.AppendLine(" , 0"); 213 sql.AppendLine(") "); 214 215 //cmd.Parameters.Add("ID", System.Data.DbType.String); 216 cmd.Parameters.Add(" 登録者ID", System.Data.DbType.String); 217 cmd.Parameters.Add(" 年度", System.Data.DbType.String); 218 cmd.Parameters.Add(" 月度", System.Data.DbType.String); 219 cmd.Parameters.Add(" 支給金合計", System.Data.DbType.String); 220 cmd.Parameters.Add(" 控除金合計", System.Data.DbType.String); 221 cmd.Parameters.Add(" 差引支給額", System.Data.DbType.String); 222 cmd.Parameters.Add(" 所得税", System.Data.DbType.String); 223 cmd.Parameters.Add(" 健康保険", System.Data.DbType.String); 224 cmd.Parameters.Add(" 厚生年金", System.Data.DbType.String); 225 cmd.Parameters.Add(" 雇用保険", System.Data.DbType.String); 226 cmd.Parameters.Add(" その他税・控除等", System.Data.DbType.String); 227 228 cmd.Parameters["登録者ID"].Value = texttouroku.Text; 229 cmd.Parameters["年度"].Value = comboYD.Text; 230 cmd.Parameters["月度"].Value = textkouzyoSUM.Text; 231 cmd.Parameters["支給金合計"].Value = textsasihikiSUM.Text; 232 cmd.Parameters["控除金合計"].Value = textkouzyoSUM.Text; 233 cmd.Parameters["差引支給額"].Value = textsasihikiSUM.Text; 234 cmd.Parameters["所得税"].Value = textsyotoku.Text; 235 cmd.Parameters["健康保険"].Value = textkenko.Text; 236 cmd.Parameters["厚生年金"].Value = textkousei.Text; 237 cmd.Parameters["雇用保険"].Value = textkoyou.Text; 238 cmd.Parameters["その他税・控除等"].Value = textsonotakou.Text; 239 240 cmd.CommandText = sql.ToString(); 241 cmd.ExecuteNonQuery(); 242 trans.Commit(); 243 MessageBox.Show("登録が完了しました。"); 244 245 246 #endregion 247 } 248 } 249 } 250 } 251} 252 253

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

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

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

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

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

guest

回答1

0

ベストアンサー

登録者IDの前についているスペースが邪魔だからです。
" 登録者ID" で登録したものを "登録者ID" で参照しているのが問題です。

後、質問とは関係ないですが以下の部分にもちょっとした間違いがあるのに気づきました。

C#

1 sql.AppendLine("insert into 給料テーブル "); 2 sql.AppendLine("( "); 3 sql.AppendLine(" , 登録者ID"); // 「,」が余分です。

投稿2017/05/18 14:01

toydev

総合スコア297

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問