两个问题:数据表主键问题,小数进位问题 ( 积分: 70 )

  • 主题发起人 主题发起人 调皮儿
  • 开始时间 开始时间

调皮儿

Unregistered / Unconfirmed
GUEST, unregistred user!
1.我做这个东西,数据表的主键id,要设置为char,14位的,前八位为“20070530”,就是当天的日期,下来两位是一个固定数字“70”,最后四位是当天的递增数字,从“0001”开始,接下来是“0002、0003”,这个要怎么设置?
我想先设置个text框,把数值先放text框里,再录入到id数据表里,当天的日期我能弄出来,就是你上次教我的,但只显示“2007530”,我设置为:
begin
DecodeDate(now, y, m, d);
if m<10 then
a:='0'+Inttostr(m)
else
a:=IntToStr(m);
edit5.Text := IntToStr(y) + a + IntToStr(d)+'70' ;
但接下来的0001我就不会弄了,而且要让它在前边日期变成下一天的时候,再从0001开始计算,我不会。怎么弄啊?
2.我想实现一个目的,当我在text1中输入3.1的数字时,按下button键,则在text2中显示为4。也就是说,不管小数是多少,只要有小数,都进位。当然,没有小数就不进位了。如何弄啊?
我从网上查,有
num:=Strtofloat(edit1.Text);
b:=Round((Num+0.9)*10)/10;
但弄到这里,我就不会把它的类型转回来了,
 
1.select convert(varchar(8),getdate(),112)+'70'+max(rigth(id,4) +1 as newid from table1 where left(id,8)=convert(varchar(8),getdate(),112)
就是取日期是当天的最大的ID号的下一个就是新的ID,
2。ceil(num)
 
能说的再详细一点吗?
 
不知道后台数据库是甚么?可以建立触发器
 
后台是SQL,如何能用建立触发器来实现这个功能呢?主要问题是第一个问题,急啊!能回答出第一个问题就给分!
 
这个东东不错 format(%.5d,[99]) --> 00099
 
我说的很详细了,你仔细看看,到查询分析器中试试.
 
李翔鹏,你这里少了半个括号,放在什么地方啊?我试过了,如果没有 +1 ,就可以,如果加上+1,这个id的后面的4个数字就不是0001+1=0002,而是0001+1=2了,而且运行后变成前面的日期数字和后边的数字相加了。
 
那个,我能问个白痴的问题吗?如果这个能在查询分析器里运行的话,那我要在delphi设计中运行实现,我要如何做呢?就光在adoquery中添加就可以吗?那本身还有select * from table1了,再加这个,岂不是太乱了吗?
比较笨,请好心人帮我解答,谢谢。
 
先接受一下答案了,ceil的用法很好,我很喜欢,format也给我不少灵感,但第一个问题我还是没有做出来,再问一次了!
 
先接受一下答案了,ceil的用法很好,我很喜欢,format也给我不少灵感,但第一个问题我还是没有做出来,再问一次了!
 
多人接受答案了。
 
后退
顶部