0 امتیاز

با سلام خدمت همه دوستان

من خواستم که یکی از جداول دیتابیس را بروزرسانی کنم و از اکسس هم استفاده می کنم برای دیتابیس. برای این کار روشهایی را که در سایت گفته شده بود را امتحان کردم هم روش متصل و هم روش غیر متصل. اما جواب نمیده و پیغام خطا میده.

وقتی از روش غیر متصل استفاده می کنم به خط

int result = adapter.Update(dataset, "Group_Project_Persons");

پیغام زیر را میده.

System.InvalidOperationException: 'Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.'

و وقتی هم که از روش متصل استفاده می کنم هیچ خطایی نمیده ولی بروزرسانی نمیکنه. یعنی در خط زیر مقدار result6 برابر صفر هست.

int result6 = cmds4.ExecuteNonQuery();

کد مربوط به روش غیر متصل:

 

OleDbConnection connection = new OleDbConnection(ConnectionString1);

                OleDbCommand cmds1 = new OleDbCommand();
                cmds1.CommandText = "Select * From Group_Project_Persons Where Meli=@Meli1";
                cmds1.Connection = connection;
                cmds1.Parameters.AddWithValue("@Meli1", Meli.Text);
                OleDbDataReader reader;
                connection.Open();
                reader = cmds1.ExecuteReader();
                int reg;
                if (reader.Read())
                {
                    connection.Close();
                    reg = 0;
                    DialogResult result1 = MessageBox.Show("فردی با کد ملی وارد شده در بانک اطلاعات وجود دارد آیا تغییرات را اعمال می کنید؟", "اطلاعات مشابه", MessageBoxButtons.YesNo);
                    if (result1 == DialogResult.Yes)
                    {
                        ///////////////
                        OleDbConnection conn = new OleDbConnection();
                        conn.ConnectionString = ConnectionString1;
                        OleDbCommand command = new OleDbCommand();
                        //command.CommandText = "SELECT * FROM TABLE1";
                        //command.Connection = conn;
                        conn.Open();
                        OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM TABLE1",conn);
                        //adapter.SelectCommand = command;
                        DataSet dataset = new DataSet();
                        adapter.Fill(dataset, "Group_Project_Persons");

                        foreach(DataRow row in dataset.Tables["TABLE1"].Rows)
                        {
                            if(row["Meli"].ToString() == Meli.Text.ToString())
                            {
                                MessageBox.Show(row["Meli"].ToString() + "/" + Meli.Text.ToString());
                                MessageBox.Show(dataset.Tables["Group_Project_Persons"].Rows[1].ItemArray[9].ToString());
                                row["FName"] = FName.Text;
                                row["LName"] = LName.Text;
                                row["Father"] = Father.Text;
                                row["BirthD"] = BirthD.Text;
                                row["ShSh"] = ShSh.Text;
                                row["Education"] = Education.Text;
                                row["Edu_Field"] = Edu_Field.Text;
                                row["Provience_Live"] = Provience_Live.Text;
                                row["City_Live"] = City_Live.Text;
                                row["A"] = A.Text;
                                row["B"] = B.Text;
                                row["C"] = C.Text;
                                row["D"] = D.Text;
                                //row["Meli"] = Meli.Text;
                            }
                        }

                        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
                        try
                        {
                            int result = adapter.Update(dataset, "Group_Project_Persons");

                            if (result > 0)
                                MessageBox.Show("Update Successful.");
                            else
                                MessageBox.Show("Update Failed.");
                        }
                        catch (OleDbException ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
                }

 

ممنون از راهنماییتون

کد مربوط به روش متصل:

 

OleDbConnection connection = new OleDbConnection(ConnectionString1);

                OleDbCommand cmds1 = new OleDbCommand();
                cmds1.CommandText = "Select * From Group_Project_Persons Where Meli=@Meli1";
                cmds1.Connection = connection;
                cmds1.Parameters.AddWithValue("@Meli1", Meli.Text);
                OleDbDataReader reader;
                connection.Open();
                reader = cmds1.ExecuteReader();
                int reg;
                if (reader.Read())
                {
                    connection.Close();
                    reg = 0;
                    DialogResult result1 = MessageBox.Show("فردی با کد ملی وارد شده در بانک اطلاعات وجود دارد آیا تغییرات را اعمال می کنید؟", "اطلاعات مشابه", MessageBoxButtons.YesNo);
                    if (result1 == DialogResult.Yes)
                    {
                        ///////////////
                        OleDbConnection connection1 = new OleDbConnection(ConnectionString1);
                        OleDbCommand cmds4 = new OleDbCommand();
                        cmds4.Connection = connection1;
                        cmds4.CommandType = CommandType.Text;
                        cmds4.CommandText = "UPDATE Group_Project_Persons SET " +
                        "FName=@FName, LName=@LName, Father=@Father, BirthD=@BirthD, ShSh=@ShSh, Education=@Education," +
                        "Edu_Field=@Edu_Field, Provience_Live=@Provience_Live, City_Live=@City_Live, A=@A," +
                        "B=@B, C=@C, D=@DWHERE Meli=@Meli1";
                        cmds4.Parameters.Clear();
                        cmds4.Parameters.AddWithValue("@FName", FName.Text.ToString());
                        cmds4.Parameters.AddWithValue("@LName", LName.Text.ToString());
                        cmds4.Parameters.AddWithValue("@Father", Father.Text.ToString());
                        cmds4.Parameters.AddWithValue("@BirthD", BirthD.Text.ToString());
                        cmds4.Parameters.AddWithValue("@ShSh", ShSh.Text.ToString());
                        cmds4.Parameters.AddWithValue("@Education", Education.Text.ToString());
                        cmds4.Parameters.AddWithValue("@Edu_Field", Edu_Field.Text.ToString());
                        cmds4.Parameters.AddWithValue("@Provience_Live", Provience_Live.Text.ToString());
                        cmds4.Parameters.AddWithValue("@City_Live", City_Live.Text.ToString());
                        cmds4.Parameters.AddWithValue("@Meli1", Meli.Text.ToString());
                        cmds4.Parameters.AddWithValue("@A", A.Text.ToString());
                        cmds4.Parameters.AddWithValue("@B", B.Text.ToString());
                        cmds4.Parameters.AddWithValue("@C", C.Text.ToString());
                        cmds4.Parameters.AddWithValue("@D", D.Text.ToString());
                        connection1.Open();
                        int result6 = cmds4.ExecuteNonQuery();
                        connection1.Close();
                        MessageBox.Show(result6.ToString());
                        if (result6 > 0)
                        {
                            reg = 1;
                            MessageBox.Show(".تغییرات وارد شده با موفقیت در تاریخ" + DateIssue.Text + " ثبت شد");
                        }
                        else
                        {
                            reg = 0;
                            MessageBox.Show(".تغییر اطلاعات با مشکل مواجه شد");
                        }

                    }
                }

 

ویرایش شده توسط
توسط (245 امتیاز) 1 14

1 پاسخ

0 امتیاز

سلام

 

دوست عزیز تو روش دوم رو تست کردم ایرادی نداشت تو سیستم شما چه خطایی میده

پروژه رو بزارید همینجا برتون حل کنم یا با این روش انجام بدید

باتن 2 کار ثبت و و یرایش رو بر عهده داره

وقتی برای ویرایش باتن 3 روز زدی  باتن 2 اماده دریافت دستور اپدیت میشه

 private void button2_Click(object sender, EventArgs e)
        {
            if (!lblmoz.Visible && !lblmatn.Visible && !lbladdress.Visible && !lbltoz.Visible)
            {
                if (EditID == 0)
                {
                    OleDbConnection conn = new OleDbConnection(conected);
                    OleDbCommand cmd = new OleDbCommand("Insert Into tbladd (nam,matn,address,toz)Values(@1,@2,@3,@4) ", conn);
                    cmd.Parameters.AddWithValue("@1", txtmoz.Text);
                    cmd.Parameters.AddWithValue("@2", txtmatn.Text);
                    cmd.Parameters.AddWithValue("@3", txtaddress.Text);
                    cmd.Parameters.AddWithValue("@4", txttoz.Text);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }

                else
                {
                    OleDbConnection conn = new OleDbConnection(conected);
                    OleDbCommand cmd = new OleDbCommand("Update  tbladd Set nam=@1,matn=@2,address=@3,toz=@4 Where ID= " + EditID, conn);
                    cmd.Parameters.AddWithValue("@1", txtmoz.Text);
                    cmd.Parameters.AddWithValue("@2", txtmatn.Text);
                    cmd.Parameters.AddWithValue("@3", txtaddress.Text);
                    cmd.Parameters.AddWithValue("@4", txttoz.Text);
                    conn.Open();
                   int gg= cmd.ExecuteNonQuery();
                    conn.Close();
                    if (gg > 0)
                    {
                        EditID = 1;
                        MessageBox.Show(".تغییرات وارد شده با موفقیت در تاریخ" +DateTime.Now+ " ثبت شد");
                    }
                    else
                    {
                        EditID = 0;
                        MessageBox.Show(".تغییر اطلاعات با مشکل مواجه شد");
                    }
                }
                cleattxt();
                BindGird();



            }
            else
            {

                MessageBox.Show("مقادیر را کامل کنید");
            }

        }

 

 

اینم لینک همین پروژه

 

http://s8.picofile.com/d/8290425992/1eb6876a-bd47-4d80-974a-f3c9269ab763/AddressApp.rar

سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,920 کاربر

دسته بندی ها

...