一个非常非常奇怪的有关问题,哪位高手能告诉小弟我这是为什么?
一个非常非常奇怪的问题,谁能告诉我这是为什么???
这是我数据库数据:

下面是我绑定出来的数据:

下面是代码:
这个方法是将我从数据库中取出的数据增加一个名为“ck”的列,并为其添加值,但是绑定数据后发现mid的值始终是从一开始,和数据库里的mid的值不相符,百思不得其解!
------解决方案--------------------
cdt.FieldDefs.Assign(dt.FieldDefs);
这里复制出来的"mid"字段定义就是自增吧?自增字段是不允许赋值的
------解决方案--------------------
+1
post一次mid就+1。
这是我数据库数据:
下面是我绑定出来的数据:
下面是代码:
function NewDataSet(dt:TDataSet):TDataSet; {重新构造DataSet}
var mydt:TDataSet;
cdt:TClientDataSet;
i:Integer; a:Integer;
def:TFieldDef; cc:Integer;
begin
if(dt<>nil)then
begin
cdt:=TClientDataSet.Create(Application);
cdt.FieldDefs.Assign(dt.FieldDefs);
cdt.FieldDefs.Add('ck',ftBoolean);
cdt.CreateDataSet;
mydt:=cdt as TDataSet;
mydt.Open;
with mydt do
begin
dt.Open;
dt.First;
while not dt.Eof do
begin
Append;
for a := 0 to dt.FieldDefs.Count - 1 do
begin
mydt.Fields[a].ReadOnly:=False; //这个很重要,务必加上
mydt.Fields[a].AsString:=dt.Fields[a].Value;
end;
mydt.FieldByName('ck').AsString:='False';
ShowMessage(mydt.FieldByName('mid').Value); //在这个地方弹出的值属于正常,和数据库中的相符
Post;
ShowMessage(mydt.FieldByName('mid').Value); //在这个地方弹出的值就从1开始,中间就只隔了一个提交,为什么它的值会被改变,是怎么改变的,
dt.Next;
end;
end;
Result:=mydt;
end
else
Result:=nil;
end;
这个方法是将我从数据库中取出的数据增加一个名为“ck”的列,并为其添加值,但是绑定数据后发现mid的值始终是从一开始,和数据库里的mid的值不相符,百思不得其解!
------解决方案--------------------
cdt.FieldDefs.Assign(dt.FieldDefs);
这里复制出来的"mid"字段定义就是自增吧?自增字段是不允许赋值的
------解决方案--------------------
+1
post一次mid就+1。