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