Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.06.2010, 13:16
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Есть програма на VBA, которая цепляется через ADODB к excel-евским файлам и читает их содержимое в Рекордсет средством sql запроса. код процедуры "цепляния" такой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. при этом на входе подаются такие данные Шапка1 Шапка2Слово 10000Слово 10000Слово 10000Слово 10000_1Слово 10000_1Слово 10000 Проблема в том, что при чтении поле 2 определяется как тип 5-числовое, а должен быть как тип 200 - т.е. текстовое и в итоге в рекордсете эти поля (где текст) получается null. Т.е. рекордсет возвращает такой массив Шапка1 Шапка2Слово 10000Слово 10000Слово 10000Слово NULLСлово NULLСлово 10000 В чем может быть трабла? p.s. GuessRow менял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:19
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
Вот из-за этой в частноти беды я и отказался от работы с экселем через ODBC и стал работать через COM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:20
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
если в самом экселе проставить ` в начале столбца то будет стринговый тип ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:26
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Shocker.Pro не расстраивай меня, должен же быть выход Konst_Oneесли в самом экселе проставить ` в начале столбца то будет стринговый тип это конечно хороший вариант, но сюда не подходит. Поясню. У меня файл к которому я обращаюсь сгенерирован другим приложением, изменить приложение будет очень тяжело. По факту получается надо зайти в этот файл, обработать "нужные" поля и закрыть, потом к нему подсасываться. Но это само по себе некошер, потому, что если я его буду открывать (файл) то смысл его потом закрывать и обрабатывать, проще сразу создать массив variant и наполнять из открытого файла. интересует есть ли такое решение как предопределенный тип поля рекордсета. Просто я ADODB толком не умею настраивать для connect-а ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:29
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
а если GuessRow=1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:35
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Shocker.Pro, не получается потестить к сожалению админских прав нет сейчас в службу тех поддержки обращусь попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:37
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
ShamanusShocker.Pro, не получается потестить к сожалению админских прав нет сейчас в службу тех поддержки обращусь попробую Microsoft??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:39
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Shocker.Pro, нет не микрософт, большая компания... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:42
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Shocker.Pro, а еще попутно такой вопрос, я отказался от открытия файла, т.к. файл может быть большим и ADODB sql запросом цепляется только к тому листу, который мне нужен. а открытие файла через COM по сути равноценно обычному открытию, т.е. файл например размером 40 мб, будет открываться 10-15 секунд, так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:43
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
Shamanusа открытие файла через COM по сути равноценно обычному открытию, т.е. файл например размером 40 мб, будет открываться 10-15 секунд, так? Да, верно. В аксессе есть классная штука - TransferSpreadsheet Ща поковырял, вроде это свойственно только аксессу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:44
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
Shocker.ProShamanusа открытие файла через COM по сути равноценно обычному открытию, т.е. файл например размером 40 мб, будет открываться 10-15 секунд, так? Да, верно. В аксессе есть классная штука - TransferSpreadsheet Ща поковырял, вроде это свойственно только аксессу. А то, глядишь, если файлы такого размера, может дешевле запустить аксесс как СОМ и через него высосать данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:47
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Shocker.Pro, через джеёёпппу можно и проще, разработчика той проги попинать, чтобы он символом ' предопределял тип поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 13:54
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Shocker.Proа если GuessRow=1? не получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 14:04
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Ну если что выкладываю пример в виде файла в архиве 2 файла, подключающийся и тестовый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 14:11
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
А, так ты из экселя подключаешься... Попробуй покопаться в установлении связей между двумя книгами Что-то типа формулы в ячейке: "=[Книга1]Лист1!$A$1" Тогда вторичная книга полностью открываться вроде бы не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 14:12
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
точнее =[c:\Книга1.xls]Лист1!$A$1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 14:55
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Shocker.Pro, хмм т.е. создать виртуальный com объект, там на листе создать ссылки на лист существующей книги объекта. загрузить содержимое в массив. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 14:58
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
Shamanusт.е. создать виртуальный com объект, Зачем? У тебя же есть текущая книга, в ней и лепи. Ставишь ссылки(у) и считываешь в массив. На крайняк можно скрытый лист завести. Надо смотреть, как будет по скорости с большими файлами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 15:42
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
> Автор: Shamanus > Ну если что выкладываю пример в виде файла Измени запрос на Код: plaintext 1. 2. И будет в нужном месте 200 Только счастья все равно не получишь, потому что по нескольким первым(1-3??? может можно и больше, не знаю) строкам определяется тип данных в столбце. И это все равно числа. Так вот. После вычитки всего что может быть понятно как число, а все непонятное как число Nullится и после, уже при выполнении самого запроса все Nullы фильтруются и не попадают в результат. Как вариант, можно попробовать отыскать ключ в реестре, который отвечает за количество строк, по которым определяется тип данных столбца, разыскать и изучить документацию по этому значению. Мне видится такая возможность - установтиь количиство строк для определения типа данных равным порядка 60000. и тогда можно выполнять мой запрос, потому что если выполнять твой запрос то могут попастся данные, в которых в этом поле будут только числовые коды. НО! это если ТАК можно будет сделать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 15:45
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
Игорь Горбонос, Не выйдет. TypeGuessRow от 1 до 16 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 15:50
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
Да, забыл дописать Если мой склероз меня не подводит, то где искать ключ в реестре знает Shocker.Pro А почитать насчет всяких фенечек в запросах ОДБЦ можно здесь , но мне удобнее читать здесь . И только если что-то непонятно, читать первую ссылку Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 16:07
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Игорь Горбонос Да, забыл дописать Если мой склероз меня не подводит, то где искать ключ в реестре знает А почитать насчет всяких фенечек в запросах ОДБЦ можно здесь , но мне удобнее читать здесь . И только если что-то непонятно, читать первую ссылку Игорь, Shocker.Pro, спасибо за полный ответ странно, что даже при GuessRow=16, все равно в данном конкретном случае возвращается результат тип 5. Хотя текстовое значение уже в строке 9. буду думать или заставлю стороннее приложение описывать типы в полях (ставить апострофы перед числовыми величинами) или действительно полистовой импорт (но этого если честно не хочется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 16:14
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
Shamanusстранно, что даже при GuessRow=16, все равно в данном конкретном случае возвращается результат тип 5. Хотя текстовое значение уже в строке 9. Он, по всей видимости, определяет по среднему. Ну и опять же, ты же не можешь гарантировать, что стороннее приложение не выдаст тебе числа в первых 16-ти позициях. Поэтому я и спросил про 1, думал, может по заголовкам столбцов решит, что все является только текстом... не выгорело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 16:15
|
|||
|---|---|---|---|
Неверное определение type |
|||
|
#18+
Игорь, прикольная ссылка . Действительно удобно описано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 16:39
|
|||
|---|---|---|---|
|
|||
Неверное определение type |
|||
|
#18+
> Автор: Shocker.Pro > Поэтому я и спросил про 1, думал, может по заголовкам столбцов решит, что все является только текстом... не > выгорело Что-бы первую строку интерпретировало как данные, в строке подключения нужно было указывать в строке подключения HDR=No, что тоже не выход. Кстати! На любимом сайте написанно: Check out the [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel] located registry REG_DWORD "TypeGuessRows". That's the key to not letting Excel use only the first 8 rows to guess the columns data type. Set this value to 0 to scan all rows. This might hurt performance. Please also note that adding the IMEX=1 option might cause the IMEX feature to set in after just 8 rows. Use IMEX=0 instead to be sure to force the registry TypeGuessRows=0 (scan all rows) to work. Правда это относится только к Provider=Microsoft.Jet.OLEDB.4.0 или действует на все драйверы, непонятно Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=60&mobile=1&tid=2159645]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 388ms |

| 0 / 0 |
