关于Delphi修改字段随机值的问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 03:47:29
各位高手们,小弟有一个这样的问题想请问一下.

小弟现在想把AA表里的BB字段所有=10的值全部修改成50~100的随机值

小弟是这样写的,但是并不是我想要的结果.希望大家帮帮我啊~~

Randomize;
Button1.Caption := inttostr(random(51) + 50);
with adoquery1 do
begin
close;
sql.clear;
sql.add('update AA set BB ='''+button1.caption+'''');
execsql;
end;
end;

这样所得到的是是Button1得到的随机值更新的所有BB字段的值

例如,Button1得到一个93的随机值然后把所有BB字段里的值全部都修改成93

我希望要的结果是把BB字段的每条值都修改成不同的随机值例如:

BB = BB(随机值)
10 = 52(随机值)
10 = 54(随机值)
10 = 59(随机值)
10 = 85(随机值)
10 = 42(随机值)
10 = 49(随机值)

谢谢大哥们的帮助.谢谢
懒虫007大哥,对不起今天才回复您的答案,

您给我的方法怎么使用啊.能个我点说明吗?谢谢您啊

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, ADODB;

type
TForm1 = class(TForm)

Randomize;
with adoquery1 do
begin
//取得所有BB值为10的记录
active := false;
sql.text := 'select bb from aa where bb = ''10''';
active := true;
while not eof do//通过循环处理每条记录
begin
edit;
fieldbyname('bb').value := inttostr(random(51) + 50);//把随机的值添入bb字段
post;//更新修改
next;//下一条记录
end;
end;

同意楼上的
用update是无法达到你要的效果的
只有对每条记录进行编辑才可能做出你要的结果

我觉的还少了一句
procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
with adoquery1 do
begin
active := false;
sql.text := 'select bb from aa where bb = ''10''';
active := true;
first;//这句怕是应该要的
while not eof do
begin
edit;
fieldbyname('bb').value := inttostr(random(51) + 50);
post;
next;
end;
end;
end;
end.