![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADOQuery, SQL и MSAccess [D7, MSAccess ]
parovoZZ © (2006-02-17 23:15:00)Почему вот это работает
begin
Doc := WebBrowser.Document as IHTMLDocument2;
Element := Doc.All.Item ('text', 0) as IHTMLElement;
Mes := Element.outerText;
SQL := 'INSERT INTO Messages (Message, Author, Equipment, Date_Time) VALUES (prmMessage, prmUser, prmID, Now())';
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(SQL);
ADOQuery.Parameters.ParamByName('prmMessage').Value := Mes;
ADOQuery.Parameters.ParamByName('prmUser').Value := User_ID;
ADOQuery.Parameters.ParamByName('prmID').Value := Equipment_ID;
ADOQuery.ExecSQL;
StatusBar.Panels[0].Text := '...';
TrVChange (TObject (TrV), TrV.Selected);
end;
и это тоже
SysID := PTableData (Node.Parent.Data)^.ID;
SQL := 'SELECT Equipment, Equipment_ID FROM Equipments WHERE (Object=:prmID) and (System=:prmSys)';
AdoQuery.Close;
AdoQuery.SQL.Clear;
AdoQuery.SQL.Add(SQL);
AdoQuery.Parameters.ParamByName('prmID').Value := TableData.ID;
ADOQuery.Parameters.ParamByName('prmSys').Value := SysID;
AdoQuery.Open;
А вот это не работает
begin
Element := Doc.All.Item ('element', 0) as IHTMLElement;
Mes := Element.getAttribute('value', 0);
SQL := 'INSERT INTO Equipments (System, Object, Equipment, Notes) VALUES (prmSys, prmObj, prmEquip, prmNote)';
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(SQL);
ADOQuery.Parameters.ParamByName('prmSys').Value := PTableData (ParentNode.Parent.Data)^.ID;
ADOQuery.Parameters.ParamByName('prmObj').Value := PTableData (ParentNode.Data)^.ID;
ADOQuery.Parameters.ParamByName('prmEquip').Value := Mes;
Element := Doc.All.Item ('text', 0) as IHTMLElement;
Mes := Element.outerText;
ADOQuery.Parameters.ParamByName('prmNote').Value := Mes;
ADOQuery.ExecSQL;
end;
пишет 'ADOQuery: Parameter 'prmSys' not found'.
Если сделать так
SQL := 'INSERT INTO Equipments VALUES (?, prmEquip, prmSys, prmObj, prmNote)'
то работает, но я не знаю, что ставить вместо знака вопроса - там автоинкрементное поле.
parovoZZ (2006-02-19 18:01:00) [1]Неужели никто не знает?
parovoZZ (2006-02-19 00:03:00) [2]И вдогонку
Можно как-то получить значение автоинкриментного поля (через триггер или ещё как) после запроса INSERT?
parovoZZ (2006-02-18 22:57:00) [3]Ыца дрыца гоп цаца
Было так
SQL := 'INSERT INTO Equipments (Equipment_name, System, Object, Notes) VALUES (prmEquip, prmSys, prmObj, prmNote)';
Я сделал так
SQL := 'INSERT INTO Equipments (Equipment_name, System, Object_, Notes) VALUES (prmEquip, prmSys, prmObj, prmNote)';
И всё заработало. Что же такое Object в SQL ?
Почему вот это работает
SQL := 'SELECT Object, Object_name FROM Equipments, Objects WHERE (System=:prmID) and (Object=Object_ID) GROUP BY Object, Object_name';
parovoZZ (2006-02-18 17:09:00) [4]
> только надо указать явный список полей, как в первом примере.
C таблицей в первом примере работает, второй пример с другой таблицей тоже работает, а с той же таблицей, но INSERT - не работает.
> INSERT INTO Equipments (System, Object, Equipment, Notes)
> VALUES (:prmSys, :prmObj, :prmEquip, :prmNote)
Найди 4 отличия
Результат: 'ошибка синтаксиса в инструкции INSERT INTO'.
ЮЮ (2006-02-18 07:33:00) [5]И где же в запросе
INSERT INTO Equipments (System, Object, Equipment, Notes) VALUES (prmSys, prmObj, prmEquip, prmNote)
параметры?
INSERT INTO Equipments (System, Object, Equipment, Notes) VALUES ( :prmSys, :prmObj, :prmEquip, :prmNote)
Найди 4 отличия
Anatoly Podgoretsky (2006-02-18 00:05:00) [6]Ничего, сервер сам вставит, только надо указать явный список полей, как в первом примере.