Это очень краткое описание того, как я ввожу данные в базу данных.скопируйте всю запись, а затем вставьте ее
procedure TMain_Form.AdvGlowButton1Click(Sender: TObject);
begin
MYQUERY.Close;
MYQUERY.SQL.Clear;
MYQUERY.SQL.Add('INSERT INTO MYTABLE (FOR_DATE,SOMETEXT) VALUES(:a1,:a2)');
MYQUERY.Params.ParamByName('a1').asDate :=PlannerCalendar1.Date;
MYQUERY.Params.ParamByName('a2').Value :=cxMemo1.Lines.Text ;
MYQUERY.ExecSQL;
end;
Это работает нормально.Дата вставлена. Она показана в cxGrid1.
Теперь, что я хотел бы сделать, это скопировать всю запись из этого cxGrid1 (только выбранную запись) и вставить (вставить его) на другую дату, выбранную в PlannerCalendar1.
У меня есть меню cxgridpopup, реализованное с опцией «отправить в выбранную дату», но я не знаю, как скопировать основные данные из cxGrid1.
Цель состоит в том, чтобы выбрать дату в календаре, затем перейти к cxGrid1, выбрать запись, щелкнуть правой кнопкой мыши по ней и (используя всплывающее меню), а затем вставить всю выбранную запись в новую выбранную дату. В основном клонирование записи, но на другую дату. Как я могу это сделать ?
(PlannerCalendar1 является TMS компонент)
редактировать: нашел информацию здесь https://www.devexpress.com/Support/Center/Question/Details/A302 , но не уверен, как он подходит мой случай.
EDIT: Я попробовал этот путь, и это не будет работать:
Procedure CopyTableRecord(View: TcxGridTableView; IndexToCopy : Integer);
var i:integer;
PlannerCalendar1:TPlannerCalendar;
Begin
View.DataController.Insert;
For I := 0 To Pred(View.ColumnCount) Do
View.Columns[I].EditValue := view.DataController.Values[1, I];
View.Columns[1].EditValue := PlannerCalendar1.Date;
View.DataController.Post(True);
End;
procedure TMain_Form.Sendto1Click(Sender: TObject);
begin
CopyTableRecord(cxGrid1DBTableView1, cxGrid1DBTableView1.DataController.FocusedRecordIndex);
end;
Ухх Рене, ты прав. я был слепым. На самом деле все, что мне нужно, это запрос на обновление даты и прохода: a2, первичный ключ, как вы предполагали. Спасибо! – user763539