実行時にFielddefsがロードされ、値が追加されたClientdatasetがあります。索引付けはなく、プロバイダーもなく、データ・セットはXMLファイルに直接保管されます。 値を変更すると(ワードタイプのみ)、新しいレコードが作成されますが、古い行データは保持され、xmlファイルに保存されますが、レコードに関連付けられていません。さらに、冗長で非アクティブな行は、連続した読み込みと保存で混乱します。 これは私が、一時的なデータセットを作成する作業データセットを削除してから変更されていない値のレコードのデータを使用して保存するように、この周り不器用な方法を考えることができ、コード編集済みだがアクセスできない古いデータを保持しているデータセットを避けるにはどうすればいいですか?
`CFCDS.First;
While not CFCDS.eof do
begin
GetCFGComps();
CFCDS.next;
end;`
Procedure GetCFGComps();
var j: integer;
Begin
for j := 0 to 14 do
begin {READ values to record}
case j of
0: FldPos.L := CFCDS.Fields[j].Value;
1: FldPos.T := CFCDS.Fields[j].Value;
...........
end;
end;
with FldPos do begin
L := 550;
T := 69;
W := 333;
end;
for J := 0 to 14 do
begin
case j of
0: CFCDS.Fields[j].Value:=FldPos.L;
1: CFCDS.Fields[j].Value:=FldPos.T;
....................
end;
end;
CFCDS.SaveToFile(CFGFileName, dfXML);
j:= CFCDS.RecordCount; //always 50 - the correct number
CFCDS.First;
FldPos.L := CFCDS.Fields[1].Value; //returns new values
CFCDS.SaveToFile(DIRY+'CFTEXT.cft',dfBinary); //also has old supernumery rows
end; `
です。 CDSはいくつか不快な点がある場合には新しいレコードを作成することができますが、値の変更は非常に簡単です。
コードを削除すると、FldPosで が始まります L:= 550; T:= 69; W:= 333; end; XMLファイルは、レコードデータ(すべての行のRowstate "4")だけでクリーンです。
データセットをプログラムで編集する方法をお教えいただける方 古いアクセスできないデータは保持されず、レコードの行データのみが含まれていますか?ありがとう