Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > CRecordset - как задать диапазон работы?


Автор: shupike 29.3.2016, 15:23
День добрый! Пишу вот программку для разбора данных из Excel-файла. Пользуюсь CRecordset, вытаскивает при помощи SQL-запроса данные, определенным образом группируя, ну и затем с данными провожу необходимые манипуляции. Суть проблемы в чем - все это работает только в том случае, если в файле Excel первая же строка - это имена столбцов, например, "date", "IP" и так далее, тогда запрос отлично все забирает:
sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,"1.xls");
      TRY
    {
        // Открываем базу данных,указывая DSN
     base.Open(NULL,false,false,sDsn);
        // Выделяем память под доступ к данным
        CRecordset recset( &base);
        
sSql = "SELECT IP FROM [Sheet1$] GROUP BY IP";

        recset.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);

            while( !recset.IsEOF())
        {
            recset.GetFieldValue("IP",temp2);
                        recset.MoveNext();
            
        }
            
            recset.Close();
            
            base.Close();

При этом исходный файл выглядит так:
date                     IP                        Name
02.02.2016       192.168.0.124        user3
02.02.2016       192.168.0.15          user2
...
03.02.2016       192.168.0.162        user1

Если же файл отличается от такого шаблона, допустим, первые две строки занимают некое описание, а уже потом идут требуемые столбцы, то ничего не работает. Например, в этом случае:

Файл Excel
12 февраля 2016
date                     IP                        Name
02.02.2016       192.168.0.124        user3
02.02.2016       192.168.0.15          user2
...
03.02.2016       192.168.0.162        user1

Вот как заставить CRecordset читать не с первой ячейки-первого столбца, а в заданном диапазоне? То есть как ему задать фокус, образно говоря? Спасибо за ответы smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)