用存储过程,如下面 PROCEDURE ,小做修改即可用。CREATE PROCEDURE get_invoice_serial
@my_day varchar(20)
AS
declare @thisdate as varchar(20)
declare @serial as varchar(20)
declare @startserial as varchar(20)
declare @thisserial as varchar(20)
declare @tday as varchar(4)
declare @tmonth as varchar(4)
declare @tyear as varchar(6)
declare @dd as varchar(20)
if rtrim(@my_day) = ''
begin
set @my_day = rtrim(getdate())
end
select @tyear = convert(char(4),year(@my_day)) ,
@tday = convert(char(2),day(@my_day)),
@tmonth = convert(char(2),MONTH(@my_day))
if len(rtrim(@tyear))< 4
begin
set @tyear = '20' + @tyear
end
if len(rtrim(@tmonth))< 2
begin
set @tmonth =rtrim('0' + @tmonth)
end
if len(rtrim(@tday))< 2
begin
set @tday = '0'+ @tday
end
set @dd = rtrim(rtrim(@tyear)+'-'+rtrim(@tmonth)+'-'+@tday)
select @serial =
max(serial_number) from unify_invoice where date = @dd
set @startserial = rtrim(@tyear+@tmonth+@tday) + '10000'
set @thisserial =
isnull(convert(char(18),convert(decimal(18),@serial)+1),@startserial)
select @thisserial
@my_day varchar(20)
AS
declare @thisdate as varchar(20)
declare @serial as varchar(20)
declare @startserial as varchar(20)
declare @thisserial as varchar(20)
declare @tday as varchar(4)
declare @tmonth as varchar(4)
declare @tyear as varchar(6)
declare @dd as varchar(20)
if rtrim(@my_day) = ''
begin
set @my_day = rtrim(getdate())
end
select @tyear = convert(char(4),year(@my_day)) ,
@tday = convert(char(2),day(@my_day)),
@tmonth = convert(char(2),MONTH(@my_day))
if len(rtrim(@tyear))< 4
begin
set @tyear = '20' + @tyear
end
if len(rtrim(@tmonth))< 2
begin
set @tmonth =rtrim('0' + @tmonth)
end
if len(rtrim(@tday))< 2
begin
set @tday = '0'+ @tday
end
set @dd = rtrim(rtrim(@tyear)+'-'+rtrim(@tmonth)+'-'+@tday)
select @serial =
max(serial_number) from unify_invoice where date = @dd
set @startserial = rtrim(@tyear+@tmonth+@tday) + '10000'
set @thisserial =
isnull(convert(char(18),convert(decimal(18),@serial)+1),@startserial)
select @thisserial
解决方案 »
- 地址报错问题
- 关于modem来电显示的问题
- 广域网的三层结构的软件,使用TCP协议还是UDP协议好?
- 怎样给TMainMenu添加mousemove事件?
- 求助:Delphi下的排序问题(冒泡算法)
- 我在编程的时间遇到一个问题想请大家帮忙解决一下!比较急!!谢谢各位了!!
- 如何捕获光标键,并做相应理?
- 新手向各位高手请教!谁能给我一个最简单的三层的例子?只要实现简单的select功能,然后在客户端显示出来即可,谢谢了!在线等待,急,分
- cxgrid 显示的图片导出到excel 怎么是空白?
- 高难算法问题。
- 一个delphi下的报表控件,请大家测试,多多提出改进意见,谢谢.
- 高分求救:关于一个FORM显示多个副本。
try
post;
except
showmessage('该记录已经存在');
exit;
end;2. 如果你用sql 语句控制的话。 那就是在提交前先检测一下在表里是否存在
同样的记录如果没有则添加,如果有则提示已经有记录存在。定义一函数.
在public下
Function check(str:string):boolean;function form1.check(str:string):boolean;
begin
with adoquery1 do
Begin
active:=false;
sql.add('select * from table where bh=:bh');
Parameters[0].Value :=str;
active:=True;
Result:=RecordCount>0;
end;
end;在程序里调用该函数.if check(edit1.text) then
begin
showmessage('该记录已存在');
exit;
end;