真惨!周末还要加班,又遇到难题,麻烦各位帮忙。有关数据库操作的

wolf416 2001-07-21 04:42:38
我想将数据库中某一字段的不同记录加入到一个下拉列表框中,以供查询时选择用。
相同的记录只记一次。怎么办?能否用控件直接实现?
...全文
293 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2001-07-23
  • 打赏
  • 举报
回复
是这几天熬夜熬得我眼都红啦

@_@
cwpower 2001-07-23
  • 打赏
  • 举报
回复
: wolf416(人生如梦) 


我用的是listbox,你现在解决了没,如果没解决,我可以帮你试一下
wolf416 2001-07-23
  • 打赏
  • 举报
回复
to  xzgyb()
又见到你,真高兴。你所关心的TDBLookupComboBox也正是我所关心的。
我想首先用TQUERY,并用SQL: select distinct UserName into UserName_lookup from log 生成一个中间表UserName_lookup, 然后再用中间表UserName_lookup ,来实现我的问题,不知是否有必要,而且TDBLookupComboBox的使用我也不熟。还请各路高手继续指点。

谢谢各位!吃饭先!
wolf416 2001-07-23
  • 打赏
  • 举报
回复
to : TR@SOE() 
DBComboBox中以显示当前记录,因为DBComboBox中的Items中没有加入任何记录。
你所举的例是TDBLookupComboBox,但它汲到两个数据源,好象比较麻烦。我想这样的问题可能有很多人遇到过,可能是我太笨了。不过我会努力的。


我忘了我原来的QQ号了。待我重新申请后再与你联系,不过上班可不能开QQ,因为公司有规定。

xzgyb 2001-07-23
  • 打赏
  • 举报
回复
应该是TDBLookupComboBox吧
另外,我觉得TDBLookupComboBox也是把数据添加到下拉列表里吧,
不知它是如何添加的
TR@SOE 2001-07-23
  • 打赏
  • 举报
回复
你这样做之后,DBComboBox里应该就有若干个UserName了呀?具体问题,你和我QQ联系吧:24744419,我0800-1700在线的。
wolf416 2001-07-23
  • 打赏
  • 举报
回复
to  TR@SOE() 
我已按你所说的方法作了。
Query中的SQL:select UserName from log group by UserName
但DBComboBox中的Item也只能反应当前所选的记录信息,而不能对DBComboBox进行选择,DBComboBox中的Items怎么加入是问题的关键。

谢谢TR@SOE()兄的耐心!
TR@SOE 2001-07-23
  • 打赏
  • 举报
回复
给个例子你看看,是我的DFM文件的源代码中的一段:
object DefectType: TDBLookupComboBox
Left = 112
Top = 93
Width = 89
Height = 21
DataField = 'DEFECT'
DataSource = DMForm.EntryDS
KeyField = 'ID'
ListField = 'DESCRIPTION'
ListSource = DMForm.DefectDS
TabOrder = 5
end

DMForm.EntryDS指向DMForm.EntryTable,你可以将它指向一个Query的。
TR@SOE 2001-07-23
  • 打赏
  • 举报
回复
To Wolf:
你只要设置好数据源,将QUERY打开就可以了。必要时,可以关闭QUERY并重新打开以达到REFRESH的目的。
wolf416 2001-07-23
  • 打赏
  • 举报
回复
to cwpower(知已难求,不醉不归) 
and
to TR@SOE() 
使用TDBLookupComboBox或DBComboBox,数据源就设置为那个QUERY

可是Items怎么加入?可以写一段简单的代码吗?是否还要重新查询由QUERY所生成的表呢?
jixian 2001-07-23
  • 打赏
  • 举报
回复
叶老大真迷惑了,或者昨夜没睡?
jixian 2001-07-23
  • 打赏
  • 举报
回复
十点也叫熬夜?
「已注销」 2001-07-23
  • 打赏
  • 举报
回复
熬夜中…………

@_@
TR@SOE 2001-07-23
  • 打赏
  • 举报
回复
写进下拉列表框中,最好是使用TDBLookupComboBox或DBComboBox。数据源就设置为那个QUERY。

cwpower 2001-07-23
  • 打赏
  • 举报
回复
我做过一个同样的程序
我是用的Query
在sql语句中使用group by语句
可以达到你要的效果
wolf416 2001-07-23
  • 打赏
  • 举报
回复
to  TR@SOE() 
我可以指定相同的用户名,只能有一种权限。
另外,在这个日志表中,所有不同权限的记录均记在一张表内。

其实我最关心的是,这些不同的用户应该怎样写入在客户端上的下拉列表框中,是否只能一条一条地选择比较,然后再插入到下拉列表框中吗?有没有更为简单一些的方法?因为这种方法我想效率较差。
TR@SOE 2001-07-23
  • 打赏
  • 举报
回复
To Wolf416:

用select distinct (name) from atable是比较好的方法了。

但是你的做法和想法有一些问题。我的建议是你最好保证你所选择的是字段所显示的内容是唯一的。例如数据库中的记录有:Tom, Chris, John, Tom,按照你的思路,将只显示前三个用户名,但是问题在于第一个Tom和第二个Tom的操作权限是不同的,你如果只显示不同的名称,将永远无法找到第二个TOM对应的用户。

所以,我建议你必须给予不同用户不同的名字,这样你也就不需要考虑显示不同的名字的问题了,因为所有名字都是不同的。





wolf416 2001-07-23
  • 打赏
  • 举报
回复
to lluunn007(玉笛书生) 
to xzgyb() 
我已经理解了你们的意思,不过若数据量较大,这种方法可能行不通
wolf416 2001-07-23
  • 打赏
  • 举报
回复
to lluunn007(玉笛书生) 
是wangxd(东东)的意思: select distinct(name) from xxx
现在的问题是将所Select 的记录加到一个下拉列表框中,这段代码应该如何写?
书生 2001-07-23
  • 打赏
  • 举报
回复
select xxx from yyy group by xxx

搞定! 是这个意思吗?
加载更多回复(21)

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