Неправильно считывается значение из Excel через RecordSet.Fields(ъ).Value #754716


#0 by drdroid
Читаю эксель через "ADODB.RecordSet", в одной ячейке есть строка: 760557817864 тип ячейки общий в самом файле, а RecordSet.Fields(ъ).Value возвращает мне: 7,60558E+11 кажется гдето в экселе можно было настроить чтоб правильно отображало и тогда RecordSet.Fields(ъ).Value должно правильно возвращать.... Напомните, кто знает, где это сделать?
#1 by Serginio1
Поставь IMEX=1;
#2 by spectre1978
Попробуйте использовать .Text вместо .Value
#3 by МихаилМ
типизируйте поля в запросе
#4 by Cyberhawk
"Неправильно считывается значение" // почему ты так решил?
#5 by spectre1978
ну это он так фигурально выразился. На самом деле обычное преобразование в число с плавающей точкой.
#6 by spectre1978
хотя, если речь идет об ИНН, банковском счете или чем-то еще подобном, то такой неестественный интеллект и правда никому не нужен
#7 by drdroid
поле объекта не обнаружено
#8 by spectre1978
черт, точно, это я с объектом Range попутал. Тогда, действительно, только явно указывать свойства ячеек (Ctrl+1 в экселе). Указывать их как Текст, или же ставить апостроф (') перед значением...
#9 by spectre1978
у меня подобная ситуация была с экселевским столбцом, в котором хранились ИНН. Вышел из положения указанием апострофа перед значением в таблице.
#10 by drdroid
не годится, у меня куча файлов автоматом грузятся. как?
#11 by spectre1978
тогда можно попробовать повнимательнее прочитать статьи по ADO и создать recordset с коллекцией полей не автоматом при выполнении запроса, а вручную. При этом явно указать, что требуемое поле - строковое. А потом скормить этому рекордсету запрос и открыть его. Честно скажу, что никогда так не делал, но насколько знаю, это возможно. Главное чтобы это не была фича самого OLEDB провайдера, потому что в этом случае все манипуляции могут оказаться бесполезны - вернет то же самое в виде строки и всех делов...
#12 by spectre1978
Еще вариант (в порядке бреда) - кастировать в строку прямо в SQL: Select Str(F1) From Лист1$
#13 by фобка
это не ole
#14 by фобка
CAST Текст запроса?
#15 by spectre1978
да, косяк :) скорее всего он ходит через движок Jet, а там CAST, насколько я помню, нет. Там есть функция VBA Str .
#16 by drdroid
такой: Command.CommandText = "SELECT * FROM ["+СписокЛистов[ЧитаемСЛистаНомер].Значение+"]";
#17 by МихаилМ
ole db jet поддерживает , как минимум работу в запросах с встроенными ф-циями , те можно использовать
#18 by spectre1978
если в запросе делать конвертацию, то * не пойдет, нужно указывать конкретные столбцы
#19 by drdroid
, попробую затестить. в зависимости от того что установлено выбирается либо: Provider=Microsoft.ACE.OLEDB.12.0; либо: Provider=Microsoft.Jet.OLEDB.4.0;
#20 by spectre1978
Помимо CStr можно еще функцию Format попробовать, там можно форматную строку указать, но тогда на входе обязательно должно быть число.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С