var i:integer; begin Query1.open; Query2.open; query2.append; for i:=0 to Query1.recoredcount-1 do begin query2.FieldByName('ID').value:=query1..FieldByName('ID').value; query2.FieldByName('Name').value:=query1.FieldByName('Name').value; query2.post; query2.append; query1.next; end;
或者你把排序后的数据插入到临时表中 在删除原来的数据后 把排好的数据插入 insert into table1 select * from #Temp1
//刷新数据: Query.SQL.Clear; Query.CachedUpdates:=True; Query.OnUpdateRecord:=QueryUpdateRecord; Query.SQL.Add('select * from Table1 order by Field1'); Query.Active:=True;// QueryUpdateRecord事件的代码不要写,只设置一个空代码就可以了.
to Hedonism(追日) 恰恰是排序的问题,除非你按照主键排序。否则没办法修改,这是视图和表的区别。这个问题其实有无数人问过了,而且问题比较典型。 基本上一本好一些delphi书都会提及这个问题,你需要结合TUpdateSQL 控件结合使用。delphi目录下有个例子,你可以参看。
var i:integer; begin Query1.open; Query2.open; query2.append; for i:=0 to Query1.recoredcount-1 do begin query2.FieldByName('ID').value:=query1..FieldByName('ID').value; query2.FieldByName('Name').value:=query1.FieldByName('Name').value; query2.post; query2.append; query1.next; end;这个方法试过了,不行。QUERY2得到的还是没有ORDER BY 以前的数据表,也就是说QUERY2未能保存ORDER BY之后的只读集。再请问上面的兄弟,哪个例子啊?拜托?请详细点,有点吊我胃口。
或者你把排序后的数据插入到临时表中 在删除原来的数据后 把排好的数据插入 insert into table1 select * from #Temp1#Temp1指什么?我原样打进去不行的。
i:integer;
begin
Query1.open;
Query2.open;
query2.append;
for i:=0 to Query1.recoredcount-1 do
begin
query2.FieldByName('ID').value:=query1..FieldByName('ID').value;
query2.FieldByName('Name').value:=query1.FieldByName('Name').value;
query2.post;
query2.append;
query1.next;
end;
在删除原来的数据后 把排好的数据插入
insert into table1 select * from #Temp1
那么插入后,数据表是否就真正改变了?
有没有用到UPDATA的方法啊?我认为这样会对整个表操作,会比较方便点。
共同探讨。
排序对只读并没有什么限制,也许是你把Query 设为只读,或是把感知组件设为只读了。
Query.SQL.Clear;
Query.CachedUpdates:=True;
Query.OnUpdateRecord:=QueryUpdateRecord;
Query.SQL.Add('select * from Table1 order by Field1');
Query.Active:=True;//
QueryUpdateRecord事件的代码不要写,只设置一个空代码就可以了.
恰恰是排序的问题,除非你按照主键排序。否则没办法修改,这是视图和表的区别。这个问题其实有无数人问过了,而且问题比较典型。
基本上一本好一些delphi书都会提及这个问题,你需要结合TUpdateSQL 控件结合使用。delphi目录下有个例子,你可以参看。
i:integer;
begin
Query1.open;
Query2.open;
query2.append;
for i:=0 to Query1.recoredcount-1 do
begin
query2.FieldByName('ID').value:=query1..FieldByName('ID').value;
query2.FieldByName('Name').value:=query1.FieldByName('Name').value;
query2.post;
query2.append;
query1.next;
end;这个方法试过了,不行。QUERY2得到的还是没有ORDER BY 以前的数据表,也就是说QUERY2未能保存ORDER BY之后的只读集。再请问上面的兄弟,哪个例子啊?拜托?请详细点,有点吊我胃口。
在删除原来的数据后 把排好的数据插入
insert into table1 select * from #Temp1#Temp1指什么?我原样打进去不行的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类似的方法 IBX, DBX都是这么实现的。
不懂问我