Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Меняются типы параметров в 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]

Мнение такое: вы нас обманываете. Или что-то недоговариваете.


Наверх

Титульная страница Поиск, карта сайта Написать письмо