clientdataset数据集操作,cds1.field[i].assign(cds2.field[j]);
或者cds1.field[i].value := cds2.field[j].value;
int型可以正常附值,widestring型不行,为空,怎么办?其实是想在不改变数据库字段的情况下,在取到的本地数据集加一个选择的boolean字段
新建个cds,把取到的cds field复制过去..
cds.FieldDefs.Add('选中', ftBoolean, 0,false);
--
或者cds1.field[i].value := cds2.field[j].value;
int型可以正常附值,widestring型不行,为空,怎么办?其实是想在不改变数据库字段的情况下,在取到的本地数据集加一个选择的boolean字段
新建个cds,把取到的cds field复制过去..
cds.FieldDefs.Add('选中', ftBoolean, 0,false);
--
解决方案 »
- 错误信息Access violation....
- 数据循环问题
- Delphi处理Excel数据的回归?
- ◢█◤★◢█◤★◢█◤★◢█◤★◢█◤★◢█◤★◢█◤★◢█◤ 内幕消息:看金正日是怎样狮子大张口(转)
- 作为一个程序员的悲哀...
- 为什么连接一些数据库的时候,需要密码才可以登陆?
- 文件和图标!急急急!!!十万火急!!!
- 用了DBGrid这么久,第一次才发现?
- 偶想学c#,但是c#版,人气尚不旺,拜师是很难的,软件是相通的,偶知道有不少即会delphi,又学c#的三层高手,偶还是先跟你们学,放分求教//牛虻
- 选什么样的数据库安装最简单?
- 在ClientDataSet.Delta的修改行里如何知道修改的了哪些列和key(主键)
- 请教delphi做的dll中datamodule中的问题
比如TADOQuery对TADOQuery,不能TClientDataSet和TADOQuery的混用,要进行转换,转换的控件是DataSetProvider
选择 姓名 年龄 ...
b
姓名 年龄 ...////*****************************************************************cds := TClientDataSet.Create(self);
cds.FieldDefs.Add('选中', ftBoolean, 0,false);
for i := 0 to cdsMain.FieldCount - 1 do
begin
cds.FieldDefs.Add(cdsMain.Fields[i].FieldName, cdsMain.Fields[i].DataType, 0,false);
end;
cds.CreateDataSet;for i := 0 to cdsMain.RecordCount - 1 do
begin
cds.Append; for j := 0 to cdsMain.FieldCount - 1 do
begin
cds.Fields[j + 1].Value := cdsMain.Fields[j].AsVariant; //跟踪了下,float类型正常,widestring类型不行..
//cds.fields[j + 1].assign(cdsMain.fields[j]);
//cds.fields[j + 1].Value := cdsMain.fields[j].value;
//ShowMessage(cds.Fields[j].AsString);
end;
cds.Post;
cds.Next;
cdsMain.Next; end; } cds.data := cdsMain.Data;
ClientDataSet1.FieldDefs.Add('A', ftFloat);
ClientDataSet1.FieldDefs.Add('B', ftWideString, 20);
ClientDataSet1.CreateDataSet;
ClientDataSet1.Append;
ClientDataSet1.FieldByName('A').AsFloat := 0.90;
ClientDataSet1.FieldByName('B').AsString := '法律';
ClientDataSet1.Post;
ClientDataSet2.FieldDefs.Add('A', ftFloat);
ClientDataSet2.FieldDefs.Add('B', ftWideString, 20);
ClientDataSet2.CreateDataSet;
ClientDataSet2.Append;
ClientDataSet2.FieldByName('A').AsVariant := ClientDataSet1.FieldByName('A').AsVariant;
ClientDataSet2.FieldByName('B').AsString := ClientDataSet1.FieldByName('B').AsString;
ClientDataSet2.Post;
end;
你在添加WideString字段的时候要加上长度,我这测试通过,是可以的。
cds.FieldDefs.Add(cdsMain.Fields[i].FieldName, cdsMain.Fields[i].DataType, 0,false);
WideString类型长度不能为0
for i := 0 to cdsMain.FieldCount - 1 do
begin
cds.FieldDefs.Add(cdsMain.Fields[i].FieldName, cdsMain.Fields[i].DataType, 0,false); //这里size不能为0...
end;
cds.CreateDataSet;
改为for i := 0 to cdsMain.FieldCount - 1 do
begin
cds.FieldDefs.Add(cdsMain.Fields[i].FieldName, cdsMain.Fields[i].DataType, cdsMain.Fields[i].size,false);
//这里size不能为0...
end;
cds.CreateDataSet;