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

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

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]

Ничего, сервер сам вставит, только надо указать явный список полей, как в первом примере.


Наверх

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