怎么让编号自动出现JH2002101301,JH2002101302,
如果是明天就是:JH2002101401,JH200210140,
下面该如何该才能达到我的目的呢?我想因为前面加了'jh'的关系吧。一查询就出错!if table1.Eof then //当数据库为空的时候,自动生成第一张编号;
begin
table1.Append;
table1.FieldByName('bh').AsString:='JH'+formatdatetime('yyyymmdd',now)+'01';
end
else //找出最大值,然后加一!
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select max(bh) as sumr from bh');
query1.Open;
dbedit1.Text:=query1.FieldValues['sumr']+1;
dbedit1.SelectAll;
如果是明天就是:JH2002101401,JH200210140,
下面该如何该才能达到我的目的呢?我想因为前面加了'jh'的关系吧。一查询就出错!if table1.Eof then //当数据库为空的时候,自动生成第一张编号;
begin
table1.Append;
table1.FieldByName('bh').AsString:='JH'+formatdatetime('yyyymmdd',now)+'01';
end
else //找出最大值,然后加一!
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select max(bh) as sumr from bh');
query1.Open;
dbedit1.Text:=query1.FieldValues['sumr']+1;
dbedit1.SelectAll;
解决方案 »
- 请高手帮我看看什么地方出了问题?
- FastReport 中richtext内容显示不全?
- project 初始化时的一点小问题
- 如何修改文件的备注信息?参与给分!
- ComboBox深度问题,在下拉列表状态下,如何实现将鼠标移至某项上右击弹出popupMenu菜单,选择"修改"菜单项,再弹出另一窗体对此对此列表
- 文件传输的小问题,在线等!
- ▲▲▲▲简单的网络问题!!!▲▲▲▲▲
- 怎么去掉,数据库读入memo框中输入的字符串换行时自动加的逗号?
- 怎样才能让listview的一个column不显示?
- 关于C/S数据库应用系统发布时的Connectionstring配置问题。
- 请教关于文语转换技术细节,高分!
- 讨论: 有没有人一下指针哪,顺便散分(到两个星星了)
NoStr,DetailStr:String;
begin
...
NoStr:=Query1.Fields[0].AsString;
DetailStr:=Copy(NoStr,Length(NoStr)-1,2);
NoStr:=Copy(NoStr,1,Length(NoStr)-2)
+IntToStr(StrToInt(DetailStr)+1);
dbedit1.Text:=NoStr;
dbedit1.SelectAll;
end;//试试,我在网吧没办法调试
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select max(right(bh,2)) as sumr from bh');
query1.Open;
table1.Append;
table1.FieldByName('bh').AsString:='JH'+formatdatetime 'yyyymmdd',now)+query1.fieldbyname('sumr').asstring;
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select max(right(bh,2)) as sumr from bh');
query1.Open;
table1.Append;
table1.FieldByName('bh').AsString:='JH'+formatdatetime 'yyyymmdd',now)+query1.fieldbyname('sumr').asstring;
end
你的想法不错,不过可能不对吧,象这样的数据:
JH2002101305,
JH2002101403//比方这是今天的单号,你的方法就有问题
把:
query1.SQL.Add('select max(right(bh,2)) as sumr from bh');
改为:
query1.SQL.Add('select max(right(bh,2)) as sumr from bh');
query1.SQL.Add('where bh like '''+formatdatetime('yyyymmdd',now)+'%''');
说到这楼主的SQL语句也写得有问题。
select max(bh) from biao where biao.id=(select max(id) from biao)
很好用啊。
select max(Right(myID, 2)) from a
然后就可以通过Format函数格式化你所要的字符串了。
function GetAutoID(ADataSet: TQuery; ADate: TDataTime);
var
Year, Month, Day: Word;
begin
DecodeDate(ADate, Year, Month, Day)
with ADataSet do
begin
if Active then Close;
//Max函数不说了,Right函数是取这个字段值,取它右边的两位
// 还要加上Where语句,不然它找的是全部记录.
SQL.Text := Format('SELECT MAX(RIGHT(myID, 2)) FROM A WHERE myID like ''JH%.4d%.2d%.2d%s''', [Year, Month, Day, '%']);
try
Open; First;
except
raise Exception.Create('打开什么表出错。');
end;
if Fields[0].IsNull then //为空,说明是第一张
Result := Format('JH%.4d%.2d%.2d%.2d', [Year, Month, Day, 1])
else
Result := Format('JH%.4d%.2d%.2d%.2d', [Year, Month, Day, Fields[0].AsInteger + 1]);
end;
end;