unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
adocn: TADOConnection;
ds1: TADODataSet;
ds2: TADODataSet;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
a,b:Real;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
ds1.Open;ds2.Open;
ds2.Edit; ds1.Edit;
ds1.First;
while not ds1.Eof do
begin
a:=ds1.Fields[1].AsFloat; ds1.Fields[0].Text:='kkk'; while not ds2.Eof do
begin
b:=ds2.Fields[1].AsFloat;
if a=b then
begin ds1.Fields[0].Text:=''; break;
end;
ds2.Next;
end;
ds1.Next;
end;end;end.
连接没有问题,可以查看mdb的数据这是我的原代码,为什么用ds1.Fields[0].Text:='kkk'不行呀?总是说不在可编辑或插入状态,我初学delphi,帮忙了大家,谢谢
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
adocn: TADOConnection;
ds1: TADODataSet;
ds2: TADODataSet;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
a,b:Real;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
ds1.Open;ds2.Open;
ds2.Edit; ds1.Edit;
ds1.First;
while not ds1.Eof do
begin
a:=ds1.Fields[1].AsFloat; ds1.Fields[0].Text:='kkk'; while not ds2.Eof do
begin
b:=ds2.Fields[1].AsFloat;
if a=b then
begin ds1.Fields[0].Text:=''; break;
end;
ds2.Next;
end;
ds1.Next;
end;end;end.
连接没有问题,可以查看mdb的数据这是我的原代码,为什么用ds1.Fields[0].Text:='kkk'不行呀?总是说不在可编辑或插入状态,我初学delphi,帮忙了大家,谢谢
begin
ds1.edit;
ds1.Fields[0].asstring:='';
ds1.post;
break;
end;
你的意思是从ds2读数据和ds1相应字段比较如果有相等情况就把ds1.Fields[0]置空[原始负值kkk]
procedure TForm1.Button1Click(Sender: TObject);
begin
ds1.Open;
ds2.Open;
while not ds1.Eof do
begin
a:=ds1.Fields[1].AsFloat;
ds1.edit;
ds1.Fields[0].asstring:='kkk';
ds1.post;
ds2.first;
while not ds2.Eof do//循环查找?
begin
b:=ds2.Fields[1].AsFloat;
if a=b then
begin
ds1.edit;
ds1.Fields[0].asstring:='';
ds1.post;
break;
end;
ds2.Next;
end;
ds1.Next;
end;
不错,是这样的,要历遍查找是文本型的
改为
ds1.Fields[0].asstring:='kkk';
ds1.Open;
ds2.Open;
//ds2.Edit;
//ds1.Edit;
ds1.First;
while not ds1.Eof do
begin
a:=ds1.Fields[1].AsFloat;
ds1.Edit;
ds1.Fields[0].Text:='kkk';
ds1.Post;
while not ds2.Eof do
begin
b:=ds2.Fields[1].AsFloat;
if a=b then
begin
ds1.Edit;
ds1.Fields[0].Text:='';
ds1.Post;
break;
end;
ds2.Next;
end;
ds1.Next;
end;
ds1.Fields[0].Text:=''; ---->ds1.Fields[0].AsString:='';
ds1.Fields[0].Text:='kkk';---->ds1.Fields[0].AsString:='kkk';
ds2.Open;
//ds2.Edit;
//ds1.Edit;
ds1.First;
while not ds1.Eof do
begin
a:=ds1.Fields[1].AsFloat;
ds1.Edit;
ds1.Fields[0].AsString:='kkk';
ds1.Post;
ds2.First;//add!
while not ds2.Eof do
begin
b:=ds2.Fields[1].AsFloat;
if a=b then
begin
ds1.Edit;
ds1.Fields[0].AsString:='';
ds1.Post;
//break;去掉,不然只能查一个!
end;
ds2.Next;
end;
ds1.Next;
end;