powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Неверное определение type
13 сообщений из 38, страница 2 из 2
Неверное определение type
    #36692964
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносЧто-бы первую строку интерпретировало как данные, в строке подключения нужно было указывать в строке подключения HDR=No,что тоже не выход.

Почему, очень даже выход в данном случае.
Все поля определятся как текст, и затащится все, что есть, а преобразование сделаем на лету.
...
Рейтинг: 0 / 0
Неверное определение type
    #36693015
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИгорь ГорбоносЧто-бы первую строку интерпретировало как данные, в строке подключения нужно было указывать в строке подключения HDR=No,что тоже не выход.

Почему, очень даже выход в данном случае.
Все поля определятся как текст, и затащится все, что есть, а преобразование сделаем на лету.

т.е. вместо сего

Код: plaintext
cn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DriverId=790;ReadOnly=True;" & "DBQ=" & strSourceFile & ";"

так
Код: plaintext
cn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DriverId=790; HDR=No;ReadOnly=True;" & "DBQ=" & strSourceFile & ";"

?
...
Рейтинг: 0 / 0
Неверное определение type
    #36693019
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так не сработало
...
Рейтинг: 0 / 0
Неверное определение type
    #36693039
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему именно ОДБЦ драйвер, а не Provider=Microsoft.Jet.OLEDB.4.0???

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Неверное определение type
    #36693053
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то все дюже примитивно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub Main()
    Dim cn As New ADODB.Connection, _
        r As New ADODB.Recordset, _
        sExcelFile As String

    sExcelFile = App.Path & "\Test.xlsx"

    cn.CursorLocation = adUseClient
    cn.mode = adModeRead
    cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=""" & sExcelFile & """;Mode=Read;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
    
    r.Open "SELECT * FROM [a1:b65536]", cn, adOpenStatic, adLockReadOnly

    Debug.Print "Test 1:", r( 0 ).Name, r( 0 ).Type, r( 0 ), r( 1 ).Name, r( 1 ).Type, r( 1 )
    
    r.Close

    r.Open "SELECT 1 AS F1, '' AS F2 FROM [a1:b1] WHERE F1<>F1 UNION SELECT * FROM [a1:h65536]", cn, adOpenStatic, adLockReadOnly

    Debug.Print "Test 2:", r( 0 ).Name, r( 0 ).Type, r( 0 ), r( 1 ).Name, r( 1 ).Type, r( 1 ).DefinedSize, r( 1 )
End Sub
...
Рейтинг: 0 / 0
Неверное определение type
    #36693057
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: 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 или действует на все драйверы, непонятно



Спасибо!!!! На тестовых файлах сработало. (я про TypeGuessRows=0 )
Сейчас погоняю по папке :)
...
Рейтинг: 0 / 0
Неверное определение type
    #36693069
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShamanusСпасибо!!!! На тестовых файлах сработало. (я про TypeGuessRows=0 )
Сейчас погоняю по папке :)

Только вот лазить в подобные настройки реестра крайне нежелательно.
...
Рейтинг: 0 / 0
Неверное определение type
    #36693364
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFShamanusСпасибо!!!! На тестовых файлах сработало. (я про TypeGuessRows=0 )
Сейчас погоняю по папке :)

Только вот лазить в подобные настройки реестра крайне нежелательно.

почему?
...
Рейтинг: 0 / 0
Неверное определение type
    #36693421
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShamanusAndrFShamanusСпасибо!!!! На тестовых файлах сработало. (я про TypeGuessRows=0 )
Сейчас погоняю по папке :)

Только вот лазить в подобные настройки реестра крайне нежелательно.

почему?

Потому что не фиг трогать системные настройки компа пользователя, тем более когда он не знает об этом. Это дюже плохой тон.

Тот пример что я вам дал вполне рабочий, простой и не требует правки реестра - используйте его.
...
Рейтинг: 0 / 0
Неверное определение type
    #36693431
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз:

Код: plaintext
1.
r.Open "SELECT 1 AS F1, '' AS F2 FROM [a1:b1] WHERE 1<>1 UNION ALL SELECT * FROM [a1:b65536]", cn, adOpenStatic, adLockReadOnly

Здесь мы первым SELECT-ом определяем формат столбцов, а вторым читаем данные в соответствии с этим форматом.

Проще некуда...
...
Рейтинг: 0 / 0
Неверное определение type
    #36693434
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrF,

А лист как указывать в таком формате?
...
Рейтинг: 0 / 0
Неверное определение type
    #36693806
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAndrF,

А лист как указывать в таком формате?

[МойЛист$a1:b1] или ['Мой лист$'a1:b1]
...
Рейтинг: 0 / 0
Неверное определение type
    #36694043
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFShamanusAndrFShamanusСпасибо!!!! На тестовых файлах сработало. (я про TypeGuessRows=0 )
Сейчас погоняю по папке :)

Только вот лазить в подобные настройки реестра крайне нежелательно.

почему?

Потому что не фиг трогать системные настройки компа пользователя, тем более когда он не знает об этом. Это дюже плохой тон.

Тот пример что я вам дал вполне рабочий, простой и не требует правки реестра - используйте его.

ааа, Вы про это,
я в курсе что не хорошо, просто это не пользовательский комп. Этот комп имеет основной целью подключение к файлам данных. Эдакий отчетный "сервер".

А по поводу Вашего кода пока не получается запустить. Ругается на втором селекте. Буду разбираться.

Спасибо!
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Неверное определение type
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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