INSERT, UPDATE, DELETE с помощью UpdateSQL
От: intaari  
Дата: 07.04.05 11:15
Оценка:
Добрый день господа!!!

При организации вставки, редактирования, удаления записей с помощью UpdateSQL возникли некоторые проблемы. Необходимо по нажатии на кнопку осуществить редактирование записи (решил начать с этого):

procedure TForm2.Button3Click(Sender: TObject);
begin
form1.Query1.Edit;
form1.Query1.FieldByName('DateInput').AsDateTime:=StrToDate(edtDateInput.text);
form2.UpdateSQL1.Post
form1.Query1.close;
form1.Query1.Open;
end;


При нажатии на кнопку редактируется активная запись. При переходе на другую запись и нажатии на кнопку Появляется сообщение "Query1: Cannot modify a read-only dataset". База локальная, UpdateObject установлен на UpdateSQL1 и Cached updates=true. По какой причине возникает ошибка. Может редактирование записи происходит несовсем корректно?
Re: INSERT, UPDATE, DELETE с помощью UpdateSQL
От: pkarklin  
Дата: 07.04.05 12:26
Оценка:
Здравствуйте, intaari, Вы писали:

I>Добрый день господа!!!


I>При организации вставки, редактирования, удаления записей с помощью UpdateSQL возникли некоторые проблемы. Необходимо по нажатии на кнопку осуществить редактирование записи (решил начать с этого):



Было бы лучше, если бы Вы начали с чтения хелпа по кэшированным изменениям, где и примеры работы есть. Сохранение изменений производиться методом ApplyUpdates + очистка буфера CommitUpdates. А вы зачем то POST у UpdateSQL вызываете.
Re[2]: INSERT, UPDATE, DELETE с помощью UpdateSQL
От: intaari  
Дата: 07.04.05 12:37
Оценка:
Здравствуйте, pkarklin, Вы писали:

P>Здравствуйте, intaari, Вы писали:


I>>Добрый день господа!!!


I>>При организации вставки, редактирования, удаления записей с помощью UpdateSQL возникли некоторые проблемы. Необходимо по нажатии на кнопку осуществить редактирование записи (решил начать с этого):



P>Было бы лучше, если бы Вы начали с чтения хелпа по кэшированным изменениям, где и примеры работы есть. Сохранение изменений производиться методом ApplyUpdates + очистка буфера CommitUpdates. А вы зачем то POST у UpdateSQL вызываете.


Если не трудно напишите вашу версию кода. На другом форуме мне советовали Post а затем ApplyUpdates.
Re[3]: INSERT, UPDATE, DELETE с помощью UpdateSQL
От: pkarklin  
Дата: 07.04.05 12:52
Оценка:
Здравствуйте, intaari, Вы писали:

I>Если не трудно напишите вашу версию кода. На другом форуме мне советовали Post а затем ApplyUpdates.


Ну дык Post то надо вызывать у редактируемого набора. И лучше, если это будет CheckBrowseMode, а не Post. А на счет кода. Вы так в хелп и не хотите заглянуть?! От туда:


procedure TForm1.ApplyButtonClick(Sender: TObject);

begin
  with CustomerQuery do
  begin
  Database1.StartTransaction;
    try
      ApplyUpdates; {try to write the updates to the database};
      Database1.Commit; {on success, commit the changes};
    except
      Database1.Rollback; {on failure, undo the changes};
    raise; {raise the exception to prevent a call to CommitUpdates!}
    end;
  CommitUpdates; {on success, clear the cache}
  end;

end;
Re[4]: INSERT, UPDATE, DELETE с помощью UpdateSQL
От: intaari  
Дата: 08.04.05 06:33
Оценка:
Здравствуйте, pkarklin, Вы писали:

P>Здравствуйте, intaari, Вы писали:


I>>Если не трудно напишите вашу версию кода. На другом форуме мне советовали Post а затем ApplyUpdates.


P>Ну дык Post то надо вызывать у редактируемого набора. И лучше, если это будет CheckBrowseMode, а не Post. А на счет кода. Вы так в хелп и не хотите заглянуть?! От туда:



P>
P>procedure TForm1.ApplyButtonClick(Sender: TObject);

P>begin
P>  with CustomerQuery do
P>  begin
P>  Database1.StartTransaction;
P>    try
P>      ApplyUpdates; {try to write the updates to the database};
P>      Database1.Commit; {on success, commit the changes};
P>    except
P>      Database1.Rollback; {on failure, undo the changes};
P>    raise; {raise the exception to prevent a call to CommitUpdates!}
P>    end;
P>  CommitUpdates; {on success, clear the cache}
P>  end;

P>end;
P>


Большое спасибо за ответ но похоже мы друг друга не понимаем.
Хелп я смотрел. Но у меня ситуация когда я имею компоненты UpdateSQL, Query, DataSource и мне необходимо работать с одной таблицей (вставить, отредактировать, удалить запись), база локальная. Коечно я могу использовать навигационный способ доступа, но хотелость бы применить реляционный доступ к БД.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.