Перейти к содержимому

Фотография

Чтение информации из таблицы Excel


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Al*GatoR

Al*GatoR

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Александр К
  • Город:г.Киев

Отправлено 14 апреля 2008 - 15:16

Добрый вечер.

При использовании данного текста:
[ ] HDATABASE hDB = DB_Connect ("DSN=Segue DDA Excel;DBQ=C:\test001_.xls")	[ ] hSql = DB_ExecuteSql (hDB, "SELECT * FROM [{ls_tables[i]}$]") 	[-] while (DB_FetchNext (hSql, s, s1))		[ ] Print ("Num = {s} Char = {s1} ")		[+]  if (s1 != null)			[ ]  ListAppend ( a_Words [  len(s1) ] , s1 )	[ ] 	[ ] DB_Disconnect (hDB)

После заливки 40000 - 45000 строк , выдает ошибку:
*** Error: (HY000) [Microsoft][Драйвер ODBC Excel] Переполнение числового поля.

Подскажите что делать или в чем проблема.
  • 0

#2 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 14 апреля 2008 - 15:36

Добрый вечер.

При использовании данного текста:

[ ] HDATABASE hDB = DB_Connect ("DSN=Segue DDA Excel;DBQ=C:\test001_.xls")	[ ] hSql = DB_ExecuteSql (hDB, "SELECT * FROM [{ls_tables[i]}$]") 	[-] while (DB_FetchNext (hSql, s, s1))		[ ] Print ("Num = {s} Char = {s1} ")		[+]  if (s1 != null)			[ ]  ListAppend ( a_Words [  len(s1) ] , s1 )	[ ] 	[ ] DB_Disconnect (hDB)

После заливки 40000 - 45000 строк , выдает ошибку:
*** Error: (HY000) [Microsoft][Драйвер ODBC Excel] Переполнение числового поля.

Подскажите что делать или в чем проблема.

Проверьте в Экселе, что соответствующие колонки имеют числовой тип, то есть именно число, а не General.
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#3 Al*GatoR

Al*GatoR

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Александр К
  • Город:г.Киев

Отправлено 15 апреля 2008 - 06:07

Проверьте в Экселе, что соответствующие колонки имеют числовой тип, то есть именно число, а не General.


Проверил, колонки нужного типа, не "Общий".
  • 0

#4 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 15 апреля 2008 - 13:59

Проверьте в Экселе, что соответствующие колонки имеют числовой тип, то есть именно число, а не General.


Проверил, колонки нужного типа, не "Общий".


я проверил на похожем примере - всё отрабатывает отлично. Выложите сюда пример таблицы, на которой можно воспроизвести проблему (файл xls лучше переименовать в txt или заархивировать)
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#5 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 15 апреля 2008 - 14:40

Да, и еще проверьте на меньшем количестве записей. Например, не 40 тысяч, а 32 тысячи (возможно вокруг этого числа что-то вертится). А также убедитесь, что в ячейках, помеченных как числовые, нет пустых строк или нечисловых значений.
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#6 Al*GatoR

Al*GatoR

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Александр К
  • Город:г.Киев

Отправлено 16 апреля 2008 - 14:13

Меньше записей прорабатывает без запинки. В числовом столбике нет пустых ячеек.
Думаю что именно столько строк можно прочитать за один testcase. Но не знаю где это можно изменить или уточнить.

Вот этот файл, я его сократил (все данные можна размножить)

Прикрепленные файлы

  • Прикрепленный файл  test001_.txt   16,5К   35 Количество загрузок:

  • 0

#7 vass

vass

    Опытный участник

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 21 апреля 2008 - 11:31

потестил. размножил текст на первом листе, получил 44544 строки и все их вычитал. Вычитывал их в память а потом еще и в файл скинул - все нормально.
(хотя и долго :rtfm: ... но это уже проблемы не силка а меня :friends: )

PS: Прикрепленный файл  test001_rar.txt   328,76К   63 Количество загрузок: - архив с моей версией размножения, проверьте у себя ;)

PPS: убрал динамическое выделение памяти, после чего вычитка всей таблицы, а потом запись в файл занимает всего 9 минут. ()можно все сделать и ЕЩЕ быстрее, но если честно - в пересчете на строки - скорости по 0.01с на строку мне хватает с головой (у нас таблицы < 50 записей)

Сообщение отредактировал vass: 21 апреля 2008 - 17:16

  • 0

#8 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 10 ноября 2012 - 12:03

Прошло более 4х лет...

Я открыл СилкТест, чтобы написать простенький скрипт, наткнулся на вышеупомянутую проблему, погуглил... и пришел сюда :)
Нигде толкового ответа не нашел, пришлось решать самому.

В моем случае проблема была в следующем.
При вычитывании строк одна из ячеек была пустой. Для совместимости с другим приложением я ввёл в ячейку выражение
=""
Это выражение соответствует пустой строке. Однако СилкТест при попытке вычитать это значение выдает ошибку о переполнении. Чтобы решить проблему и сохранить совместимость с другим приложением (которое не может обрабатывать пустые ячейки), я вместо ="" ввел в ячейку ' (одиночную кавычку).
Одиночная кавычка также соответствует пустой строке, силктест воспринимает ее хорошо.

Любопытный момент, который мешает отладке: если экселевский файл открыт экселем во время работы скрипта, эта проблема не возникает. А если закрыт - тогда проблема проявляется.
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#9 microfocus

microfocus

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Микро Фокус Борланд

Отправлено 29 марта 2013 - 14:09

Прошло более 4х лет...

Я открыл СилкТест, чтобы написать простенький скрипт, наткнулся на вышеупомянутую проблему, погуглил... и пришел сюда :)
Нигде толкового ответа не нашел, пришлось решать самому.

В моем случае проблема была в следующем.
При вычитывании строк одна из ячеек была пустой. Для совместимости с другим приложением я ввёл в ячейку выражение

=""
Это выражение соответствует пустой строке. Однако СилкТест при попытке вычитать это значение выдает ошибку о переполнении. Чтобы решить проблему и сохранить совместимость с другим приложением (которое не может обрабатывать пустые ячейки), я вместо ="" ввел в ячейку ' (одиночную кавычку).
Одиночная кавычка также соответствует пустой строке, силктест воспринимает ее хорошо.

Любопытный момент, который мешает отладке: если экселевский файл открыт экселем во время работы скрипта, эта проблема не возникает. А если закрыт - тогда проблема проявляется.

С Вашего разрешения внесём этот трик в FAQ, который МикроФокус Борланд сейчас готовит.
Не планируете обновлять http://silktutorial.ru/?
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных