请问如何在dbgrid中抄出多条记录另存? |
答題得分者是:Fishman
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 有兩種方法
1.直接以 SQL Command 進行資料新增,語法如下
INSERT INTO TABLE (FIELD1, FIELD2, FIELD3, FIELD4, FIELD5, FIELD6, ...) SELECT FIELD1, FIELD2, FIELD3, FIELD4, FIELD5, FIELD6 ... FROM TABLE2 WHERE XXX2.在 delphi 中,用迴圈控制對另一 TTable 或 TQuery 進行資料新增,以避免 DBGrid 迴圈控制出問題 procedure TForm1.Button4Click(Sender: TObject); begin DBGrid1.DataSource.DataSet.First; WHILE DBGrid1.DataSource.DataSet.Eof DO BEGIN Table1.Append; Table1.FieldByName('Field1').Value := DBGrid1.DataSource.DataSet.FieldByName('Field1').Value; Table1.FieldByName('Field2').Value := DBGrid1.DataSource.DataSet.FieldByName('Field2').Value; Table1.FieldByName('Field3').Value := DBGrid1.DataSource.DataSet.FieldByName('Field3').Value; Table1.FieldByName('Field4').Value := DBGrid1.DataSource.DataSet.FieldByName('Field4').Value; Table1.FieldByName('Field5').Value := DBGrid1.DataSource.DataSet.FieldByName('Field5').Value; Table1.FieldByName('Field6').Value := DBGrid1.DataSource.DataSet.FieldByName('Field6').Value; .... Table1.Post; DBGrid1.DataSource.DataSet.Next; END; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
引言: 我用的数据库是sqlserver2000,我现在dbgrid中过滤出10条记录,我想把清空其中一栏(非主键栏),然后把这10条记录另存(原来的记录还在)可以吗?如果你的DBGIRD直接连接到ADODATASET这样的直接打开数据库的DATASET上,你在DBGRID里清空,会直接将修改保存回数据库,也就是说,原来的记录被改了。 如果你想不改变原来的记录,你可以考虑使用TClientDataSet,可以把一个CLIENTDATASET里的记录(DATA)拷贝出来给另一个CLIENTDATASET,然后在那个备份的CLIENTDATASET里修改记录。这样不会改变数据库里原来的记录 |
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
fishman:
你好,我照你的第2种方法做了,如果我不用循环,可以增加一条记录,但如果我用循环,一条记录也增加不进去了,请问什么原因,我的程序如下" DBGrid1.DataSource.DataSet.First;
WHILE DBGrid1.DataSource.DataSet.Eof DO
BEGIN
qry_purpo.Append;
qry_purpo['clientfactory'] := DBGrid1.DataSource.DataSet.FieldByName('clientfactory').Value;
qry_purpo.FieldByName('datetime').Value := DBGrid1.DataSource.DataSet.FieldByName('datetime').Value '1';
qry_purpo.Post;
DBGrid1.DataSource.DataSet.Next;
END;
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: Sorry,好像漏了一個 NOT
DBGrid1.DataSource.DataSet.First; WHILE NOT DBGrid1.DataSource.DataSet.Eof DO BEGIN qry_purpo.Append; qry_purpo['clientfactory'] := DBGrid1.DataSource.DataSet.FieldByName('clientfactory').Value; qry_purpo.FieldByName('datetime').Value := DBGrid1.DataSource.DataSet.FieldByName('datetime').Value '1'; qry_purpo.Post; DBGrid1.DataSource.DataSet.Next; END;terrychen,加油,繼『五星上將』後,即將成為『百戰天龍』,先恭喜你啦 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |