表X内有一字段BM内容格式如下:
A001
A002
B001
B002
....
如何通过SQL或Delphi得到A003或B003得最大编号???
A001
A002
B001
B002
....
如何通过SQL或Delphi得到A003或B003得最大编号???
解决方案 »
- Panel上窗体显示的问题,有的窗体点一次就显示,有的窗体必须点两次才能显示
- 如何获取图片里面的文字信息
- 如何在一曲线上任一点出画切线
- ***********cxSpreadsheet 某个单元格禁止编辑的问题*************
- 报错,但找不到,帮忙看看
- 怎么样把从表(user)中取出的值赋给combobox下拉条?
- ADOConnection使用DSN连接时,ADOStoredProc报“[ODBC SQL Server Driver]没有执行可选特性”??????
- 简单小问题:怎样把 2,002 改成 2002
- 怎样用Delphi 开发一个像Tencent聊天室一样的程序??《!!!加急!!!》
- 请问:需要在窗体上显示十个同样的picture,不需要建立10个image吧
- 求一思路
- delphi如何根据字段长度设置excel列宽
Select max(BM) from X group By substring(bm,1,1)
var
lsCondition: string;
lsSQL: string;
begin
lsCondition := 'A001'; //已知条件
lsCondition := Copy(lsCondition, 1, 1);
lsSQL := 'SELECT ISNULL(MAX(BM), 0)+1 AS BM FROM TableName WHERE BM LIKE '
+ QuotedStr(lsCondition) + '%';
end;
http://topic.csdn.net/u/20080127/20/92479f1a-f6d2-4dad-82b2-0397b7b25514.html
//数据库sqlserver
//在窗体中放一个adoconnection,一个adoquery,一个edit,一个button
//设置好联接数据库等。
//测试表结构:create table recv_info(flowno varchar(20),indate datetime,feature varchar(20))
//flowno 单号,indate 入库日期,feature 商品名称
//函数名称 getflowno unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB; type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
function GetFlowNO(PreConstantChar,vRig_Date:String):string;
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} { TForm1 }
function TForm1.GetFlowNO(PreConstantChar, vRig_Date: String): string;
var
sSqlText,sMaxSerialNO: string;
i,iLength: integer;
begin
Result := '';
sSqlText := ' SELECT MAX(flowno) MaxNO FROM RECV_INFO'+
' Where flowno like '''+PreConstantChar+FormatDateTime('YYYYMMDD',StrToDate(vRig_Date))+'%'''+
' and indate> ='''+formatdatetime('yyyy-mm-dd',StrToDate(vRig_date))+''''+
' and indate <'''+formatdatetime('yyyy-mm-dd',strtoDate(vRig_date)+1)+'''';
with adoquery1 do
begin
Close;
SQL.Text := sSqlText;
Open;
if FieldByname('MaxNO').AsString='' then sMaxSerialNO := '001'
else
begin
sMaxSerialNO := FieldByName('MaxNO').asString;
sMaxSerialNO := Copy(sMaxSerialNO, length(sMaxSerialNO)-2, 3);
sMaxSerialNO := IntToStr(StrToInt(sMaxSerialNO)+1);
end;
end; for i:=1 to 3-Length(sMaxSerialNO) do
begin
insert('0',sMaxSerialNO,i);
end;
Result := trim(PreConstantChar+FormatDateTime('YYYYMMDD',StrToDate(vRig_Date))+sMaxSerialNO);
end;
//按钮的事件,生成一个存到表中一个
procedure TForm1.Button1Click(Sender: TObject);
begin
adoconnection1.BeginTrans;
try
Edit1.Text := GetFlowNO('BJ',formatdatetime('yyyy-mm-dd',now()));
with adoquery1 do
begin
close;
sql.Text := ' insert into recv_info(flowno,indate,feature) values(:flowno,:indate,:feature)';
Parameters.ParamByName('flowno').Value := Edit1.Text;
Parameters.ParamByName('indate').Value := Formatdatetime('yyyy-mm-dd',now());
Parameters.ParamByName('feature').Value := Formatdatetime('yyyy-mm-dd',now())+'物料';
ExecSql;
end;
adoconnection1.CommitTrans;
except
adoconnection1.RollbackTrans;
messagebox(handle,'生成新单号失败','提示',mb_iconinformation);
end;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
adoconnection1.Connected := true; //开始联接数据库
end; end.