0

良い一日!

私はC#が初めてです。

Windows フォームに DataSet があり、DataSet にレコードを追加しました。次に、 TableAdapter.Update(MyTable) (RowState は追加モードです) を呼び出します。変更が行われ、SQL MyTable にバインドされた DataGridView で確認できます。アプリケーションを閉じて再起動すると、追加されたレコードが表示されます。

  private void button1_Click(object sender, EventArgs e)
    {
        DimaeSQLDS dsAddToDima = new DimaeSQLDS();

        using (DimaeSQLDSTableAdapters.OrganizationsTableAdapter orgAdapter = new DimaeSQLDSTableAdapters.OrganizationsTableAdapter())
        {
            orgAdapter.Fill(dsAddToDima.Organizations);
            DimaeSQLDS.OrganizationsRow organizationsRow = dsAddToDima.Organizations.NewOrganizationsRow();
            organizationsRow.Address = tbINN.Text;
            organizationsRow.OrgName = tbOrgName.Text;
            organizationsRow.UrFiz = 0;
            dsAddToDima.Organizations.Rows.Add(organizationsRow); //adds row to DataSet      
            this.Validate();
            orgAdapter.Update(dsAddToDima.Organizations);
        }

        this.Close();
    }

今私の問題です:

サーバー エクスプローラー -> MyTable (レコードを追加した場所) -> [テーブル データの表示] を右クリックすると、テーブルにレコードが追加されていないことがわかります。次に、アプリケーションを再度開始します... MyTable を調べた後、新しく追加したレコードが削除されました。

この魔法が理解できない!私を助けてください!

!!!!アップデート!!!!!

これが私の最初のフォームです。親フォーム

namespace DimaeApplication
{
    public partial class fOrganizations: Form
    {

        #region variables
        fAddOrganization addOrganization;
        fContainer container;
        #endregion

        public fOrganizations()
        {
            InitializeComponent();
        }

        private void fOrganizations_Load(object sender, EventArgs e)
        {            
            // TODO: This line of code loads data into the 'dimaeSQLDS.Organizations' table. You can move, or remove it, as needed.
            this.organizationsTableAdapter.Fill(this.dimaeSQLDS.Organizations);
        }

        public void ReloadBindigs(object sender)
        {

            if (this.tbSearchOrganization.Text == string.Empty)
                this.organizationsTableAdapter.Fill(this.dimaeSQLDS.Organizations);
            else
                try
                {
                    string searchParam = "%" + this.tbSearchOrganization.Text + "%";
                    this.organizationsTableAdapter.FillBy(this.dimaeSQLDS.Organizations, searchParam);
                }
                catch (System.Exception ex)
                {
                    System.Windows.Forms.MessageBox.Show(ex.Message);
                }

        }



        private void tsbCreateOrg_Click(object sender, EventArgs e)
        {
            if (addOrganization == null || addOrganization.IsDisposed)
            {

                addOrganization = new fAddOrganization();
                addOrganization.MdiParent = container ;
                addOrganization.Show();
            }
        }

    }
}

私の第二形態。子。ここにレコードを追加します

namespace DimaeApplication
{
    public partial class fAddOrganization : Form
    {
        public fAddOrganization()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DimaeSQLDS dsAddToDima = new DimaeSQLDS();

        using (DimaeSQLDSTableAdapters.OrganizationsTableAdapter orgAdapter = new DimaeSQLDSTableAdapters.OrganizationsTableAdapter())
        {
            orgAdapter.Fill(dsAddToDima.Organizations);
            DimaeSQLDS.OrganizationsRow organizationsRow = dsAddToDima.Organizations.NewOrganizationsRow();
            organizationsRow.Address = tbINN.Text;
            organizationsRow.OrgName = tbOrgName.Text;
            organizationsRow.UrFiz = 0;
            dsAddToDima.Organizations.Rows.Add(organizationsRow); //adds row to DataSet      
            this.Validate();
            orgAdapter.Update(dsAddToDima.Organizations);
        }



            this.Close();
        }

        private void fAddOrganization_FormClosed(object sender, FormClosedEventArgs e)
        {
            fOrganizations org = new fOrganizations();           
            org.ReloadBindigs(org);
        }      
    }
}

フォームごとにコードを生成する必要があるかどうか教えてください。

とにかくありがとうございました!!

4

2 に答える 2

0

切断された DataSet を使用しているようです。次のことを試してください。


Organizations table = new DimaeSQLDS.Organizations();
using(OrganizationsTableAdapter orgAdapter = new DimaeApplication.DimaeSQLDSTableAdapters.OrganizationsTableAdapter())
{
    orgAdapter.Fill(table);
    DimaeSQLDS.OrganizationsRow organizationsRow = table.NewOrganizationsRow();
    organizationsRow.Address = tbINN.Text;            
    organizationsRow.OrgName = tbOrgName.Text;           
    dsAddToDima.Organizations.Rows.Add(organizationsRow); //adds row to DataSet
    orgAdapter.Update(dsAddToDima.Organizations);
}

Fill(テーブル)は重要な部分です。テーブルが空の場合でも、データベースへの変更追跡が開始されます。

于 2013-04-10T10:32:42.403 に答える