Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> испорт данных в ms sql из .mdb 
V
    Опции темы
denisminb
Дата 30.7.2013, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 9.6.2012

Репутация: нет
Всего: нет



Добрый день,
Подскажите пожалуйста,уже голову сломал,что не так.
В общем есть база в акцессе(если точнее сказать то в одном mdb около 10 таблиц,которые постоянно обнолвяются), нужно загрузить каждую таблицу в ms sql. Раньше писал в embarcadero через ado,dasetы....на данный момент нужно реализовать через visual studio C#.
Вроде выгрузку написал,но ничего не выгружается.Приведу часть кода
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Threading;

namespace proekt
{
    public partial class import_form : Form
    {
        public main_form mf;
        public Form2 obj;
        private DataBase dat;
        //Для oleDB
        public string sDBConnStr2;
        public OleDbConnection Con2;
        //---------------
        private string sDSourceConnStr;
        public OdbcConnection ConnODBC;
        public volatile Int32 iPTAcc;
        public volatile Int32 iPTCln;
        public volatile Int32 iPTBln;
        public volatile Int32 iPTDoc;
        public volatile Int32 iPTEy;
        public volatile Int32 iPTPc;
        public string Source_Conn_Oledb;
        public volatile string sDateBalance;

        public Thread tACC, tCLN, tBLN, tDOC, tEY, tPC;//потоки для загрузки

        public string sErrAcc, sErrCln, sErrBln, sErrDoc, sErrEy, sErrPc;//ошибки

        public import_form(main_form fr2)
        {
            InitializeComponent();
            mf = fr2;
        
        }


