就是下面的这段代码了,我想每次保存进仓单都自动生成一个唯一的编号,下次再保存的时候这个编号可以自动加1,可就是弄不出来,现在的程序能通过编译,可运行的时候有错误,经常提示的错误有:将数据类型varchar转换为numeric时出错 ; 要不就是:'jc_'is not a valid integer value我实在是搞不懂了,哪为仁兄知道的,帮帮忙吧,对了,有的时候点击保存的时候提示操作成功,可之后马上就弹出上面所说的错误,当我看数据库的时候,也有保存了的数据,我真的搞不懂了。'
procedure TfrmInput.FormShow(Sender: TObject);
var
maxnum,temp,inputnum:string;
newnum:integer;
begin
//显示当前日期
Edit2.Text:=datetostr(date);
//操作员即登录用户
Edit3.Text:=frmLogin.Edit1.Text;
//显示进仓单编号
with ADOQuery1 do begin
close;
SQL.Clear;
SQL.Add('select max(进仓单编号) 最大编号 from 进仓单');
Open;
end;//end with
maxnum:=ADOQuery1.FieldByName('最大编号').AsString;
//防止插入第一条记录的时候发生错误
if (maxnum='')or(maxnum=' ') then
temp:='000'
else
temp:=copy(maxnum,1,3);
//新插入的进仓单编号为插入前的最大编号+1
newnum:=strtoint(temp)+1;
//重新组合编码
if length(inttostr(newnum))=1 then
inputnum:='jc_0500'+inttostr(newnum);
if length(inttostr(newnum))=2 then
inputnum:='jc_050'+inttostr(newnum);
if length(inttostr(newnum))=3 then
inputnum:='jc_05'+inttostr(newnum);
Edit1.Text:=inputnum;end;
procedure TfrmInput.FormShow(Sender: TObject);
var
maxnum,temp,inputnum:string;
newnum:integer;
begin
//显示当前日期
Edit2.Text:=datetostr(date);
//操作员即登录用户
Edit3.Text:=frmLogin.Edit1.Text;
//显示进仓单编号
with ADOQuery1 do begin
close;
SQL.Clear;
SQL.Add('select max(进仓单编号) 最大编号 from 进仓单');
Open;
end;//end with
maxnum:=ADOQuery1.FieldByName('最大编号').AsString;
//防止插入第一条记录的时候发生错误
if (maxnum='')or(maxnum=' ') then
temp:='000'
else
temp:=copy(maxnum,1,3);
//新插入的进仓单编号为插入前的最大编号+1
newnum:=strtoint(temp)+1;
//重新组合编码
if length(inttostr(newnum))=1 then
inputnum:='jc_0500'+inttostr(newnum);
if length(inttostr(newnum))=2 then
inputnum:='jc_050'+inttostr(newnum);
if length(inttostr(newnum))=3 then
inputnum:='jc_05'+inttostr(newnum);
Edit1.Text:=inputnum;end;
解决方案 »
- 男人有泪该不该流下来?
- 窗体的最小化及还原
- 请问一个采鸟的问题:对于分布式数据库,如何连接分布在不同位置的数据库表?
- 如何获取win2000(xp,2003)的用户名?
- 怎样获得当前打开文件的目录??
- 如何控制IdFTP下载的文件长度?
- 谁写过电视墙程序 发EMAIL给我!
- 各位,哪有五子棋人机对战的源代码下载?急需啊!谢谢!!!
- 有没有谁用过TurboPower的控件包
- DELPHI中可否直接 CreateObject ("obj.aaa") ?
- 输入法原来是中文,为什么当点到COMBOBOX框时会变成英文的。有什么属性可以设置吗?谢谢
- 我的数据库连接代码为什么不能跨网连接?是因为防火墙吗?
是不是接着想把inputnum转成INT插进数据库啊??那不报错才怪呢..
inputnum:=format('jc_05%.3d',[newnum]);从提示的错误看,应该是更新/插入数据时类型错误,
想用stringgrid组件,所以写了如下代码,不知道有什么错误,希望大家指出,因为第一次用 stringgrid组件,所以不怎么会用,知道的就帮帮忙了,只要正确肯定有分的,放心了!procedure TfrmInput.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 100 do
begin
//插入新的进仓单数据
adocommand1.CommandText:='insert into 进仓单 (进仓单编号,料号,名称,数量,单位,进仓日期,操作员,备注)values('''+Edit1.Text+''','''+stringgrid1.Cells[1,i]+''','''+stringgrid1.Cells[2,i]+''','''+stringgrid1.Cells[3,i]+''','''+stringgrid1.Cells[4,i]+''','''+Edit2.Text+''','''+Edit3.Text+''','''+stringgrid1.Cells[5,i]+''')';
adocommand1.Execute;
end;
ShowMessage('进仓单保存成功');
stringgrid1.Cols[0].Clear;
stringgrid1.Cols[1].Clear;
stringgrid1.Cols[2].Clear;
stringgrid1.Cols[3].Clear;
stringgrid1.Cols[4].Clear;
stringgrid1.Cols[5].Clear;
end;