这是我如何将数据输入数据库的简短描述。
import os
os.chdir("C:/path/To/directory/That/contains/The/module(s)")
import module1
os.chdir("C:/path/To/directory/That/contains/The/module(s)2")
import module2.submod1
os.chdir("C:/path/To/directory/That/contains/The/module(s)3")
from module3.submod2 import *
<rest_of_code>
这个工作正常。数据被插入。它显示在cxGrid1。
中现在,我想要做的是从这个cxGrid1复制整个记录(只有选定的记录)并粘贴(插入)到另一个日期,在PlannerCalendar1中选择一个。
我将cxgridpopup菜单实现为&#39;发送到所选日期&#39;选项,但我不知道如何从cxGrid1复制基础数据。
目标是在日历中选择日期,然后转到cxGrid1,选择一条记录,右键单击它并(使用弹出菜单选项),然后将整个所选记录插入新选择的日期。基本上克隆记录但不同的日期。我怎么能这样做?
(PlannerCalendar1是TMS组件)
编辑:在https://www.devexpress.com/Support/Center/Question/Details/A302找到了一些信息 但不确定它是如何适合我的情况。
编辑: 我试过这种方式,它不会起作用:
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;
答案 0 :(得分:1)
我将数据和视图分开。那么为什么不像插入新记录一样走路呢?
procedure TMain_Form.Sendto1Click(Sender: TObject);
begin
MYQUERY.Close;
MYQUERY.SQL.Clear;
MYQUERY.SQL.Add('INSERT INTO MYTABLE (FOR_DATE, SOMETEXT) SELECT :a1, SOMETEXT FROM MYTABLE WHERE FOR_DATE = :a2');
MYQUERY.Params.ParamByName('a1').asDate :=PlannerCalendar1.Date;
MYQUERY.Params.ParamByName('a2').asDate := cxGrid1DBTableView1.DataController.Values[cxGrid1DBTableView1.DataController.FocusedRecordIndex,1];
MYQUERY.ExecSQL;
end;
注意:除非特定日期有多条记录,否则此解决方案应该有效。我猜想,没有。如果有,则不应按日期选择,而应按主键列选择。
答案 1 :(得分:0)
您可以使用您正在使用的DataController
的{{1}}和Columns
属性来克隆记录: -
cxGridTableView
将网格视图的Procedure CopyTableRecord(View: TcxGridTableView; IndexToCopy : Integer);
Begin
View.DataController.Insert;
For I := 0 To Pred(View.ColumnCount) Do
View.Columns[I].EditValue := View.DataController.Values[IndexToCopy, I];
// Modify your Date field here...
View.DataController.Post(True);
End;
传递给上述例程。