Read-only ZQuery?

Модератор: Модераторы

Read-only ZQuery?

Сообщение yanis » 20.08.2012 23:42:53

Здравствуйте.
Имеется следующая процедурка:
Код: Выделить всё
procedure TfrmReferences.TabSheet1Show(Sender: TObject);
var
  zq: TZQuery;
  zu: TZUpdateSQL;
  ds: TDataSource;
begin
  zq := TZQuery.Create(Self);
  zq.Connection := frmMain.ZConnection1;
  zq.SQL.Clear;
  zq.SQL.Text := 'SELECT ID, sort as `Сорт.`, descr as `Значение` FROM root1 order by sort';
  //zq.SQL.Text := 'SELECT * FROM root1 order by sort';

  zu := TZUpdateSQL.Create(Self);
  zu.DeleteSQL.Text := 'DELETE FROM root1 WHERE'+
      '  ((root1.id IS NULL AND :OLD_id IS NULL) OR (root1.id = :OLD_id)) AND'+
      '  ((root1.sort IS NULL AND :OLD_sort IS NULL) OR (root1.sort = :OLD_sort)) AND'+
      '  ((root1.descr IS NULL AND :OLD_descr IS NULL) OR (root1.descr = :OLD_descr))';
  zu.InsertSQL.Text := 'INSERT INTO root1 (id, sort, descr) VALUES (:id, :sort, :descr)';
  zu.ModifySQL.Text := 'UPDATE root1 SET'+
      '  id = :id,'+
      '  sort = :sort,'+
      '  descr = :descr'+
      ' WHERE'+
      '  ((root1.id IS NULL AND :OLD_id IS NULL) OR (root1.id = :OLD_id)) AND'+
      '  ((root1.sort IS NULL AND :OLD_sort IS NULL) OR (root1.sort = :OLD_sort)) AND'+
      '  ((root1.descr IS NULL AND :OLD_descr IS NULL) OR (root1.descr = :OLD_descr))';

  zq.UpdateObject := zu;
  zq.Active := True;

  ds := TDataSource.Create(Self);
  ds.DataSet := zq;
  ds.Enabled := True;

  root1Editor.DataSource := ds;
  root1Editor.Columns.Items[0].Width := 30;
  root1Editor.Columns.Items[1].Width := 40;
  root1Editor.Columns.Items[2].Width := 240;
end;
root1Editor: TDBGrid;

Все работает, но грид не редактируется.
Если zq.SQL.Text сменить на закомментированный - все редактируется и апдейтится отлично.
Подскажите, пожалуйста, как сделать запрос с перечислением полей редактируемым?
yanis
незнакомец
 
Сообщения: 6
Зарегистрирован: 14.07.2012 16:47:37

Re: Read-only ZQuery?

Сообщение Padre_Mortius » 21.08.2012 09:10:33

А зачем вы смешиваете функционал Query и DBGrid?
Уберите из запроса as и перенесите их в наименование полей DBGrid и все должно заработать.

Код: Выделить всё
zq.SQL.Text := 'SELECT ID, sort, descr FROM root1 order by sort';
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Read-only ZQuery?

Сообщение yanis » 21.08.2012 09:34:34

Спасибо, вы совершенно правы.
Еще хочу добавить, что вредно работать по ночам...
Я вчера проверял запрос без названий полей - не работал, потому что я мистическим образом поставил свойство грида dgEditing := False :lol:
yanis
незнакомец
 
Сообщения: 6
Зарегистрирован: 14.07.2012 16:47:37


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru