Текущий архив: 2006.12.03;
Скачать: CL | DM;
Вниз
Запрос Найти похожие ветки
← →
NigthSkif (2006-11-13 06:52) [0]Доброе время суток всем. Скажите, что не так
q := TQuery.Create(nil);
q.DatabaseName := "DB";
q.Close;
q.Params.CreateParam(ftInteger, "Rez", ptOutput);
q.Params.CreateParam(ftString, "NewName", ptInput);
q.SQL.Clear;
q.Params.ParamByName("NewName").AsString := edtName.Text;
q.SQL.Add("IF EXISTS (SELECT Nam FROM dbNames WHERE Nam= :NewName) " +
"SELECT begin :Rez=1 end "+
"ELSE " +
"begin " +
"INSERT INTO dbNames(Nam) " +
"VALUES(NewName) " +
"SELECT :Rez=0 " +
"end");
q.ExecSQL;
i := q.Params.ParamByName("Rez").AsInteger;
q.Close;
q.Destroy;
Когда выполнятся, говорит следующее: Field Rez=1 is of an unknown type.
Чем лечить?
← →
Johnmen © (2006-11-13 10:04) [1]
> Скажите, что не так
1. q.Close;
Зачем закрывать неоткрытую дверь?
2. q.SQL.Clear;
Зачем выливать воду из пустого стакана?
3. Такое создание параметров - это бред. Как работать с параметрическим запросом написано в F1 с примерами.
4. И самое главное
IF EXISTS ....
Это не запрос!
← →
Anatoly Podgoretsky © (2006-11-13 10:21) [2]3. и бессмысленно, они все равно уничтожаются несколькими строками ниже и не один раз
← →
Desdechado © (2006-11-13 11:47) [3]Anatoly Podgoretsky © (13.11.06 10:21) [2]
Это зависит от настроек TQuery, но поскольку автор их не меняет, то действительно у него все параметры затираются.
5. Обращение Params.ParamByName несколько избыточно, достаточно просто ParamByName
Страницы: 1 вся ветка
Текущий архив: 2006.12.03;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.06 c