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

Аудит и оптимизация QA-процессов
онлайн, начало 24 декабря
Автоматизация функционального тестирования
онлайн, начало 27 ноября
Логи как инструмент тестировщика
онлайн, начало 30 ноября
Тестирование REST API
онлайн, начало 30 ноября
Фотография

Чтение информации из таблицы 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


Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн



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

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

Яндекс.Метрика
Реклама на портале