![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка в IBX? [D7, IB6.x]
tria © (2004-03-10 17:23:00)Пользую TIBSql. Для поля Decimal(15,6) при переборе выборки в строке q.Fields[j].AsVariant возникает ошибка. При чем варианты:
q.Fields[j].AsInteger,AsDouble,AsString выполняются нормально.
Сервер - Firebird 1.5 Embedded
Большая просьба: варианты "перейди на FIBplus" не предлагать.
Mike Kouzmine (2004-03-10 19:43:00) [1]И здесь кидают.....
Johnmen (2004-03-10 19:03:00) [2]>Если есть желание - могу кинуть
Не, не так. Если у тебя есть желание - то кидай
:)
Но только без FB
tria (2004-03-10 18:59:00) [3]Вопрос я задавал по-существу (по моему), не вдаваясь в детали.
Данная конструкция встречается в программе в нескольких местах, в том числе и при заполнении таблицы.
Для меня что название поля, что его номер имеют одинаковое смысловое значение - не я давал название, не я выставлял порядок следования полей. Тем более, что ко всем полям идет обращение в цикле - перебираются реквизиты объекта. Текст запроса тоже создается динамически.
Я боялся что беседа перейдет в такое русло, и это все-таки произошло.
Я пишу программу - конструктор для решения различных учетных задач. Если есть желание - могу кинуть работоспособный вариант для рецензии. В сжатом виде с Firebird embedded где-то 3 Мб.
Johnmen (2004-03-10 18:41:00) [4]>т.к. это быстрее. /и далее по тексту/
Быстрее. Но на сколько ? На пару наносекунд ? :)
>А если идет заполнение таблицы
Не понял... Где здесь и в вопросе про заполнение таблицы ????????????
tria (2004-03-10 18:34:00) [5]Задачу делаю не совсем обычную: пользователь сам задает структуру базы.
Обращение к полю делаю по номеру, т.к. это быстрее. А то сначала надо вызвать функцию, которая вернет наименование поля, а затем еще и в IBX будут перебираться наименования полей.
А если идет заполнение таблицы из пары тысяч записей, то по-моему налицо потеря производительности, хотя и небольшая.
Johnmen (2004-03-10 18:25:00) [6]Вообще-то к полям НД принято (обычно) обращаться по имени.
А если мы знаем имя поля и таблицу, то наверное знаем его, поля, параметры...:)
tria (2004-03-10 18:20:00) [7]Отслеживать текущий тип, и только если он Double то использовать AsDouble, а во всех остальных случаях - AsVariant. А мест много, вероятность пропустить где-то большая.
Johnmen (2004-03-10 18:15:00) [8]>tria © (10.03.04 18:13) [7]
>Хотя все-таки этонесколько сродни шаманству.
Что конкретно ?
tria (2004-03-10 18:13:00) [9]>Johnmen
Спасибо, SQLType помогло.
Хотя все-таки это несколько сродни шаманству.
Johnmen (2004-03-10 18:04:00) [10]Но имеется SQLType
tria (2004-03-10 17:57:00) [11]Могу ошибаться, но:
property Fields[const Idx: Integer]: TIBXSQLVAR;
А TIBXSQLVAR не имеет свойства DataType
Johnmen (2004-03-10 17:50:00) [12]>tria © (10.03.04 17:32) [2]
>т.к. я не знаю заранее какого типа у меня поле.
Есть св-во DataType :)
Domkrat (2004-03-10 17:45:00) [13]>Но для меня это действительно серьезная ошибка, т.к. я не знаю >заранее какого типа у меня поле.
Ответ:
>Пользую TIBSql. Для поля Decimal(15,6)
tria (2004-03-10 17:32:00) [14]>Johnmen
Спасибо на добром слове.
Но для меня это действительно серьезная ошибка, т.к. я не знаю заранее какого типа у меня поле.
Johnmen (2004-03-10 17:27:00) [15]Это очень серьезная ошибка...
:)