Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 читать не с первой ячейки-первого столбца, а в заданном диапазоне? То есть как ему задать фокус, образно говоря? Спасибо за ответы ![]() |