1

プログラミングは初めてですので、できる限りお手伝いしてください!最近、imはC#およびMSアクセスを使用してCRUDウィンドウフォームアプリケーションを実行するように任命されました。

更新機能で、次のいずれかのエラーが発生しましたが、理由がわかりません。データも更新できません。

エラー:ArgumentException未処理でした

入力文字列が正しい形式ではありませんでした。staff_id列に格納できませんでした。予想されるタイプはInt32です。

これが私のコードです:

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;
using AcuzioSapp.AcuzioSecureStore_DatabaseDataSetTableAdapters;

namespace AcuzioSapp
{
    public partial class Update_Client : Form
    {
        private DataRow row;
        private ClientTableAdapter adapter;
        public Update_Client(DataRow row, ClientTableAdapter adapter)
        {
            InitializeComponent();
            this.row = row;
            this.adapter = adapter;
            textBox_id1.Text = Convert.ToString(row["c_id"]);
            textBox_name1.Text = Convert.ToString(row["c_name"]);
            textBox_address1.Text = Convert.ToString(row["c_address"]);
            textBox_cinfo1.Text = Convert.ToString(row["c_contactinfo"]);
            textBox_pinfo1.Text = Convert.ToString(row["profile_info"]);
            textBox_refno1.Text = Convert.ToString(row["c_8digitrefno"]);
            textBox_staffid1.Text = Convert.ToString(row["staff_id"]);
        }

        private void button_close_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void button_update_Click(object sender, EventArgs e)
        {
            row["c_name"] = "textBox_name1";
            row["c_address"] = "textBox_address1";
            row["c_contactinfo"] = "int.Parse(textBox_cinfo1)";
            row["c_8digitrefno"] = "(textBox_pinfo1)";
            row["profile_info"] = "textBox_refno1";
            row["staff_id"] = "int.Parse(textBox_staffid1)";

            adapter.Update(row);
        }
    }
}

ヘルプと説明ありがとうございます。

4

2 に答える 2

0

これは、Accessデータベースで列が整数として宣言されており、その列に文字列値を挿入しようとしているためです。また、定数文字列で列を更新するため、指定したテーブルで適切な値を取得できないと思います。これにより、 TextBox値ではなくtextBox_refno1が列(row["profile_info"] = "textBox_refno1";)に挿入されます。これを試して :profile_info

row["staff_id"] = Convert.ToInt32(textBox_staffid1.Text);

更新: 次のコードをコピーして貼り付けると、問題が発生することはありません。

    private void button_update_Click(object sender, EventArgs e)
    {
        row["c_name"] = textBox_name1.Text;
        row["c_address"] = textBox_address1.Text;
        row["c_contactinfo"] = int.Parse(textBox_cinfo1.Text);
        row["c_8digitrefno"] = textBox_pinfo1.Text;
        row["profile_info"] = textBox_refno1.Text;
        row["staff_id"] = int.Parse(textBox_staffid1.Text);

        adapter.Update(row);

        MessageBox.Show("Data has been updated");
    }

この助けを願っています。

于 2013-01-15T12:48:10.833 に答える
0
        row["c_name"] = textBox_name1.Text;
        row["c_address"] = textBox_address1.Text;
        ...
        int val;
        if(int.TryParse(textBox_staffid1.Text, out val))
        {
             row["staff_id"] = val;
        }

テキストボックス内のテキストが正しい形式ではないと思います。

于 2013-01-15T12:50:14.060 に答える