まず、このサイトは過去2〜3週間で大きな助けになりました。さて、私はWindowsフォームのアプリケーションをC#でフィルタリングのためのテキストボックス、リストビューと2つのテキストボックスと2つのボタンを1つの新しい在庫を追加すると1つを更新するために書いている。SQLCEを更新すると、列のデータ全体が変更されます。C#
アイデアは、プログラムを開いてすべての在庫を表示し、編集する項目を選択し、2つのテキストボックスに値をドロップします。2つのテキストボックスに変更して保存するか、新しい在庫アイテムを追加できます。
私はSQLCEデータベースを更新するためにいくつかのコードを手に入れましたが、うまくいきましたが、私はこのコードを別のフォームで使用しようとしたときに在庫リストを更新しようとしました。正しく。選択された行の代わりに列全体が更新されます。
私はゼロから書いてみましたし、作業コードもコピーしていましたが、両方とも同じエラーが出ます。ここで私が使用しているコード、株式は全体のコードを投稿して申し訳ありませんが誤っ
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 System.Data.SqlServerCe;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SqlCeConnection cn = new SqlCeConnection("Data source = c:\\Clients.sdf");
string QTYinStock;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
cn.Open();
ReadStock(new SqlCeCommand("SELECT * FROM Stock ORDER BY Cartridge_Code", cn));
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.ExitThread();
}
}
private void button2_Click(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
//Check the QTY
int QTY;
bool isInteger = int.TryParse(textBox2.Text, out QTY);
if (isInteger)
{
SqlCeCommand cm = new SqlCeCommand("INSERT INTO Stock(QTY_in_Stock, Cartridge_Code) VALUES(@QTY_in_Stock, @Cartridge_Code)", cn);
cm.Parameters.AddWithValue("@QTY_in_Stock", textBox2.Text);
cm.Parameters.AddWithValue("@Cartridge_Code", textBox3.Text);
try
{
int affectedRows = cm.ExecuteNonQuery();
if (affectedRows > 0)
{
MessageBox.Show("Insert Successfull!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
ReadStock(new SqlCeCommand("SELECT * FROM Stock ORDER BY Cartridge_Code", cn));
}
else
{
MessageBox.Show("Insert Failed!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("No data inserted! The QTY is not valid!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show("Please ensure all details are correct and check the checkbox");
}
}
private void Texboxes_TextChanged(object sender, EventArgs e)
{
if (textBox2.Text != "" && textBox3.Text != "")
{
button1.Enabled = true;
button2.Enabled = true;
}
else
{
button1.Enabled = false;
button2.Enabled = false;
}
}
public void ReadStock(SqlCeCommand cm)
{
listView1.Items.Clear();
SqlCeDataReader dr3 = cm.ExecuteReader();
while (dr3.Read())
{
ListViewItem it3 = new ListViewItem(dr3["QTY_in_Stock"].ToString());
it3.SubItems.Add(dr3["Cartridge_Code"].ToString());
listView1.Items.Add(it3);
}
dr3.Close();
dr3.Dispose();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
ReadStock(new SqlCeCommand("SELECT * FROM Stock WHERE Cartridge_Code LIKE '%" + textBox1.Text + "%' ORDER BY Cartridge_Code", cn));
}
private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
int QTY;
bool isInteger = int.TryParse(textBox2.Text, out QTY);
if (isInteger)
{
SqlCeCommand cm = new SqlCeCommand("UPDATE Stock SET QTY_in_Stock = @QTY_in_Stock, Cartridge_Code = @Cartridge_Code WHERE QTY_in_Stock = '" + QTYinStock +"'", cn);
cm.Parameters.AddWithValue("@QTY_in_Stock", textBox2.Text);
cm.Parameters.AddWithValue("@Cartridge_Code", textBox3.Text);
try
{
cm.ExecuteNonQuery();
ReadStock(new SqlCeCommand("SELECT * FROM Stock ORDER BY Cartridge_Code", cn));
textBox2.Text = textBox3.Text = "";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
checkBox1.Checked = false;
}
else
{
MessageBox.Show("The QTY Is Not Valid", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show("Please ensure all Data is correct and checkbox is Checked");
}
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
QTYinStock = textBox2.Text = listView1.SelectedItems[0].Text;
textBox3.Text = listView1.SelectedItems[0].SubItems[1].Text;
}
else
{
textBox2.Text = textBox3.Text = "";
}
}
}
}
をアップロードし、私はそのきちんとコーディングされていない知っていた場合、その2つのだけのテキストボックスからの値からデータベース内の2つのフィールドを更新するためですこれは構文エラーだけであれば、私は約1ヶ月間コーディングしてきました。私はこれをほぼ一日眺めていたので、それを指摘してください。感謝。