数時間の研究の後、私はこれをどのようにコード化すべきかについてはまだ分かりません。ユーザーがdatagridview
の特定の列を記入し、ボタンをクリックすると、データベースを更新したいと考えています。DataGridviewが塗りつぶされているときにデータベースを更新し、ボタンをクリック
いくつかのバインディングがありました。一部はdatatable
で、一部はdataset
です。私はdatabinding
について聞いたことがなく、databinding
クロージャを尊重するために私のすべてのコードを変更することはできません。私はdatatable
についていくつか見てきましたが、それはdataset
と同じですか? (データセットは単にコレクションですか?)。私は現在dataset
を使用していますが、テストしているすべてが機能していません。ここで
は、実際の試験では私のコードです:
public partial class Repair : Form
{
public Repair()
{
InitializeComponent();
SqlConnection maConnexion = new SqlConnection("Server= localhost; Database= Seica_Takaya;Integrated Security = SSPI; ");
maConnexion.Open();
SqlCommand command = maConnexion.CreateCommand();
if (Program.UserType == "admin")
{
command.CommandText = "SELECT * FROM FailOnly";
}
else
{
command.CommandText = "SELECT * FROM FailOnly WHERE ReportingOperator IS NULL";
}
SqlDataAdapter sda = new SqlDataAdapter(command);
DataSet ds = new DataSet();
sda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
maConnexion.Close();
}
private void button2_Click(object sender, EventArgs e)
{
this.Hide();
Main ff = new Main();
ff.Show();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
SqlConnection maConnexion = new SqlConnection("Server= localhost; Database= Seica_Takaya;Integrated Security = SSPI; ");
maConnexion.Open();
string Var1 = textBox1.Text;
SqlCommand command = maConnexion.CreateCommand();
if (Program.UserType == "admin")
{
if (textBox1.Text != "")
{
command.Parameters.AddWithValue("@BoardName", Var1 + "%");
command.Parameters.AddWithValue("@Machine", Var1 + "%");
command.Parameters.AddWithValue("@SerialNum", Var1 + "%");
command.Parameters.AddWithValue("@FComponent", Var1 + "%");
command.CommandText = "SELECT * FROM FailOnly WHERE BoardName LIKE @BoardName OR Machine LIKE @Machine OR SerialNum LIKE @SerialNum OR FComponent LIKE @FComponent";
}
}
else
{
if (textBox1.Text != "")
{
command.Parameters.AddWithValue("@BoardName", Var1 + "%");
command.Parameters.AddWithValue("@Machine", Var1 + "%");
command.Parameters.AddWithValue("@SerialNum", Var1 + "%");
command.Parameters.AddWithValue("@FComponent", Var1 + "%");
command.CommandText = "SELECT * FROM FailOnly WHERE (BoardName LIKE @BoardName OR Machine LIKE @Machine OR SerialNum LIKE @SerialNum OR FComponent LIKE @FComponent) AND ReportingOperator IS NULL ";
}
}
SqlDataAdapter sda = new SqlDataAdapter(command);
DataSet ds = new DataSet();
sda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
maConnexion.Close();
}
private void button1_Click(object sender, EventArgs e)
{
int i = 0;
int var;
var = dataGridView1.Rows.Count;
for (i = 0; i < var; i++)
{
SqlConnection maConnexion = new SqlConnection("Server= localhost; Database= Seica_Takaya;Integrated Security = SSPI; ");
maConnexion.Open();
SqlCommand command = maConnexion.CreateCommand();
command = new SqlCommand("update FailOnly, FailAndPass set [email protected], [email protected], RepairingTime = @RT, [email protected]", maConnexion);
command.Parameters.AddWithValue("@Fault", dataGridView1.Columns[15]);
command.Parameters.AddWithValue("@RD", dataGridView1.Columns[16]);
command.Parameters.AddWithValue("@RT", dataGridView1.Columns[17]);
command.Parameters.AddWithValue("@RO", dataGridView1.Columns[18]);
command.ExecuteNonQuery();
maConnexion.Close();
}
}
}
ありがとうございました!
編集:クリシュナに感謝しています!私のコードで時間を過ごすために彼に感謝します!
を変更しない
変更が動作しませんか?何かエラーが出ますか? – Krishna
System.ArgumentExceptionがあります: 'オブジェクト型System.Windows.Forms.DataGridViewTextBoxColumnおよび別の管理オブジェクトへのリンクはありません':/ –
更新ステートメントは2つのテーブルを使用していますか?この声明は何を意味していますか? 'Update FailOnly、FailAndPass' – Krishna