Xml 如何使用Delphi修改或永久删除DBGrid中的字段?
如何永久删除/修改数据库网格中的字段? 我使用以下代码: 注意:CDS=ClientDataSet DBG=DBGrid 我使用的数据库是*.xmlXml 如何使用Delphi修改或永久删除DBGrid中的字段?,xml,delphi,delphi-7,tclientdataset,dbgrid,Xml,Delphi,Delphi 7,Tclientdataset,Dbgrid,如何永久删除/修改数据库网格中的字段? 我使用以下代码: 注意:CDS=ClientDataSet DBG=DBGrid 我使用的数据库是*.xml uses Windows, SysUtils, Forms, ExtCtrls, Buttons, DB, DBClient, DBGrids, Grids, Controls, StdCtrls, Dialogs, Classes; type TForm1 = class(TForm) B2: TSpeedButto
uses
Windows, SysUtils, Forms, ExtCtrls, Buttons, DB, DBClient, DBGrids,
Grids, Controls, StdCtrls, Dialogs, Classes;
type
TForm1 = class(TForm)
B2: TSpeedButton;
B3: TSpeedButton;
DS: TDataSource;
CDS: TClientDataSet;
DBG: TDBGrid;
SD: TSaveDialog;
RG: TRadioGroup;
E1: TEdit;
E2: TEdit;
L1: TLabel;
L2: TLabel;
B1: TSpeedButton;
B4: TSpeedButton;
B5: TSpeedButton;
OD: TOpenDialog;
var
FN, FDragOfs: Integer;
FDragging: Boolean;
procedure TForm1.FormShow(Sender: TObject);
begin
FN := 1;
RG.ItemIndex := 0;
end;
on Button Create --->
try
FN := FN + 1;
CDS.Active := false;
with CDS.FieldDefs.AddFieldDef do
begin
Name := E1.Text;
case RG.ItemIndex of
0 :
begin
DataType := ftString;
Size := StrToInt(E2.Text);
end;
1 :
DataType := ftInteger;
end;
end;
CDS.CreateDataSet;
E1.Text := 'Field'+IntToStr(FN);
RG.ItemIndex :=0;
finally
CDS.Active := True;
end;
on Button Export To File ---->
if not SD.Execute then
exit
else
begin
CDS.SaveToFile(SD.filename,dfxml);
CDS.Active := false;
CDS.FileName := SD.FileName;
on Button Delete --->
CDS.Fields.Remove (DBG.Columns.Items [DBG.SelectedIndex] .Field);
//DBG.Columns.Delete(DBG.SelectedIndex);
DBG.Columns.RebuildColumns;
DB Structur e.g like this :
<?xml version="1.0" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="Number" fieldtype="i4"/>
<FIELD attrname="Date" fieldtype="string" WIDTH="20"/>
<FIELD attrname="Name" fieldtype="string" WIDTH="20"/>
<FIELD attrname="Phone" fieldtype="string" WIDTH="20"/>
<FIELD attrname="Address" fieldtype="string" WIDTH="20"/>
<FIELD attrname="Manager" fieldtype="string" WIDTH="20"/>
</FIELDS>
<PARAMS/>
</METADATA>
<ROWDATA>
</ROWDATA>
</DATAPACKET>
使用
Windows、SysUtils、窗体、ExtCtrls、按钮、DB、DBClient、DBGrids、,
网格、控件、stdctrl、对话框、类;
类型
TForm1=类(TForm)
B2:t速度按钮;
B3:TSpeedButton;
DS:TDataSource;
CDS:TClientDataSet;
DBG:TDBGrid;
SD:TSaveDialog;
RG:TRadioGroup;
E1:TEdit;
E2:TEdit;
L1:TLabel;
L2:TLabel;
B1:t速度按钮;
B4:TSpeedButton;
B5:TSpeedButton;
OD:TOpenDialog;
变量
FN,FDragOfs:整数;
FDragging:布尔值;
程序TForm1.FormShow(发送方:TObject);
开始
FN:=1;
RG.ItemIndex:=0;
终止
打开按钮创建--->
尝试
FN:=FN+1;
CDS.Active:=假;
使用CDS.FieldDefs.AddFieldDef do
开始
名称:=E1.文本;
案例RG.ItemIndex of
0 :
开始
数据类型:=ftString;
大小:=stroint(E2.Text);
终止
1 :
数据类型:=ftInteger;
终止
终止
CDS.CreateDataSet;
E1.文本:=‘字段’+IntToStr(FN);
RG.ItemIndex:=0;
最后
CDS.Active:=真;
终止
按钮上的“导出到文件”-->
如果不是SD,那么执行
出口
其他的
开始
SaveToFile(SD.filename,dfxml);
CDS.Active:=假;
CDS.FileName:=SD.FileName;
打开按钮删除--->
CDS.Fields.Remove(DBG.Columns.Items[DBG.SelectedIndex].Field);
//DBG.Columns.Delete(DBG.SelectedIndex);
DBG.Columns.RebuildColumns;
数据库结构,例如:
因此,问题是如何用运行时不需要的另一个名称字段删除/替换(重命名或修改),我想删除这一行。
例如:
<FIELD attrname = "Date" fieldtype = "string" WIDTH = "20" />
“删除后”字段不会出现,但当我获取应用程序并重新运行数据库时,会像以前一样再次加载sa'at
对不起,我的英语不好。您需要保存CD,而不保存您删除的字段。因为您还没有演示如何加载它,所以很难说如何加载。如果您使用的是XML或二进制CD(单机版),则可以使用
SaveToFile
。如果数据通过DataSetProvider
来自外部源(例如,某个地方的实际DB),则需要修改SQL语句(并删除IDE中的持久字段),或在启动时使用代码将其删除(请参见CDS.FieldDefs
属性)。在“保存到文件”按钮上,如下所示,如果不是SD.Execute,则退出else begin CDS.SaveToFile(SD.filename,dfxml);CDS.Active:=假;CDS.FileName:=SD.FileName;终止我不知道SD
是什么,所以我不知道SD.Execute
做什么。(SD
=TSaveDialog
,也许吧?)从我坐的地方看不到你的代码。请不要在评论中添加详细信息;你的问题,并将它们添加到那里,在那里可以正确格式化,人们可以看到它们。同样,是否有持久字段(在设计时使用字段编辑器添加)?如果是这样,您需要使用CDS.FieldDefs
将其删除,正如我在上一篇评论中所说的。再次强调,请不要在评论中添加内容。请改为提问,并在此处添加信息。我们也不会去其他地方看DB结构;编辑时,可以将其作为文本表包含在问题中。所需的信息必须在这里,在问题本身,所以未来的读者可以访问它。谢谢