Необходимо вставить новую запись. Заполняю InsertSQL:
INSERT INTO Licenses (Company, MachineID, History)
VALUES (:Company, 1234567, :History)
Проблема с параметрами. Т.е. я создаю и настраиваю параметры Company, MachineID, ...
Однако эти параметры не заносятся в таблицу, заносятся только явно указанные. В этом примере - MachineID. Делаю так:
with Query do begin
//Prepare;
ParamByName('Company').AsString := Company;
//ParamByName('MachineID').AsInteger := MachineID;
ParamByName('History').Assign(History);
Insert;
Post;
Close;
ExecSQL;// обновляю данные в гриде
end;
Почему?
P.S. Я использую компоненты IB Objects
Не видит параметров SQL запроса
-
- Сообщения: 1
- Зарегистрирован: 17 апр 2006, 01:57
-
- Сообщения: 41
- Зарегистрирован: 27 окт 2004, 11:06
Re: Не видит параметров SQL запроса
Проблема в неправильном использовании IBQuery. InsertSQL предназначен для работы с наборами данных, полученных из сложных запросов (обращений к нескольким таблицам). Достаточно заполнить (сгенерировать) правильно InsertSQL - остальное IBO сделает сам. Нет необходимости в прямом вызове InsertSQL. Если хочешь делать вставку сам - запускай новую транзакцию, заполняй параметры для отдельной Query и выполняй ее. После этого передергиваешь основную Query и все.DevilDevil писал(а):Необходимо вставить новую запись. Заполняю InsertSQL:
INSERT INTO Licenses (Company, MachineID, History)
VALUES (:Company, 1234567, :History)
Проблема с параметрами. Т.е. я создаю и настраиваю параметры Company, MachineID, ...
[skip]
P.S. Я использую компоненты IB Objects
Передернуть можно так:
Код: Выделить всё
// заносим изменения в отдельной транзакции
UpdateTransaction.StartTransaction;
MyUpdateQuery.Prepare;
MyUpdateQuery.ParamValues['MyParam']:=12345;
MyUpdateQuery.Execute;
MyUpdateQuery.Close;
UpdateTransation.Commit;
// передергиваем для отображения изменений
MainTransaction.Refresh(True);
MainQuery.Refresh;