怎样将文本框中输入的02.9转换到数据库中为日期型2002.9!急急急急!(50分)

  • 主题发起人 主题发起人 秋天 _cumt
  • 开始时间 开始时间

秋天 _cumt

Unregistered / Unconfirmed
GUEST, unregistred user!
我在文本框中输入02.9,希望转换到数据库中为日期型2002.9,但是如果将02.9的格式直接变为日期型,就成了2月9号了,而我不想这样,各位大侠帮忙^_^,因为我想在查询中用到这些,比如,我查找02.9月到03.8的数据的时候!
 
FormatDateTime('yyyy-mm',Now);
 
谢谢 阿西喊佛 ,但是我想在文本筐中就输入2003.9表示03.9月啊,用你的方法能倒数据库中,但是在界面输入的时候还是要输入03.9.15,就是还是要输入号码啊,谢谢!
大家叫我吧!
 
那你把03.9改成2003.9就可以了,

另外:我可能是你校友:)
 
来如风,毕业了吗?那样还是不性啊,你可以试一试,如果号的话,我请你吃饭!
 
将其转换为字符串然后在前面加20上去,再将其转换为想要的类型就得了!
Var Str1,Str2 : String;
Date1: TDate;
Begin
Str1:='20';
Str2:=Edit1.text;
Str2:=Str1+Str2;
Date1:=StrToDate(Str2);

 
如果是查询,应该是一个日期范围,数据库中可没有2003.9这样的日期(除非你使用字符型存储日期)
如果在数据库中使用日期型,应该是一个完整的日期格式,
虽然你输入的是02.9,但是也要将其补全为02.9.1,其中的日期可以随便给一个。
像你上面的要求,建议你最好自己做一个函数用来拆解你输入的日期格式,
返回一个有效的TDate型就可以
 
请吃饭,好啊,告诉我你的MSN:)
 
做function补全日期格式!!!
 
来如风,
你作出来我肯定请,真的,我02学生!
谢谢 放飞 你说的我也知道,但是怎么作,我就不知道了,给点具体的思路,好不好,谢谢各位了!
 
呵呵,我是99的
不懂你的具体要求,Tommie_Shi@hotmail.com
 
以下是临时为你作的一个函数,基本能完成你的要求

{
本函数完成将 年份(两位).月份(一位或两位) 格式的
字符串转换成对应的日期型的数据
参数 Value 是传入的字符型日期
AFlg 转换标志
0 表示将不完整的传入日期
按照传入日期的月份的第一天转换
1 表示将不完整的传入日期
按照传入日期的月份的最后一天转换
也可以指定一个非0的任何值
AFlg 默认只为 0
返回值 返回转换后的日期型数据
}
function Format_Date(const Value: String;
const AFlg: Integer = 0): TDate;
var
l: Integer;
FYear, FMonth, FDay: Word;
begin
l := Length(Value);
Result := -1;

//验证数据的有效性
if (l > 3) and (l < 6) and (Value[3] = '.') then
begin
FYear := StrToInt(Copy(Value, 1, 2));

//此处用来将两位的年份数据补成四位的年份
//规则是:如果原来两位的年份小于 30 则认为是 20** 年
//否则认为是 19** 年
if FYear < 30 then
FYear := 2000 + FYear
else
FYear := 1900 + FYear;
FMonth := StrToInt(Copy(Value, 4, l - 3));

//根据传入的标志,设置应该是本月的第一天还是最后一天
if AFlg = 0 then
FDay := 1
else
FDay := DaysInAMonth(FYear, FMonth); //取指定月份的最后一天

Result := EncodeDate(FYear, FMonth, FDay); //根据 年、月、日 转换
end;
end;

 
后退
顶部