还是一个简单的问题:送100分 结帖时间8小时

billfranck 2005-12-21 02:53:21
一个数据库有二个表
一个读者表reader 一个性别表sex
reader字段: read_id read_name sex_id
sex表的字段: sex_id sex_name 中有二个值: 男 女
在一窗体上用一个什么控件最好可以将表reader的sex_id 与表sex 中的sex_id 相关联:

是用DBComboBox 还是DBlookupcombo 控件

作用为:
当在窗体中选择"男"时 reader表中的sex_id 实际的值是:1
当在窗体中选择"女"时 reader表中的sex_id 实际的值是:2
同时如果取出数据时当1时,这个控件显示为"男"

能给我提供一些代码吗?    不知道我的意思表达清楚了没有?
...全文
197 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
billfranck 2005-12-26
  • 打赏
  • 举报
回复
我还是不太懂,高手们能不能详细一点
billfranck 2005-12-26
  • 打赏
  • 举报
回复
算了,结了,虽然不太满意
lhj 2005-12-24
  • 打赏
  • 举报
回复
这个问题不用那么复杂,不需要写代码即可实现在一个dbgrid中显示你的2个表。原理是用TLookupField.
在Form1上放一个conn,指向你的数据库。
放一个Table1,指向reader,连接用conn
放一个Table2,指向sex,连接用conn
放一个datasource1,指向Table1
放一个datasource2, 指向Table2
放一个dbgrid1
继续操作如下:
1,双击Table1,添加所有的字段
2,继续添加一个字段,出来一个界面,字段类型设置为lookup
把这个界面设置好以后,dbgrid的数据来源设置为datasource1就可以了。

要睡觉了。
caizhen2000_82 2005-12-24
  • 打赏
  • 举报
回复
楼上说的有理!!
billfranck 2005-12-23
  • 打赏
  • 举报
回复
周六了,高手们是不是都去过圣诞节了?
billfranck 2005-12-22
  • 打赏
  • 举报
回复
还有其他意见吗?
我想知道DBlookupcombo控件的几个重要的属性的用法!
nikita2000 2005-12-21
  • 打赏
  • 举报
回复
我是用苯办法,用ComboBox

void __fastcall TForm1::FormCreate(TObject *Sender)
{
ComboBox1->Clear();

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select * from reader");
Query1->Prepare();
Query1->Open();

if(Query1->RecordCount>0)
{
while(!Query1->Eof)
{
ComboBox1->Items->Add(Query1->FieldByName("student_name")->AsString);
Query1->Next();
}
}
}

void __fastcall TForm1::ComboBox1Exit(TObject *Sender)
{
if(ComboBox1->ItemIndex>=0)
{
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select * from reader where student_name='"+ComboBox1->Text+"'");
Query1->Prepare();
Query1->Open();
if(Query1->RecordCount>0)
Query1->FieldByName("student_id")->AsInteger 这就是你想要的id值
}
}
wf2091139 2005-12-21
  • 打赏
  • 举报
回复
我用的是TComboBox

在TComboBox 中添加的时候

cbNo->Items->AddObject("男",(TObject *)1); //男的用1
cbNo->Items->AddObject("女",(TObject *)2); //女的用2

//在cbo选项改变时
void __fastcall TForm1::cbNoChange(TObject *Sender)
{
int id = (int)cbNo->Items->Objects[cbNo->ItemIndex];
qry->Close();
qry->SQL->Clear();
qry->SQL->Add("Select * from reader where sex_id = '"+IntToStr(id)+"'");
qry->Open();
}


BCB2006 2005-12-21
  • 打赏
  • 举报
回复
用子查询就可以了.
select * from 商品表 where 商品ID in (select 商品ID from 销售表)
billfranck 2005-12-21
  • 打赏
  • 举报
回复
我的意思并不是,我只想用就这个问题而谈这个问题:我只是想知道此类问题如何解决.
比如说商品表,和销售情况表通过商品ID号进行关联,商品可多了,不可能只通过布尔型就能解决的了的!!
ccrun.com 2005-12-21
  • 打赏
  • 举报
回复
就一个“男,女”还单独用个表?

字段用布尔型的,True代表男,false代表女就可以了。
CACACACACA 2005-12-21
  • 打赏
  • 举报
回复
用DBlookupcombo吧.
只需设置一下,可以实现你的要求.
billfranck 2005-12-21
  • 打赏
  • 举报
回复
如题

1,178

社区成员

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

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