0 امتیاز

باسلام 

در یک پروژه نیاز دارم تا اطلاعات از دیتا گرید ویو به فایل اکسس انتقال و ذخیره سلزی شود در حال حاضر از کد زیر استفاده میکنم اما با خطا مواجه میشم در صورتی که اگر خروجی را در sql بگیرم و کپی و در اکسس past کنم مشکلی مشاهده نمیشود ممنون میشم راهنمایی بفرمایید.

کدپروژه :

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Linq;
using Spire.DataExport.Access;



namespace Ttms_Kharid
{
    public partial class TtmsForm : Form
    {
        public TtmsForm()
        {
            InitializeComponent();
        }

        private void Runbutton_Click(object sender, EventArgs e)
        {

            if (KindcomboBox.SelectedIndex == 0)
            {



                SqlConnection myConn = new SqlConnection("Password=803;Persist Security Info=True;User ID=ADMIN;" +

               "Initial Catalog=IFS_803;Data Source=.");

                myConn.Open();

                SqlCommand mycom = new SqlCommand("dbo.TTMS_Kharid", myConn)

                { CommandType = CommandType.StoredProcedure };


                mycom.Parameters.Add("@Fpid", SqlDbType.Int).Value = Convert.ToInt32(FpidcomboBox.SelectedValue);

                mycom.Parameters.Add("@Scode", SqlDbType.Int).Value = ScodecomboBox.Text.Trim();

                DataTable dt = new DataTable();

                SqlDataAdapter ada = new SqlDataAdapter(mycom);

                ada.Fill(dt);

                TtmsdataGridView.DataSource = dt;
            }

            if (KindcomboBox.SelectedIndex == 1)

            {
                SqlConnection myConn = new SqlConnection("Password=803;Persist Security Info=True;User ID=ADMIN;" +

               "Initial Catalog=IFS_803;Data Source=.");

                myConn.Open();

                SqlCommand mycom = new SqlCommand("dbo.TTMSGH", myConn)

                { CommandType = CommandType.StoredProcedure };

                mycom.Parameters.Add("@Fpid", SqlDbType.Int).Value = Convert.ToInt32(FpidcomboBox.SelectedValue);

                mycom.Parameters.Add("@Scode", SqlDbType.Int).Value = ScodecomboBox.Text.Trim();



                if (ScodecomboBox.Text.Trim() == "1")
                {
                    mycom.Parameters.Add("@Tdate", SqlDbType.NVarChar).Value = $"{FpidcomboBox.SelectedItem}/03/31";
                }

                if (ScodecomboBox.Text.Trim() == "2")
                {
                    mycom.Parameters.Add("@Tdate", SqlDbType.NVarChar).Value = FpidcomboBox.SelectedText + "/06/31";
                }

                if (ScodecomboBox.Text.Trim() == "3")
                {
                    mycom.Parameters.Add("@Tdate", SqlDbType.NVarChar).Value = FpidcomboBox.SelectedText + "/09/30";
                }

                if (ScodecomboBox.Text.Trim() == "4")
                {
                    mycom.Parameters.Add("@Tdate", SqlDbType.NVarChar).Value = FpidcomboBox.SelectedText + "/12/29";
                }

                DataTable dt = new DataTable();

                SqlDataAdapter ada = new SqlDataAdapter(mycom);

                ada.Fill(dt);

                TtmsdataGridView.DataSource = dt;
            }



        }

        private void TtmsForm_Load(object sender, EventArgs e)
        {
            SqlConnection myConn = new SqlConnection("Password=803;Persist Security Info=True;User ID=ADMIN;" +

           "Initial Catalog=IFS_803;Data Source=.");

            DataTable dt = new DataTable();

            SqlDataAdapter ada = new SqlDataAdapter("select id,name from __fiscalperiod__ where id <>0", myConn);

            ada.Fill(dt);

            FpidcomboBox.DataSource = dt;

            FpidcomboBox.DisplayMember = "name";

            FpidcomboBox.ValueMember = "id";

            KindcomboBox.Items.Add(Convert.ToString("خرید"));

            KindcomboBox.Items.Add(Convert.ToString("قرارداد"));

        }

        private DataTable GetDataTableFromDGV(DataGridView dgv)
        {
            var dt = new DataTable();

            foreach (DataGridViewColumn column in dgv.Columns)
            {
                if (column.Visible)
                {
                    dt.Columns.Add();
                }

            }

            object[] cellValues = new object[dgv.Columns.Count];

            foreach (DataGridViewRow row in dgv.Rows)
            {
                for (int i = 0; i < row.Cells.Count; i++)
                {
                    cellValues[i] = row.Cells[i].Value;
                }
                dt.Rows.Add(cellValues);
            }
            return dt;
        }


        private void Exportbutton_Click(object sender, EventArgs e)

        {
            openFileDialog1.ShowDialog();

            if (KindcomboBox.SelectedIndex == 1)
            {
                OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + openFileDialog1.FileName + ";Persist Security Info=True");

                DataTable dt = new DataTable();

                dt = GetDataTableFromDGV(TtmsdataGridView);

                OleDbCommand com = new OleDbCommand();

                com.CommandType = CommandType.Text;

                com.Connection = cn;

                int dtc = dt.Rows.Count;

                MessageBox.Show($"{dtc}");

                cn.Open();

                for (int j = 0; j < (TtmsdataGridView.ColumnCount); j++)

                    for (int i = 0; i < (TtmsdataGridView.Rows.Count); i++)
                    {
                        com.CommandText = "INSERT INTO Kharid_Detail(" + TtmsdataGridView.Columns[j].Name.Trim() + ")VALUES(" + TtmsdataGridView.Rows[i].Cells[j].Value + ")";

                        com.ExecuteNonQuery();
                    }


                MessageBox.Show("اطلاعات با موفقیت درج گردید");
            }

            if (KindcomboBox.SelectedIndex == 0)
            {
                OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + openFileDialog1.FileName + ";Persist Security Info=True");

                cn.Open();

                DataTable dt = new DataTable();

                dt = GetDataTableFromDGV(TtmsdataGridView);

                OleDbCommand com = new OleDbCommand();

                com.CommandType = CommandType.Text;

                com.Connection = cn;

                 for (int j = 0; j < (TtmsdataGridView.ColumnCount); j++)

                    for (int i = 0; i < (TtmsdataGridView.Rows.Count); i++)
                    {
                        com.CommandText = "INSERT INTO Kharid_Detail(" + TtmsdataGridView.Columns[j].Name.Trim() + ")VALUES(" + TtmsdataGridView.Rows[i].Cells[j].Value + ")";

                        com.ExecuteNonQuery();
                    }

                int dtc = dt.Rows.Count;

                MessageBox.Show($"تعداد {dtc} رکورد در مسیر انتخابی درج گردید");
            }
        }


    }
}

خطا:

System.Data.OleDb.OleDbException: 'You must enter a value in the 'Kharid_Detail.KalaKhadamatName' field.'

 

1 پاسخ

0 امتیاز

سلام

این خطا

System.Data.OleDb.OleDbException: 'You must enter a value in the 'Kharid_Detail.KalaKhadamatName' field.'

داخل کدهای شما ورودی نداره ورودی اینو از کجا میگیری؟

Kharid_Detail.KalaKhadamatName

 

سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,919 کاربر

دسته بندی ها

...