关于数据库的简单问题(200分)

  • 主题发起人 y0y0y0y0y0
  • 开始时间
Y

y0y0y0y0y0

Unregistered / Unconfirmed
GUEST, unregistred user!
在数据库中,将性别存成1,0
在取出的时候怎么将他变成男女。还有我想用一个下拉列表显示,就是显示成一个下拉
列表中有男女,但是在数据库中存成1,0
类似这种情况应该怎么做,实在是不会了。
提前有分。谢谢了。(请说的详细一点)
(有原码更好)
 
select (case 性别字段 when 1 then '男' else '女' end ) as 性别 from table
这样查询出来就是男女,
在插入保存的时候就麻烦多了,要编程实现,
建议用 字符类型的字段表示男女
 
写入:
FieldByName('Sex').asInteger:=ListBox1.ItemIndex;
取出:
ListBox1.ItemIndex:=FieldByName('Sex').asInteger;[:D]
 
其实,你可以对,你所要操作的控件进行操作就行了,你可以用个函数对数据库进行
判断。
 
用dbradiogroup,
items 男女
values 1,0
 
建立计算字段
 
如果不用Dbgrid的话,用LookUpDbComboBox控件.
如果用Dbgrid的话,用LookUp Field
这两中方法最简单.

 
再添加一个对照表
t_dz
BM NAME
1 男
0 女
select yourtabel.aa , t_dz.name as 性别 from t_dz,yourtabel where yourtabel.sex=t_dz.bm
 
var
m_bmnan,m_bmniu:integer;
begin
if combobox1.text:='男' then m_bmnan:=1 else m_bmniu:=0 ;
end;
反过来不要说你不会写哦!!!
 
类似性别等的常见数据字段一般应该新建一个代码表1为男,0为女。
之后用dblookupcombobox控件,其datasource连接主表,listsource连接从表(即代码表)
 
最好的办法就是加一个计算字段,xm
在数据环境中加入一个转换
当性别为1时值为“男”
当性别为0时值为“女”
以后在各处使用时均用XM字段来显示!
更新时又自然会用“性别”来更新,没有副作用!
绝对Happy!
 
用你这个要修改字段产生一上OnGetText事件。
const
Sex: array [False..True] of String=('女','男')
begin
Text:=Sex[Sender.AsBoolean];
end;
我一般都是这样用的。你也可以试试。
 
//在固定字段的OnGetText和OnSetText事件中写代码
procedure TDMForm.ADS_DJ_FPJZLXGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
//取得记帐类型
begin
case Sender.AsInteger of
10:Text:=SJZLX_HX; //'核销'
20:Text:=SJZLX_XJ; //'现结'
30:Text:=SJZLX_QC; //'期初'
end;
end;

procedure TDMForm.ADS_DJ_FPJZLXSetText(Sender: TField; const Text: String);
//设置记帐类型
begin
if Text=SJZLX_HX then
Sender.AsInteger:=10
else
if Text=SJZLX_XJ then
Sender.AsInteger:=20
else
if Text=SJZLX_QC then
Sender.AsInteger:=30;
end;
 
建一个代码表:1为男,0为女。
之后用dblookupcombobox控件,其datasource连接主表,listsource连接从表(即代码表)
 
谢谢各位
但是在Dbgrid中怎么显示成下拉列表的形式,在性别下可以下拉成男女。
 
建议你用DBGridEh,轻松解决你的问题
 
双击dbgrid加入所有字段,选择性别字段,属性编辑器中的PickList(Strings)设为


 
直接用字符型就好了,死要玩高章。做这种吃力不讨好的事。
 
顶部