Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки. / 15 сообщений из 15, страница 1 из 1
08.11.2007, 11:51
    #34924427
Krann
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Есть Книга Excel. На листе есть именованная область.
Стоит задача - проанализировать колонку в именованной области и получить адреса ячеек на данном листе, в которых ошибки.
RecordSet с ошибочными данными я получил вот так:
Код: plaintext
1.
2.
3.
4.
5.
Set Cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
    
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & txtExcelName & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
rs.Open "SELECT Колонка1 FROM [" & ИменованнаяОбласть & "] Where Not isNull(Колонка1);", Cnn, adOpenStatic, adLockOptimistic

Подскажите пжлст. Как?
...
Рейтинг: 0 / 0
08.11.2007, 12:00
    #34924472
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Я точно не знаю, но может быть в selecte можно и вытащить номера строк??? Попробуй.
А так дальше можешь работать с записями перебирая их и при помощи Find искать их адреса.
Хотя почему бы тебе сразу так не сделать вместо select ...

-----------
Андрей.
...
Рейтинг: 0 / 0
08.11.2007, 12:05
    #34924493
Krann
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
BelkinЯ точно не знаю, но может быть в selecte можно и вытащить номера строк??? Попробуй.
А так дальше можешь работать с записями перебирая их и при помощи Find искать их адреса.
Хотя почему бы тебе сразу так не сделать вместо select ...

-----------
Андрей.

Файл оч.тяжелый, открывать его и бегать по ячейкам в разы медленней, чем через Так.
Насчет номеров строк - у меня такая идея и была, только не могу найти как.
...
Рейтинг: 0 / 0
08.11.2007, 13:41
    #34924961
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Krann BelkinЯ точно не знаю, но может быть в selecte можно и вытащить номера строк??? Попробуй.
А так дальше можешь работать с записями перебирая их и при помощи Find искать их адреса.
Хотя почему бы тебе сразу так не сделать вместо select ...

-----------
Андрей.

Файл оч.тяжелый, открывать его и бегать по ячейкам в разы медленней, чем через Так.
Насчет номеров строк - у меня такая идея и была, только не могу найти как.
Ну что-то типао того:
rs.Open "SELECT Колонка1, Колонка1.Row FROM ....
...
Рейтинг: 0 / 0
08.11.2007, 13:49
    #34925002
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Если именованный диапазон может начинаться в любом месте листа, то способа определить ячейку нет. Ни ADODB ни Jet ничего не знают про экселевские объекты.
...
Рейтинг: 0 / 0
08.11.2007, 13:56
    #34925033
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
KrannЕсть Книга Excel. На листе есть именованная область.
Стоит задача - проанализировать колонку в именованной области и получить адреса ячеек на данном листе, в которых ошибки.

Может тебе нужно Update сделать и не париться?
...
Рейтинг: 0 / 0
08.11.2007, 14:08
    #34925100
Krann
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
AntonariyЕсли именованный диапазон может начинаться в любом месте листа, то способа определить ячейку нет. Ни ADODB ни Jet ничего не знают про экселевские объекты.
Да мне хотя бы определить, где я внутри именованной области нахожусь, а там я уже разрулюсь
...
Рейтинг: 0 / 0
08.11.2007, 14:25
    #34925185
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
rs.AbsolutePosition - текущая строка, rs.Fields(i) - (i + 1)'тая колонка.
...
Рейтинг: 0 / 0
08.11.2007, 15:08
    #34925370
Krann
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Antonariyrs.AbsolutePosition - текущая строка, rs.Fields(i) - (i + 1)'тая колонка.
Неа. Это позиция не внутри именованной области, а внутри рекордсета.
Но это можно использовать если делать Select * From Область. Без Where и Order by.
...
Рейтинг: 0 / 0
08.11.2007, 16:36
    #34925765
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Совершенно верно.
Ни ADODB ни Jet ничего не знают про экселевские объекты.Если эта мысль для вас непонятна, попробую иносказательно.

Представьте себе такую ситуацию: вам дали тяжелым по голове, погрузили в мешок и отправили самолетом в неизвестное далеко. Через какое-то время вы очнулись. Внимание, вопрос! Какие географические координаты имеет самолет?

Чтобы точно определить позицию нужно узнать иденификатор записи, открыть эксель, найти идентификатор на листе, получить его ячейку.
...
Рейтинг: 0 / 0
08.11.2007, 16:50
    #34925833
Krann
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
AntonariyСовершенно верно.
Ни ADODB ни Jet ничего не знают про экселевские объекты.Если эта мысль для вас непонятна, попробую иносказательно.

Представьте себе такую ситуацию: вам дали тяжелым по голове, погрузили в мешок и отправили самолетом в неизвестное далеко. Через какое-то время вы очнулись. Внимание, вопрос! Какие географические координаты имеет самолет?

Чтобы точно определить позицию нужно узнать иденификатор записи, открыть эксель, найти идентификатор на листе, получить его ячейку.

На счет самолета и до этого понимал. Просто была надежда, что в случае, когда в Exstended Properties указываем Excel, то появляется доп.возможность посмотреть и Row Листа.

Тогда может можно как-то сделать свой уникальный ID в самом селекте. Типа RecNo в Foxe.
Пытался найти по форуму, только там куча примеров, когда внутри таблицы уже есть уникальный код.
...
Рейтинг: 0 / 0
08.11.2007, 16:53
    #34925850
Krann
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Поясню:
Если у нас есть Селект:
Select * From Tbl, то как можно написать в нем, чтобы сам селект добавил колонку с ID.
А уж если сделать это, то подзапросом можно быстро соорудить искомое.
...
Рейтинг: 0 / 0
08.11.2007, 21:14
    #34926474
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Колонка с id должна присутствовать в tbl.
...
Рейтинг: 0 / 0
09.11.2007, 07:58
    #34926804
Krann
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
AntonariyКолонка с id должна присутствовать в tbl.
По другому никак? :(
...
Рейтинг: 0 / 0
09.11.2007, 10:01
    #34927039
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки.
Увы.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с Excel через Jet.OLEDB. Как из RecordSet получить адрес ячейки. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]