        private void import_form_Load(object sender, EventArgs e)
        {
            
            sDBConnStr2 = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=C:\test.mdb";
            if (Con2 == null) Con2 = new OleDbConnection();
            Con2.ConnectionString = this.sDBConnStr2;
            try
            {
           
                Con2.Open();
                timer1.Enabled = true;

            }
            catch
            {
                timer1.Enabled = false;
                MessageBox.Show("Ошибка подключения к OleDB!");
                this.Close();
            }

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;

          
            tCLN = new Thread(cln);//поток для загрузки данных
            tCLN.Start();
            while (!tCLN.IsAlive) ;

            timer2.Enabled = true;
        }
        void cln()
        {
            //Для sql - соединения
            SqlConnection ConnSqlTCln;
            SqlDataReader RecordSetSqlTCln;
            // Для ODBC
            OdbcConnection ConnODBCTCln;
            OdbcDataReader RecordSetODBCDB;
            //Для OleDB
            OleDbConnection ConOleDB;
            OleDbDataReader RecordSetOleDB;
            
            Int32 iNumerator;
            Int32 iStep;
            Int32 iIter;
            String MNGFAM, MNGNAME, MNGLAST, bss;
            Int32 BISNESTYPE, HOLDING;


            iPTCln = 0;

            ConOleDB = new OleDbConnection();
            ConOleDB.ConnectionString = this.sDBConnStr2;
            //**************************************************
            ConnSqlTCln = new SqlConnection("Data Source=od;User ID=aa;Password=aal;Initial Catalog=test");

            ConOleDB.Open();
            ConnSqlTCln.Open();

            SqlCommand CmdSqlTCln = new SqlCommand();
            CmdSqlTCln.Connection = ConnSqlTCln;

            OleDbCommand CmdOleDB;

            CmdOleDB = ConOleDB.CreateCommand();
            CmdOleDB.CommandText = "select count(*) from cl";
            RecordSetOleDB = CmdOleDB.ExecuteReader();

            RecordSetOleDB.Read();
            iNumerator = Convert.ToInt32(RecordSetOleDB[0]);
            RecordSetOleDB.Close();

            CmdOleDB.CommandText = "select * from cl ";
            RecordSetOleDB = CmdOleDB.ExecuteReader();

            iStep = iNumerator / 100;

            iIter = 0;

            while (RecordSetOleDB.Read())
            {

                CmdSqlTCln.Cancel();
                CmdSqlTCln.CommandText = "select a1,a2,a3,a4,a5 from test_CLN where CL=" + Convert.ToString(RecordSetOleDB["clt"]);
                RecordSetSqlTCln = CmdSqlTCln.ExecuteReader();

                if (RecordSetSqlTCln.Read())
                {
                    MNGFAM = RecordSetSqlTCln["MNGFAM"].ToString();
                    MNGNAME = RecordSetSqlTCln["MNGNAME"].ToString();
                    MNGLAST = RecordSetSqlTCln["MNGLAST"].ToString();
                    bss = RecordSetSqlTCln["bss"].ToString();

                    if (RecordSetSqlTCln["BISNESTYPE"].ToString() != "")
                    {
                        BISNESTYPE = Convert.ToInt32(RecordSetSqlTCln["BISNESTYPE"]);
                    }
                    else
                    {
                        BISNESTYPE = 0;
                    }

                    if (RecordSetSqlTCln["HOLDING"].ToString() != "")
                    {
                        HOLDING = Convert.ToInt32(RecordSetSqlTCln["HOLDING"]);
                    }
                    else
                    {
                        HOLDING = 0;
                    }
                }
                else
                {
                    MNGFAM = "";
                    MNGNAME = "";
                    MNGLAST = "";
                    bss = "";
                    BISNESTYPE = 0;
                    HOLDING = 0;
                }

                CmdSqlTCln.Cancel();
                CmdSqlTCln.CommandText = "delete from test where CL=" + Convert.ToString(RecordSetOleDB["clt"]);
                //CmdSqlTCln.ExecuteNonQuery();
                //RecordSetSqlTCln.Close();
                
               // dat2.DoSQL("delete from cl where clt='" + Convert.ToString(RecordSetOleDB["clt"]) + "'");


                

                CmdSqlTCln.Cancel();
                CmdSqlTCln.CommandText = " insert into test("здесь все необходмые поля") ";
                CmdSqlTCln.CommandText += "values ( " + RecordSetOleDB["clt"] + ",'";
               ................
               ................
               ................
                CmdSqlTCln.CommandText += b2 + "')";
              



                

                if (iIter == iStep)
                {
                    iIter = 0;
                    iPTCln = iPTCln + 1;
                }

                iIter = iIter + 1;
                RecordSetSqlTCln.Close();
                
            }

            CmdSqlTCln.Cancel(); //закрываю команды
            RecordSetOleDB.Close();//закрываю датаридеры/подключения
            CmdOleDB.Cancel();
            ConOleDB.Close();
            ConnSqlTCln.Close();
            
        }

        private void import_form_FormClosed(object sender, FormClosedEventArgs e)
        {
            timer2.Enabled = false;
            tCLN.Abort(); //обрываю поток
            richTextBox1.Text = sErrAcc;
            Con2.Close();
 
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            if (iPTCln < 100) progressBar1.Value = iPTCln;
    

            this.Text = "Загрузка данных за [" + sDateBalance + "]";

            if ((Convert.ToString(tCLN.ThreadState) == "Stopped"))
            {
                if ((sErrCln == null))
                {
                    this.Close();
                    timer2.Enabled = false;
                    MessageBox.Show("Загрузка данных завершена успешно!");
                }
                else
                {
                    timer2.Enabled = false;
                    richTextBox1.Visible = true;
                    richTextBox1.Text = sErrCln = " + sErrCln + "; 
                }
            }
        }



        

        

    }
}


import_form - форма для импорта, перед ней стоит авторизационная форма,которая в случае успеха пускает в основную, из основной выбрается импорт и другие операции. Авторизация проходит и на стороне ms sql и mdb.
может что упускаю?

PM MAIL   Вверх
denisminb
Дата 31.7.2013, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 9.6.2012

Репутация: нет
Всего: нет



проблему решил
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.