产品编号共10位(NVARCHAR编号内有字母)
查找出产品编号前5位相同的所有记录,
中间的2位是字母(每条记录的字母是不同的)
再找到这些记录中后三位最大的那条记录+1做为新的编号
请给出详细一些的编码.
谢谢!!!!!!!!!!!
查找出产品编号前5位相同的所有记录,
中间的2位是字母(每条记录的字母是不同的)
再找到这些记录中后三位最大的那条记录+1做为新的编号
请给出详细一些的编码.
谢谢!!!!!!!!!!!
解决方案 »
- 如何表达大于等于或小于等于。
- DELPHI这种情况怎么办?
- 求Delphi安装后的一个报表单元 \delphi7\Rave5\Lib\Report_Public.pas'。急!!!
- 200 分求购vclzip 3.03的源码
- 数据库连接的问题
- 昨天晚上碰到一个PLMM,散分
- 初学者求教,还望高手不吝赐教!
- 请问:如何在窗体中得到名为A10的button,并对它操作
- 请教一个简单的问题:如何在程序中发送一个键值,如VK_UP键,让程序相应响应响应的事件/nc
- 如何表示当前目录的上一级目录,要求不用绝对路径,也不改变当前目录?
- 求不规则图形CAD排料(用DELHPI编程演示)算法
- 征求一界面的制作方法!
不过也无所谓的,用copy和pos就完全可以解决
66666AB001
66666BB002
66666AB003
66667BB001
66667AB002就是说不管中间两位字母是什么,只要前5个数字相同就先取出
如果我想增加一个产品编码前7位是66666cc那么它的后三位是004 组成一个66666cc004的编码
如果增加的产品编码前7位是66667AB的话,那么它的后三位是003 组成一个66667ab003的编码
选择数据集while not ClientDataset.eof
var
str : string;
begin
str = Copy(ClientDataSet.FieldByName("编码").toString(),8,3);
if (strtoInt (str)>Max)
begin
Max = strtoint(str);
end;
ClientDataSet.Next;
end;
你写的编码报错
停在Var上
while not ClientDateset.eof do
var
begin
...
end;
from B_prod_list
where prod_id like '101%' and len(prod_id)>7
group by left(prod_id,5)给你个sql语句,我在sql实现的是编码8位,查出前3为相同的纪录,第4、5为不同,后三位最大的那条纪录+1,希望能给你帮助。
选择数据集var
str : string;
Mac : integer;
...Adoquery1.First;
while not Adoquery1.eof do
begin
Max := 0;
str = Copy(Adoquery1.FieldByName("编码").AsString,8,3);
if (strtoInt(str) > Max)
begin
Max = strtoint(str);
end;
Adoquery1.Next;
end;Max := StrToInt(RightStr('000' + IntToStr(Max), 3));编号 := '66667AB' + IntToStr(Max);呵呵,只是思路,供参考。
你可以在排序后指到最后的一条,然后再将后3位提出,转换为数字再加一就可以了
加的方法我有例子
方便的话加QQ:270726628。呵呵