注册 登录
编程论坛 VFP论坛

求助 !一句update 更新所有流水号

小805805 发布于 2022-05-17 19:40, 1725 次点击
流水号 由日期字段的月份日期加编号(编号从01开始 连续)组成, 如5月2号一共两票 那么流水号就是‘050201’和‘050202’。
create table l1 (序号 n(10),日期 D,姓名 C(10),收支 N(10),流水号 C(10))
insert into  l1 (序号,姓名,日期,收支) VALUES (1,'张三',{^2022.02.02},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (2,'张三',{^2022.02.02},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (3,'张三',{^2022.02.03},-10)
insert into  l1 (序号,姓名,日期,收支) VALUES (4,'李四',{^2022.02.03},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (5,'李四',{^2022.02.04},-10)
insert into  l1 (序号,姓名,日期,收支) VALUES (6,'王五',{^2022.02.04},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (7,'王五',{^2022.02.04},10)

insert into  l1 (序号,姓名,日期,收支) VALUES (8,'张三',{^2022.02.05},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (9,'张三',{^2022.02.06},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (10,'张三',{^2022.02.07},-10)
insert into  l1 (序号,姓名,日期,收支) VALUES (11,'李四',{^2022.02.08},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (12,'李四',{^2022.02.09},-10)
insert into  l1 (序号,姓名,日期,收支) VALUES (13,'王五',{^2022.02.10},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (14,'王五',{^2022.02.11},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (15,'张三',{^2022.02.05},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (16,'李四',{^2022.02.06},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (17,'王五',{^2022.02.11},10)
10 回复
#2
my23182022-05-17 20:17
把你的想法写成一个sql语句就行了
#3
小8058052022-05-18 09:30
UPDATE l2 SET 流水号=SUBSTR(DTOC(日期),6,2)+SUBSTR(DTOC(日期),9,2)+PADL(ALLTRIM(STR(m1+1)),2,'0')

只有本站会员才能查看附件,请 登录

红色提示 是我希望做出来的效果
#4
大哲子2022-07-14 10:09
是不是用do while循环 让指针一直往下移动
或者用vfp9 支持多表更新  update 表1 set 流水号=  from 表2 where 条件
#5
mywisdom882022-07-14 13:06
*!* SQL 一句话,就不会了,VFP的多句话还是会的。
SET CENTURY ON
SET DATE YMD
create CURSOR  T1 (序号 n(10),日期 D,姓名 C(10),收支 N(10),流水号 C(10))

insert into  T1 (序号,姓名,日期,收支) VALUES (13,'王五',{^2022.02.10},20) && 故意颠倒日期
insert into  T1 (序号,姓名,日期,收支) VALUES (14,'王五',{^2022.02.11},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (15,'张三',{^2022.02.05},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (16,'李四',{^2022.02.06},20)
insert into  T1 (序号,姓名,日期,收支) VALUES (17,'王五',{^2022.02.11},10)

insert into  T1 (序号,姓名,日期,收支) VALUES (1,'张三',{^2022.02.02},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (2,'张三',{^2022.02.02},20)
insert into  T1 (序号,姓名,日期,收支) VALUES (3,'张三',{^2022.02.03},-10)
insert into  T1 (序号,姓名,日期,收支) VALUES (4,'李四',{^2022.02.03},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (5,'李四',{^2022.02.04},-10)
insert into  T1 (序号,姓名,日期,收支) VALUES (6,'王五',{^2022.02.04},20)
insert into  T1 (序号,姓名,日期,收支) VALUES (7,'王五',{^2022.02.04},10)

insert into  T1 (序号,姓名,日期,收支) VALUES (8,'张三',{^2022.02.05},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (9,'张三',{^2022.02.06},20)
insert into  T1 (序号,姓名,日期,收支) VALUES (10,'张三',{^2022.02.07},-10)
insert into  T1 (序号,姓名,日期,收支) VALUES (11,'李四',{^2022.02.08},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (12,'李四',{^2022.02.09},-10)

BROWSE

*!* VFP 方法处理

SELECT * FROM T1 ORDER BY 日期 ASC ,序号 ASC INTO CURSOR T1 READWRITE  && 重新按日期,序号排序
n流水 = 0
d日期 = {}
SCAN
   IF 日期 = d日期
      n流水 = n流水 + 1
   ELSE
      n流水 = 1
   ENDIF
   d日期 = 日期
   REPLACE 流水号 WITH PADL(YEAR(日期),4,'20')+PADL(MONTH(日期),2,'0')+PADL(DAY(日期),2,'0')+PADL(n流水,2,'0')
ENDSCAN

*!* 看看效果
BROWSE

#6
吹水佬2022-07-14 15:06
有一句强迫症
只有本站会员才能查看附件,请 登录

程序代码:

SET DATE TO ANSI
SET CENTURY ON
SET MARK TO '.'
CREATE CURSOR  tt (日期 D,流水号 C(10))
INSERT INTO tt VALUES ({^2022.02.01}, "")
INSERT INTO tt VALUES ({^2022.02.02}, "")
INSERT INTO tt VALUES ({^2022.02.02}, "")
INSERT INTO tt VALUES ({^2022.02.03}, "")
INSERT INTO tt VALUES ({^2022.02.03}, "")
INSERT INTO tt VALUES ({^2022.02.03}, "")
INSERT INTO tt VALUES ({^2022.02.04}, "")
INSERT INTO tt VALUES ({^2022.02.04}, "")
d = CTOD("")
n = 0
** REPLACE ALL 流水号 WITH EXECSCRIPT("n=IIF(日期==d,n+1,1)"+0h0D+"d=日期"+0h0D+"return RIGHT(DTOS(d),4)+PADL(n,2,'0')")
UPDATE tt SET 流水号 = EXECSCRIPT("n=IIF(日期==d,n+1,1)"+0h0D+"d=日期"+0h0D+"return RIGHT(DTOS(d),4)+PADL(n,2,'0')")
BROWSE
#7
mywisdom882022-07-14 17:05
还能这样用的。。。
UPDATE tt SET 流水号 = EXECSCRIPT("n=IIF(日期==d,n+1,1)"+0h0D+"d=日期"+0h0D+"return RIGHT(DTOS(d),4)+PADL(n,2,'0')")
#8
吹水佬2022-07-14 17:29
回复 7楼 mywisdom88
就是将好多句写成一句,这样做没有什么优点。
#9
bdx8082022-07-25 10:03
学习了
#10
小8058052022-09-08 21:41
学习了
#11
sdta2024-03-07 12:04
这种流水号应该是在数据录入保存时生成的,不是批量生成的。
1