Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Вопросы по работе с Excel, запрос к листу через переменную  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 689
Всем привет!!!!!
Народ уже 2 часа долбаюсь, и поиском пользовался и гуглом.
Что- то не получается.
Есть код:

string NowDate = System.DateTime.Now.ToString("dd.MM.yyyy") + "(+0)$";
            string DTomorowate = System.DateTime.Now.AddDays(1).ToString("dd.MM.yyyy") + "(+0)$";

            OleDbConnection objConn = null;
            System.Data.DataTable dt = null;
 
            String connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + comboBoxInp2.Text + ";Extended Properties=Excel 8.0;"; 
            objConn = new OleDbConnection(connString);
            objConn.Open();
            dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

            String[] excelSheets = new String[dt.Rows.Count];
            int i = 0;
                        
            foreach (DataRow row in dt.Rows)
             {
              excelSheets[i] = row["TABLE_NAME"].ToString();
              i++;
             }

            OleDbCommand cm = null;
            cm = new OleDbCommand("select * from [" +NowDate+ "] ", objConn);
            OleDbDataAdapter da = new OleDbDataAdapter();

            da.SelectCommand = cm;
            DataTable _table = new DataTable();
            da.Fill(_table);
            da.Dispose();
            cm.Dispose();


            MessageBox.Show( Convert.ToString (_table.Rows.Count));

выдает такой эксепшн - Недопустимое имя: "18.05.2010[+0]$". Убедитесь, что оно не содержит недопустимые символы или знаки препинания, а также не является слишком длинным.
и указывает на da.Fill(_table);

мой cm.CommandText = "select * from [18.05.#2010(+0)$] "

если написать cm = new OleDbCommand("select * from [18.05.2010(+0)$] ", objConn);
то все нормально работает ((((
18 май 10, 10:45    [8790525]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по работе с Excel, запрос к листу через переменную  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 689
еще вопросик, запрос:

cm = new OleDbCommand("select * from [11.05.2010 (+0)$] WHERE [Название передачи] Like '%Региональное окно%'", objConn);

на него эксепшн:
Отсутствует значение для одного или нескольких требуемых параметров.

попробовал через параметр

cm = new OleDbCommand("select * from [11.05.2010 (+0)$] WHERE [Название передачи] Like @name", objConn);
cm.Parameters.AddWithValue("@name", "Региональное окно%");

тот-же эксепшн (((

какой параметр??? Вроде же верный запрос...
18 май 10, 11:22    [8790902]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по работе с Excel, запрос к листу через переменную  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 689
наконец-то, еще бы чуток и мозг сломал)))

foreach (DataRow row in dt.Rows)
{
    excelSheets[i] = "[" + row["TABLE_NAME"].ToString() + "]" ;
    i++;
}

OleDbCommand cm = null;          
cm = new OleDbCommand();
cm.Connection = objConn;
cm.CommandText = @"SELECT * FROM " + excelSheets[0];     
OleDbDataAdapter da = new OleDbDataAdapter ();

da.SelectCommand = cm;

второй вопрос актуален))
19 май 10, 22:58    [8803406]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить