头痛!问题出在哪里?!

yangh888 2002-10-29 07:42:33
我是这样:
---------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
table1.Active :=false;
table1.Active :=true;
dbcombobox1.items.clear;
while not Table1.Eof do begin
DBComboBox1.Items.Add(Table1.FieldByName('dydj').AsString);
Table1.Next;
end;
end;

procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
//edit1.Text :=dbcombobox1.text
edit1.text:=dbcombobox1.items.strings[dbcombobox1.itemindex];
end;
------------------------------
(因不想误改数据故将table1设为readonly)
在edit1中却无法显示我选的值。
...全文
48 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzg40280614 2002-11-01
  • 打赏
  • 举报
回复
算了
那里不行,出了什么问题,贴出来大家看看
baiyang3721 2002-10-30
  • 打赏
  • 举报
回复
TQuery是需要用ODBC数据源的
你先用databas连接数据源
yangh888 2002-10-30
  • 打赏
  • 举报
回复
这样不行呀?!!
query1.Close;
query1.sql.Clear;
query1.sql.Add('select distinct "dydj" from ttml.dbf');
query1.open;

query1.First;
ComboBox1.Clear;
while not query1.eof do begin
ComboBox1.Items.Add(query1.FieldByName('dydj').AsString);
query1.Next;
我刚学DELPHI
可以详细一点吗?
neilwq 2002-10-30
  • 打赏
  • 举报
回复
1. query1.execsql--->query1.open
2. zzg40280614(northsky) 已经说得很清楚了,把table改为query就可以了
yangh888 2002-10-30
  • 打赏
  • 举报
回复
先谢谢各位!
那现在有两个问题不知如何解决?
1、如何从字段“dydj”取出所有不重复的记录。
我用的是:
query1.Close;
query1.sql.Clear;
query1.sql.Add('select distinct "dydj" from ttml.dbf');
query1.ExecSQL;
对吗?

2、再把查询结果加入ComboBox1.Items里面,查询结果是什么类型的数据?
result:=query1.fields[0].value;
ComboBox1.Items.Add(query1.Fields[0].value)
好象不行!
还烦请各位点拨!
blazingfire 2002-10-30
  • 打赏
  • 举报
回复
Table设成ReadOnly,其字段的值就不能再改变了。DBComboBox是感知控件,当然就不行了,用ComboBox吧
yangh888 2002-10-30
  • 打赏
  • 举报
回复
我在query的database属性里设置数据库路径,如“d:\dt”
再在select语句里给定数据库名,如“ttml.dbf".这样不行吗?
如果用ODBC事先设置的话,那不是就不能动态改变数据库了吗?!!
另,使用SQL语句就一定用query构件吗?
shizhoubo 2002-10-29
  • 打赏
  • 举报
回复
同意楼上的说法
zzg40280614 2002-10-29
  • 打赏
  • 举报
回复
遍历一下不就可以了吗?
Table1.First;
ComboBox1.Clear;
while not Table1.eof do begin
ComboBox1.Items.Add(Table1.FieldByName('dydj').AsString);
Tabel1.Next;
end;

在ComboBox1.OnChange事件中处理
yangh888 2002-10-29
  • 打赏
  • 举报
回复
那如何将表的一个字段的全部记录添加到类似combobox里,再通过点选获得值呢?
yangh888 2002-10-29
  • 打赏
  • 举报
回复
combobox支持将表的一个字段的全部记录添加到Items吗?
DBComboBox1.Items.Add(Table1.FieldByName('dydj').AsString;
zzg40280614 2002-10-29
  • 打赏
  • 举报
回复
procedure TDBComboBox.CMExit(var Message: TCMExit);
begin
try
FDataLink.UpdateRecord;
except
SelectAll;
SetFocus;
raise;
end;
inherited;
end;
找到问题了,这是控件的部分源码。
原因就是它未和数据源(如:TTable等等)连接。
当失去焦点的时候就会执行UpdateRecord.
zzg40280614 2002-10-29
  • 打赏
  • 举报
回复
可能是数据感知控件自己的原因吧,因为我们不是将一个表与其连接的,而是手工加入。
用TComboBox没有问题!
neilwq 2002-10-29
  • 打赏
  • 举报
回复
把dbcombobox换成combobox

2,497

社区成员

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

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