Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизМеняются типы параметров в TQuery - почему и как лечить?? Найти похожие ветки
← →
dna aka Pahan (2004-03-27 18:38) [0]Добрый день, уважаемые мастера!
Пишу прогу по работе с базой MS SQL Server на Delphi7.
Для вставки и модификации записей использую TQuery.
Проблема заключается в следующем: параметрам, передаваемым в запрос ставлю типы "Integer" и "String". После перезапуска дельфей и открытию программы эти типы сами выставляются в "Shortint" и "OleStr" соответственно.
Причем, если до этого все работало нормально, после работать перестает и приходится заново все выставлять вручную.
Очень хотелось-бы узнать ваше мнение по этому поводу.
Заранее благодарен.
← →
KSergey © (2004-03-28 09:17) [1]Мнение такое: вы нас обманываете. Или что-то недоговариваете.
← →
dna aka Pahan (2004-03-28 15:06) [2]Отнюдь.
При перезапуске для TParam[i] сохраняется значение поля DataType: ftString и ftInteger.
Но для поля Value -> Type значение сбрасывается:
из Integer в Shortint и
из String в OleStr соответственно.
Причем это в D7.
В D5 немного по другому:
из Integer в Byte, а String сохраняется нормально.
А может вообще этими параметрами не пользоваться?? Не наблюдалость ли у вас глюков при работе с ними?
← →
KSergey © (2004-03-28 15:35) [3]Это что еще за TParam[i]??
Глюков не помню. Правда типы, пожалуй, никогда не проверял. но если бы скосились типы - всяко бы ошибки посыпались...
А кусок конкретного кода - можно? Только коротенько, но чтобы на нем этот глюк наблюдался (обязательно проверьте!)
← →
dna aka Pahan (2004-03-28 17:44) [4]Я имел ввиду для Query.Params[i].
Обнаружил, что данные глюки работе не мешают, видимо для типа Variant это не критично. (например через Byte вроде нормально передаются значения больше 255).
А если желаете проверить, достаточно кинуть на форму TQuery, в SQL написать запрос с параметром. Для параметра установите в Value -> Type тип Integer. Потом сохранить и переоткрыть проект.
Тип изменится (по крайней мере так происходит в моих D5 и D7).
← →
dna aka Pahan (2004-03-28 18:21) [5]Это первый мой "относительно" большой проект, работающий с БД, удивляюсь нестабильности работы: постоянно что-то слетает (причем не по исключению от сервера БД, а по нарушению доступа) Самое главное не пойму в чем причина. Работаю исключительно с базой, никакой записи в память, указатели не использую, ничего не освобождаю.
Так же часто бывают "зависания" при обновлении данных (курсор меняется crSQLWait и в и прога виснет) Таблицы не блокирую. Использую только единичные вставки, никаких циклов.
В нескольких TQuery использую не запрос, а процедуру, которая в зависимости от параметров возвращает определенный набор данных. Хотя она работает нормально... Может здесь собака зарыта?
Хотелось-бы узнать возможные причины таких глюков.
(А может дело во мне, но все-же...)
← →
KSergey © (2004-03-29 09:16) [6]> [4] dna aka Pahan (28.03.04 17:44)
> А если желаете проверить, достаточно кинуть на форму TQuery,
> в SQL написать запрос с параметром. Для параметра установите
> в Value -> Type тип Integer. Потом сохранить и переоткрыть
> проект.
Даже проверять не буду. Это враки, извините. Ни в одном проекте такого не наблюдал.
Единственное что приходит на ум: а в Query свойство Active прямо при разработке установлено в True?
Есть подозрение, что что вы неверно устанавливаете типы, а прога при коннекте к серверу проставляет нужные типы. Не знаю, может и так, но вообще-то я такого не наблюдал...
← →
Reindeer Moss Eater © (2004-03-29 09:25) [7]TParam.DataType
Indicates the type of field whose value the parameter represents.
property DataType: TFieldType;
Description
DataType is set automatically when a value is assigned to the parameter.
← →
dna aka Pahan (2004-03-29 20:27) [8]2 KSergey:
>Даже проверять не буду. Это враки, извините. Ни в одном проекте такого не наблюдал.
Ваше утверждение ничем не обосновано. Конечно, легче сказать "враки", чем проверить и самому убедиться в обратном.
А с Query все в порядке, это абсолютно точно.
2 Reindeer Moss Eater:
Я говорил про Value -> Type, а не про DataType, в Object Inspector это два разных поля.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.07 c