Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Меняются типы параметров в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
14-1081151876
syte_ser78
2004-04-05 11:57
2004.04.25
Запрограмировался. :)


14-1080819455
Dmitriy O.
2004-04-01 15:37
2004.04.25
Невезуха !


14-1080645968
DillerXX
2004-03-30 15:26
2004.04.25
Ззадача :)


4-1077375989
Юрий Ж.
2004-02-21 18:06
2004.04.25
Дата создания директории...


1-1081139267
jenbond
2004-04-05 08:27
2004.04.25
GExpert или CodeRush