请教如何修改下面的语句(0分)

  • 主题发起人 topdelphi
  • 开始时间
T

topdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序开始把数据库的其中一个字段,读取到COMBOX里面,但是这个字段有许多相同的
记录,请教如何把相同的记录改成不显示,就像SQL里的一样,我的语句如下,请教如何修改啊.
frmmains.bootad.First;
while not frmmains.bootad.Eof do begin
box1.Items.Add(str );
frmmains.bootad.Next;
end;
frmmains.bootad.First;
 
你怎么这么穷啊?一分都没有了!
不过我还是帮你改改。:)

要多回答别人的问题喔!

With FrmMainNs.BootAd do
begin
while not eof do
begin
str:=FieldByName('姓名').asString; //假如你是要列姓名字段,而姓名有重复
//当然Str要定义,我想你知道的。:)
if Box1.items.IndexOf(str)<>-1 then
Box1.Items.add(str); //这个条件语句判断这个值在combobox中是否存在,如果
//不存在,则添加到Combobox中去。
Next;
end;
end;

另:合适的使用With语句会对你的系统简化有所帮助。
 
再次谢谢DEL520你,但是我的语句写成这样,结果一个记录都没有,请教如何修改啊.
with frmmains.bootad do begin
while not frmmains.bootad.Eof do begin
str:=FieldByName('球赛类别').AsString ; //假如你是要列姓名字段,而姓名有重复
//当然Str要定义,我想你知道的。:)
if Box1.items.IndexOf(str)<>-1 then
Box1.Items.add(str); //这个条件语句判断这个值在combobox中是否存在,如果
//不存在,则添加到Combobox中去。
Next;
end;
 
with frmmains.bootad do begin
这里加一条 First;
 
还有,优化你的语句,你已经加了 With FrmMainNs.BootAd
就不需要用 While Not FrmMainNs.BootAd.eof了,就直接用 While Not Eof do
begin
....

Begin接下一行,这样易读。
名称用大小写区别,不要写成frmmainns 应写成FrmMainNs 这这样程序好看懂一些。
初学时这习惯很重要。
呵呵,我也是初学者[:(][:(][:(]
 
del520真的多谢你,但是我写成下面这样也不行啊,始终都不能将数据读入COMBOBOX里面,
我那里写错了啊.
procedure Tfrmadds.FormCreate(Sender: TObject);
var
str:string;
begin
With FrmMains.BootAd do
begin
first;
while not eof do
begin
str:=FieldByName('球赛类别').asString;
if Box1.items.IndexOf(str)<>-1 then
Box1.Items.add(str);
Next;
end;
end;
end;
 
I am Very sorry...

是我搞错了,应该是

if box.Items.IndexOf(str)=-1 then
Box1.items.add(str);
 
最好的办法:
先用query1进行查询,
查询条件: select distinct 球赛类别 from YourTableName
然后:
while not Query1.eof do
begin
Box1.Items.add(query1.FieldByName('球赛类别').asString);
Next;
end;
 
谢谢上面各位的回答,但是我还有一小问题,请各位帮忙,我的文本是DBEDIT来的和
数据库的实发工资字段对应,我是通过一条SQL计算语句来计出个工资来,但是计出的小数点后面太多数,
我只想插入数据库后在DBGRID里只显示小数点后的两位数,我的语句写成这样,
为何会出错啊,而且ADOQUERY是动态创建的,请指教
with adoquery1 do begin
close;
sql.Clear;
sql.Add('UPDATE MONEYSUM');
SQL.Add('SET 实发工资=底薪+普通加班费+节日加班费-事假记录-病假记录');
EDIT1.TEXT:=Format('%8.2f', [edit1.text]);
EXECSQL;
 

Similar threads

D
回复
0
查看
756
DelphiTeacher的专栏
D
D
回复
0
查看
735
DelphiTeacher的专栏
D
D
回复
0
查看
707
DelphiTeacher的专栏
D
顶部