private bool ImportDaysFromExcel()
        {
            //return false;
            bool output = false;

            int NewCustomerFounded = 0;
            int NewRouteFounded = 0;
            int NewProductFounded = 0;
            AddLog("Start importing ...");
            DataTable dtExcel = new DataTable();
            SplashScreenManager.ShowForm(typeof(WaitWindowFrm));
            this.Invoke(new MethodInvoker(() =>
            {
                for (int i = 0; i < lbcFilePath.ItemCount; i++)
                {
                    if (File.Exists(lbcFilePath.Items[i].ToString()))
                    {
                        SplashScreenManager.Default.SetWaitFormDescription("Loading Excel File [" + (i + 1) + "] Contains [1/4]");
                        DataTable dtPart = DataManager.LoadExcelFile(lbcFilePath.Items[i].ToString(), 0, "*");
                        if (dtPart.Rows.Count == 0)
                            continue;
                        dtExcel.Merge(dtPart);
                    }
                }
                SplashScreenManager.Default.SetWaitFormDescription("Loading Customers Informations [2/4]");
                _0_6_Customer_HNTableAdapter.Fill(dsData._0_6_Customer_HN);
                SplashScreenManager.Default.SetWaitFormDescription("Loading Routes Informations [3/4]");
                _0_3__Route_DetailsTableAdapter.Fill(dsData._0_3__Route_Details);
                SplashScreenManager.Default.SetWaitFormDescription("Loading Products Informations [4/4]");
                _0_4__Product_DetailsTableAdapter.Fill(dsData._0_4__Product_Details);
            }));

            if (dtExcel.Rows.Count == 0)
                return false;

            DateTime dtStart = DateTime.Now;
            OleDbConnection con = new OleDbConnection(Properties.Settings.Default.dbConnectionString);
            OleDbCommand cmd = new OleDbCommand("", con);
            Microsoft.Office.Interop.Access.Dao.DBEngine eng = new Microsoft.Office.Interop.Access.Dao.DBEngine();
            Microsoft.Office.Interop.Access.Dao.Database db = eng.OpenDatabase(DataManager.dbPath);
            eng.BeginTrans();

            Microsoft.Office.Interop.Access.Dao.Recordset rs = db.OpenRecordset(@"SELECT [Billing Document], [Billing date for bil],
            [Billing Type], [Payer], [Sold-to party], [Actual Invoiced Quan], [Condition base value], [Condition type], [Condition value],
            [Distribution Channel], [G/L Account Number], [Material Number], [Plant], [Reference Document N], [Route], [Sales district],
            [Sales unit], [Company Code], [Base Unit of Measure], [Sales Organization], [Route & Sold], [yeard], [Month], [New Quanteite]
            FROM [0-1  Master]");
            Microsoft.Office.Interop.Access.Dao.Field[] myFields = new Microsoft.Office.Interop.Access.Dao.Field[25];
            for (int k = 0; k <= 23; k++)
            {
                myFields[k] = rs.Fields[k];
            }

            con.Open();

            int ProcessedCounter = 0;
            int ProcessedMax = dtExcel.Rows.Count;
            this.Invoke(new MethodInvoker(() =>
            {
                ProgressBarMain.Properties.Maximum = ProcessedMax;
                ProgressBarMain.EditValue = ProcessedCounter;
            }));

            //deleting data before saving new 1
            var result = from row in dtExcel.AsEnumerable()
                         group row by row["Billing date for bil"] into grp
                         select new { BillingDate = grp.Key };
            cmd.CommandText = "delete from [0-1  Master] where [Billing date for bil] = @BillingDate";
            cmd.Parameters.Add(new OleDbParameter("@BillingDate", OleDbType.Date));
            foreach (var item in result)
            {
                if (DevExpress.XtraSplashScreen.SplashScreenManager.Default.IsSplashFormVisible)
                    DevExpress.XtraSplashScreen.SplashScreenManager.Default.SetWaitFormDescription("Deleting Day " + item.BillingDate);
                System.Windows.Forms.Application.DoEvents();
                cmd.Parameters["@BillingDate"].Value = item.BillingDate;
                cmd.ExecuteNonQuery();
            }

            SplashScreenManager.CloseForm();
            int Test = 0;
            foreach (DataRow row in dtExcel.Rows)
            {
                //Update UI
                ProcessedCounter++;
                if (ProcessedCounter % 500 == 1)
                {
                    //double DonePercent = ProcessedCounter / ProcessedMax;
                    this.Invoke(new MethodInvoker(() =>
                    {
                        lblEstTime.Text = Convert.ToInt32(DateTime.Now.Subtract(dtStart).TotalSeconds / ProcessedCounter * ProcessedMax) + " sec";
                        ProgressBarMain.EditValue = ProcessedCounter;
                        lblCount.Text = string.Format("{0}/{1}", ProcessedMax, ProcessedCounter);

                        Application.DoEvents();
                    }));
                }

                //if (Test == 21501)
                //{
                //    string x = "";
                //}
                Test++;
                Data.dsData._0_1__MasterRow SqlRow = dsData._0_1__Master.New_0_1__MasterRow();
                SqlRow.Billing_Document = row["Billing Document"].ToString();

                SqlRow.Billing_date_for_bil = Convert.ToDateTime(row["Billing date for bil"]);
                SqlRow.yeard = SqlRow.Billing_date_for_bil.Year.ToString();
                SqlRow.Month = SqlRow.Billing_date_for_bil.ToString("MMMM", System.Globalization.CultureInfo.InvariantCulture);

                SqlRow.Billing_Type = row["Billing Type"].ToString();
                //SqlRow.Payer = row["Payer"].ToString();
                SqlRow._Sold_to_party = Convert.ToInt32(row["Sold-to party"]).ToString();
                SqlRow.Actual_Invoiced_Quan = Convert.ToDouble(row["Actual Invoiced Quan"]);
                //SqlRow.Condition_base_value = Convert.ToDouble(row["Condition base value"]);
                SqlRow.Condition_type = row["Condition type"].ToString();
                SqlRow.Condition_value = Convert.ToDouble(row["Condition value"]);
                SqlRow.Distribution_Channel = row["Distribution Channel"].ToString();

                //SqlRow._G_L_Account_Number = row["G/L Account Number"].ToString();
                SqlRow.Material_Number = Convert.ToInt32(row["Material Number"]);
                SqlRow.Plant = row["Plant"].ToString();
                SqlRow.Reference_Document_N = row["Reference Document N"].ToString();

                //Set Route and Fix 999999 and 000001
                SqlRow.Route = row["Route"].ToString();
                if (SqlRow.Route == DataManager.Route999999)
                {
                    if (SqlRow.Reference_Document_N.Trim().Substring(0, 2) == "CS")//try to get it from "Reference Document N"
                        SqlRow.Route = SqlRow.Reference_Document_N.Trim().Substring(2, 6);
                    else
                    {
                        //try to get it from last route for this "Sold to-party"
                        cmd.CommandText = string.Format("SELECT top 1 Route FROM [0-1  Master] WHERE [Sold-to party] = \"{0}\" AND [0-1  Master].Route <> \"999999\" order by [Billing date for bil] DESC", SqlRow._Sold_to_party);
                        object obj = cmd.ExecuteScalar();
                        if (obj != null)
                            SqlRow.Route = obj.ToString();
                    }
                }
                //Set _Route___Sold
                if (SqlRow.Route == DataManager.Route000001)
                    SqlRow._Route___Sold = SqlRow._Sold_to_party;
                else
                    SqlRow._Route___Sold = SqlRow.Route;

                //SqlRow.Sales_district = row["Sales district"].ToString();
                SqlRow.Sales_unit = row["Sales unit"].ToString();
                //SqlRow.Company_Code = row["Company Code"].ToString();
                //SqlRow.Base_Unit_of_Measure = row["Base Unit of Measure"].ToString();
                //SqlRow.Sales_Organization = row["Sales Organization"].ToString();

                //Customer Update
                Data.dsData._0_6_Customer_HNRow CustomerRow = Customer.GetCustomerRow(SqlRow._Sold_to_party, dsData._0_6_Customer_HN);

                if (CustomerRow.RowState == DataRowState.Detached)
                {
                    CustomerRow.Customer_T = SqlRow._Sold_to_party;
                    CustomerRow.Customer_Type = Customer.CustomerTypeIdDirect;
                    CustomerRow.Customer_Type_2 = Customer.CustomerType2IdDirect;
                    CustomerRow.Customer_Group = Customer.CustomerGroupIdDirect;
                    CustomerRow.Subchannel = Customer.SubchannelIdDirect;
                    CustomerRow.Customer_type_Code = Customer.CustomerTypeCodeDirect;
                    dsData._0_6_Customer_HN.Add_0_6_Customer_HNRow(CustomerRow);
                    CustomerRow.EndEdit();

                    AddLog("[New Customer Found] : " + row["Sold-to party"]);
                    NewCustomerFounded++;
                }
                //Route Update

                if (row["Route"].ToString().Trim() != DataManager.Route000001 && row["Route"].ToString().Trim() != DataManager.Route999999)
                {
                    Data.dsData._0_3__Route_DetailsRow RouteRow = Route.GetRouteNumber(row["Route"].ToString().Trim(), dsData._0_3__Route_Details);
                    if (RouteRow.RowState == DataRowState.Detached)
                    {
                        RouteRow.Route_Number = SqlRow.Route;
                        dsData._0_3__Route_Details.Add_0_3__Route_DetailsRow(RouteRow);
                        RouteRow.EndEdit();
                        AddLog("[New Route Found] : " + RouteRow.Route_Number);
                        NewRouteFounded++;
                    }
                }

                //Product Update
                Data.dsData._0_4__Product_DetailsRow ProductRow = Product.GetProductRow(SqlRow.Material_Number, dsData._0_4__Product_Details);

                if (ProductRow.RowState == DataRowState.Detached)
                {
                    ProductRow.Material_Number = SqlRow.Material_Number;
                    dsData._0_4__Product_Details.Add_0_4__Product_DetailsRow(ProductRow);
                    ProductRow.EndEdit();
                    AddLog("[New Product Found] : " + ProductRow.Material_Number);
                    NewProductFounded++;
                }

                if (ProductRow.Quin == ProductRow.New_Qu)
                    SqlRow.New_Quanteite = Convert.ToInt32(SqlRow.Actual_Invoiced_Quan);
                else
                    SqlRow.New_Quanteite = Convert.ToInt32(SqlRow.Actual_Invoiced_Quan * ProductRow.Quin / ProductRow.New_Qu);

                dsData._0_1__Master.Add_0_1__MasterRow(SqlRow);
                SqlRow.EndEdit();

                //_0_1__MasterTableAdapter.Update(SqlRow);

                rs.AddNew();
                myFields[0].Value = SqlRow.Billing_Document;
                myFields[1].Value = SqlRow.Billing_date_for_bil;
                myFields[2].Value = SqlRow.Billing_Type;
                //myFields[3].Value = SqlRow.Payer;
                myFields[4].Value = SqlRow._Sold_to_party;
                myFields[5].Value = SqlRow.Actual_Invoiced_Quan;
                //myFields[6].Value = SqlRow.Condition_base_value;
                myFields[7].Value = SqlRow.Condition_type;
                myFields[8].Value = SqlRow.Condition_value;
                myFields[9].Value = SqlRow.Distribution_Channel;
                //myFields[10].Value = SqlRow._G_L_Account_Number;
                myFields[11].Value = SqlRow.Material_Number;
                myFields[12].Value = SqlRow.Plant;
                myFields[13].Value = SqlRow.Reference_Document_N;
                myFields[14].Value = SqlRow.Route;
                //myFields[15].Value = SqlRow.Sales_district;
                myFields[16].Value = SqlRow.Sales_unit;
                //myFields[17].Value = SqlRow.Company_Code;
                //myFields[18].Value = SqlRow.Base_Unit_of_Measure;
                //myFields[19].Value = SqlRow.Sales_Organization;
                myFields[20].Value = SqlRow._Route___Sold;
                myFields[21].Value = SqlRow.yeard;
                myFields[22].Value = SqlRow.Month;
                myFields[23].Value = SqlRow.New_Quanteite;
                rs.Update();

            }
            eng.CommitTrans();
            eng.FreeLocks();
            db.Close();

            _0_6_Customer_HNTableAdapter.Update(dsData._0_6_Customer_HN);
            _0_3__Route_DetailsTableAdapter.Update(dsData._0_3__Route_Details);
            _0_4__Product_DetailsTableAdapter.Update(dsData._0_4__Product_Details);
            ////SplashScreenManager.ShowForm(typeof(WaitWindowFrm));
            ////SplashScreenManager.Default.SetWaitFormDescription("Updating Master ..."); Application.DoEvents();
            ////int index = 0;
            ////foreach (Data.dsData._0_1__MasterRow row in dsData._0_1__Master)
            ////{
            ////    _0_1__MasterTableAdapter.Update(row);
            ////    SplashScreenManager.Default.SetWaitFormDescription("Updating Master ..." + index); index++;
            ////    Application.DoEvents();
            ////}
            //_0_1__MasterTableAdapter.Update(dsData._0_1__Master);
            dsData._0_1__Master.AcceptChanges();

            AddLog("New Customers Saved " + NewCustomerFounded);
            AddLog("New Routes Saved " + NewRouteFounded);
            AddLog("New Product Saved " + NewProductFounded);
            AddLog("New R3 Data Saved " + dsData._0_1__Master.Count);

            dtExcel.Rows.Clear(); dtExcel.Dispose(); dtExcel = null;
            dsData._0_1__Master.Clear(); dsData._0_6_Customer_HN.Clear();
            dsData._0_1__Master.Dispose(); dsData._0_6_Customer_HN.Dispose();
            cmd.Dispose(); cmd = null; con.Close(); con.Dispose(); con = null;
            GC.Collect(); GC.WaitForPendingFinalizers();

            return output;
        }
Example #2
0
        static void Main(string[] args)
        {
            string TableName = "Cars";
            string FieldName = "CarType";

            // This code requires the following COM reference in your project:
            //
            // Microsoft Office 14.0 Access Database Engine Object Library
            //
            var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngine();

            Microsoft.Office.Interop.Access.Dao.Database db = dbe.OpenDatabase(@"Z:\_xfer\Database1.accdb");
            try
            {
                Microsoft.Office.Interop.Access.Dao.Field fld = db.TableDefs[TableName].Fields[FieldName];
                string RowSource = "";
                try
                {
                    RowSource = fld.Properties["RowSource"].Value;
                }
                catch
                {
                    // do nothing - RowSource will remain an empty string
                }

                if (RowSource.Length == 0)
                {
                    Console.WriteLine("The field is not a lookup field.");
                }
                else
                {
                    Console.WriteLine(RowSource);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Example #3
0
        /// <summary>
        /// 录入附件信息
        /// </summary>
        /// <param name="dtTemp2">附件2的模板数据</param>
        /// <param name="dtTemp3">附件3的模板数据</param>
        /// <returns></returns>
        private string insertDataTable(DataTable dtTemp2, DataTable dtTemp3)
        {
            string msg = string.Empty;

            Microsoft.Office.Interop.Access.Dao.Database  db       = dbEngine.OpenDatabase(Utils.dataPath);
            Microsoft.Office.Interop.Access.Dao.Recordset rs       = db.OpenRecordset("INFOMATION_ENTITIES");
            Microsoft.Office.Interop.Access.Dao.Field[]   myFields = new Microsoft.Office.Interop.Access.Dao.Field[65];

            myFields[0]  = rs.Fields["VIN"];
            myFields[1]  = rs.Fields["CLXZ"];
            myFields[2]  = rs.Fields["CLZL"];
            myFields[3]  = rs.Fields["GCSF"];
            myFields[4]  = rs.Fields["GCCS"];
            myFields[5]  = rs.Fields["CLYT"];
            myFields[6]  = rs.Fields["CLXH"];
            myFields[7]  = rs.Fields["GGPC"];
            myFields[8]  = rs.Fields["CLPZ"];
            myFields[9]  = rs.Fields["EKGZ"];
            myFields[10] = rs.Fields["GMJG"];
            myFields[11] = rs.Fields["SQBZBZ"];
            myFields[12] = rs.Fields["FPHM"];
            myFields[13] = rs.Fields["FPSJ"];
            myFields[14] = rs.Fields["XSZSJ"];
            myFields[15] = rs.Fields["FPTP"];
            myFields[16] = rs.Fields["XSZTP"];
            myFields[17] = rs.Fields["FPTP_PICTURE"];
            myFields[18] = rs.Fields["XSZTP_PICTURE"];
            myFields[19] = rs.Fields["CJDRXX_CXXH"];
            myFields[20] = rs.Fields["CJDRXX_DRZRL"];
            myFields[21] = rs.Fields["CJDRXX_DRZSCQY"];
            myFields[22] = rs.Fields["CJDRXX_DTSCQY"];
            myFields[23] = rs.Fields["CJDRXX_DTXH"];
            myFields[24] = rs.Fields["CJDRXX_XTJG"];
            myFields[25] = rs.Fields["CJDRXX_ZBNX"];
            myFields[26] = rs.Fields["CLSFYCJDR"];
            myFields[27] = rs.Fields["CLSFYQDDJ2"];
            myFields[28] = rs.Fields["CLSFYRLDC"];
            myFields[29] = rs.Fields["DCDTXX_SCQY"];
            myFields[30] = rs.Fields["DCDTXX_XH"];
            myFields[31] = rs.Fields["DCZXX_SCQY"];
            myFields[32] = rs.Fields["DCZXX_XH"];
            myFields[33] = rs.Fields["DCZXX_XTJG"];
            myFields[34] = rs.Fields["DCZXX_ZBNX"];
            myFields[35] = rs.Fields["DCZXX_ZRL"];
            myFields[36] = rs.Fields["QDDJXX_EDGL_1"];
            myFields[37] = rs.Fields["QDDJXX_EDGL_2"];
            myFields[38] = rs.Fields["QDDJXX_SCQY_1"];
            myFields[39] = rs.Fields["QDDJXX_SCQY_2"];
            myFields[40] = rs.Fields["QDDJXX_XH_1"];
            myFields[41] = rs.Fields["QDDJXX_XH_2"];
            myFields[42] = rs.Fields["QDDJXX_XTJG_1"];
            myFields[43] = rs.Fields["QDDJXX_XTJG_2"];
            myFields[44] = rs.Fields["RLDCXX_EDGL"];
            myFields[45] = rs.Fields["RLDCXX_GMJG"];
            myFields[46] = rs.Fields["RLDCXX_SCQY"];
            myFields[47] = rs.Fields["RLDCXX_XH"];
            myFields[48] = rs.Fields["RLDCXX_ZBNX"];
            myFields[49] = rs.Fields["JZNF"];
            myFields[50] = rs.Fields["BGLHDL"];
            myFields[51] = rs.Fields["CLCMYCDNGXSLC"];
            myFields[52] = rs.Fields["CLYCCMDSXSJ"];
            myFields[53] = rs.Fields["CLYXDW"];
            myFields[54] = rs.Fields["JKPDXXDW"];
            myFields[55] = rs.Fields["LJCDL"];
            myFields[56] = rs.Fields["LJJQL"];
            myFields[57] = rs.Fields["LJJQL_G"];
            myFields[58] = rs.Fields["LJJQL_L"];
            myFields[59] = rs.Fields["LJJYL"];
            myFields[60] = rs.Fields["LJXSLC"];
            myFields[61] = rs.Fields["PJDRXYSJ"];
            myFields[62] = rs.Fields["SFAZJKZZ"];
            myFields[63] = rs.Fields["YJXSLC"];
            myFields[64] = rs.Fields["ZDCDGL"];
            for (int i = 0; i < dtTemp2.Rows.Count; i++)
            {
                string vin  = dtTemp2.Rows[i]["VIN"].ToString().Trim();
                string clpz = dtTemp2.Rows[i]["CLPZ"].ToString().Trim();
                try
                {
                    var sel3 = (from t3 in dtTemp3.AsEnumerable()
                                where t3.Field <string>("CLPZ").Equals(clpz)
                                select t3).CopyToDataTable();
                    rs.AddNew();
                    myFields[0].Value  = dtTemp2.Rows[i]["VIN"];
                    myFields[1].Value  = string.Empty;
                    myFields[2].Value  = dtTemp2.Rows[i]["CLZL"];
                    myFields[3].Value  = dtTemp2.Rows[i]["GCSF"];
                    myFields[4].Value  = dtTemp2.Rows[i]["GCCS"];
                    myFields[5].Value  = dtTemp2.Rows[i]["CLYT"];
                    myFields[6].Value  = dtTemp2.Rows[i]["CLXH"];
                    myFields[7].Value  = string.Empty;
                    myFields[8].Value  = dtTemp2.Rows[i]["CLPZ"];
                    myFields[9].Value  = string.Empty;
                    myFields[10].Value = dtTemp2.Rows[i]["GMJG"];
                    myFields[11].Value = dtTemp2.Rows[i]["SQBZBZ"];
                    myFields[12].Value = dtTemp2.Rows[i]["FPHM"];
                    myFields[13].Value = dtTemp2.Rows[i]["FPSJ"];
                    myFields[14].Value = dtTemp2.Rows[i]["XSZSJ"];
                    myFields[15].Value = dtTemp2.Rows[i]["FPTP"];
                    myFields[16].Value = dtTemp2.Rows[i]["XSZTP"];
                    myFields[17].Value = dtTemp2.Rows[i]["FPTP_PICTURE"];
                    myFields[18].Value = dtTemp2.Rows[i]["XSZTP_PICTURE"];
                    myFields[19].Value = dtTemp2.Rows[i]["CJDRXX_CXXH"];
                    myFields[20].Value = dtTemp2.Rows[i]["CJDRXX_DRZRL"];
                    myFields[21].Value = dtTemp2.Rows[i]["CJDRXX_DRZSCQY"];
                    myFields[22].Value = dtTemp2.Rows[i]["CJDRXX_DTSCQY"];
                    myFields[23].Value = dtTemp2.Rows[i]["CJDRXX_DTXH"];
                    myFields[24].Value = dtTemp2.Rows[i]["CJDRXX_XTJG"];
                    myFields[25].Value = dtTemp2.Rows[i]["CJDRXX_ZBNX"];
                    myFields[26].Value = dtTemp2.Rows[i]["CLSFYCJDR"];
                    myFields[27].Value = dtTemp2.Rows[i]["CLSFYQDDJ2"];
                    myFields[28].Value = dtTemp2.Rows[i]["CLSFYRLDC"];
                    myFields[29].Value = dtTemp2.Rows[i]["DCDTXX_SCQY"];
                    myFields[30].Value = dtTemp2.Rows[i]["DCDTXX_XH"];
                    myFields[31].Value = dtTemp2.Rows[i]["DCZXX_SCQY"];
                    myFields[32].Value = dtTemp2.Rows[i]["DCZXX_XH"];
                    myFields[33].Value = dtTemp2.Rows[i]["DCZXX_XTJG"];
                    myFields[34].Value = dtTemp2.Rows[i]["DCZXX_ZBNX"];
                    myFields[35].Value = dtTemp2.Rows[i]["DCZXX_ZRL"];
                    myFields[36].Value = dtTemp2.Rows[i]["QDDJXX_EDGL_1"];
                    myFields[37].Value = dtTemp2.Rows[i]["QDDJXX_EDGL_2"];
                    myFields[38].Value = dtTemp2.Rows[i]["QDDJXX_SCQY_1"];
                    myFields[39].Value = dtTemp2.Rows[i]["QDDJXX_SCQY_2"];
                    myFields[40].Value = dtTemp2.Rows[i]["QDDJXX_XH_1"];
                    myFields[41].Value = dtTemp2.Rows[i]["QDDJXX_XH_2"];
                    myFields[42].Value = dtTemp2.Rows[i]["QDDJXX_XTJG_1"];
                    myFields[43].Value = dtTemp2.Rows[i]["QDDJXX_XTJG_2"];
                    myFields[44].Value = dtTemp2.Rows[i]["RLDCXX_EDGL"];
                    myFields[45].Value = dtTemp2.Rows[i]["RLDCXX_GMJG"];
                    myFields[46].Value = dtTemp2.Rows[i]["RLDCXX_SCQY"];
                    myFields[47].Value = dtTemp2.Rows[i]["RLDCXX_XH"];
                    myFields[48].Value = dtTemp2.Rows[i]["RLDCXX_ZBNX"];
                    myFields[49].Value = dtTemp2.Rows[i]["JZNF"];
                    myFields[50].Value = sel3.Rows[0]["BGLHDL"];
                    myFields[51].Value = sel3.Rows[0]["CLCMYCDNGXSLC"];
                    myFields[52].Value = sel3.Rows[0]["CLYCCMDSXSJ"];
                    myFields[53].Value = dtTemp2.Rows[i]["CLYXDW"];
                    myFields[54].Value = sel3.Rows[0]["JKPDXXDW"];
                    myFields[55].Value = sel3.Rows[0]["LJCDL"];
                    myFields[56].Value = sel3.Rows[0]["LJJQL"];
                    myFields[57].Value = sel3.Rows[0]["LJJQL_G"];
                    myFields[58].Value = sel3.Rows[0]["LJJQL_L"];
                    myFields[59].Value = sel3.Rows[0]["LJJYL"];
                    myFields[60].Value = sel3.Rows[0]["LJXSLC"];
                    myFields[61].Value = sel3.Rows[0]["PJDRXYSJ"];
                    myFields[62].Value = sel3.Rows[0]["SFAZJKZZ"];
                    myFields[63].Value = sel3.Rows[0]["YJXSLC"];
                    myFields[64].Value = sel3.Rows[0]["ZDCDGL"];
                    rs.Update();
                }
                catch (Exception ex)
                {
                    msg += String.Format("车辆识别代码(VIN):{0}的异常信息{1},操作异常{2}", vin, ex.Message, Environment.NewLine);
                    continue;
                }
            }
            rs.Close();
            db.Close();
            return(msg);
        }
Example #4
0
        static void Main(string[] args)
        {
            const string fieldname_filename = "FileName";
            const string fieldname_filedata = "FileData";


            string outputfolder         = @"D:\attachments";
            string dbfilename           = @"D:\\AX6Reports.accdb";
            string tablename            = "AX6Reports";
            var    prefix_fieldnames    = new[] { "Name", "Design" };
            string attachment_fieldname = "Attachments";

            var    dbe          = new MSACCESS.Dao.DBEngine();
            var    db           = dbe.OpenDatabase(dbfilename, false, false, "");
            var    rstype       = MSACCESS.Dao.RecordsetTypeEnum.dbOpenDynaset;
            var    locktype     = MSACCESS.Dao.LockTypeEnum.dbOptimistic;
            string selectclause = string.Format("SELECT * FROM {0}", tablename);
            var    rs           = db.OpenRecordset(selectclause, rstype, 0, locktype);

            rs.MoveFirst();
            int row_count = 0;

            while (!rs.EOF)
            {
                var prefix_values    = prefix_fieldnames.Select(s => rs.Fields[s].Value).ToArray();
                var attachment_rs    = (MSACCESS.Dao.Recordset2)rs.Fields[attachment_fieldname].Value;
                int attachment_count = 0;
                while (!attachment_rs.EOF)
                {
                    var field_filename = attachment_rs.Fields[fieldname_filename].Value;

                    var field_attachment = (MSACCESS.Dao.Field2)attachment_rs.Fields[fieldname_filedata];
                    if (field_attachment != null)
                    {
                        if (field_attachment.Value != null)
                        {
                            string prefix = "";
                            if (prefix_fieldnames.Length > 0)
                            {
                                prefix = string.Format("{0}__", string.Join("__", prefix_values));
                                prefix = prefix.Replace(" ", "_");
                                prefix = prefix.Replace(":", "_");
                                prefix = prefix.Replace("/", "_");
                            }

                            var dest_fname = System.IO.Path.Combine(outputfolder, prefix + field_filename);

                            if (System.IO.File.Exists(dest_fname))
                            {
                                System.IO.File.Delete(dest_fname);
                            }

                            field_attachment.SaveToFile(dest_fname);
                        }
                    }

                    attachment_rs.MoveNext();
                    attachment_count++;
                }
                attachment_rs.Close();
                Console.WriteLine(row_count);
                row_count++;
                rs.MoveNext();
            }

            rs.Close();
        }