主题:[求助]再问自动填充的问题。
各位大侠帮帮忙。我这儿有两个表,如下:
呵呵,俺的脑子都让这个弄的快成浆糊了,乱啊。再重新描述一下:
如下:
B表 A表
产品名称 包装编号 产品名称 包装编号 产品包装编号
佳能 佳能 01 佳能01
佳能 佳能 03 佳能03
奥林巴斯 佳能 05 佳能05
奥林巴斯 尼康 01 尼康01
索尼 尼康 03 尼康03
索尼 01 索尼01
索尼 03 索尼03
索尼 05 索尼05
索尼 07 索尼07
奥林巴斯 01 奥林巴斯01
奥林巴斯 03 奥林巴斯03
A表是一个不断更新的数据库,里面的产品很多。产品包装编号=产品名称+包装编号。
A表中各厂家产品的包装种类的编号依次为:01,03,05......,后一个编号比前一个编号大2。
B表是从当月销售数据中挑出来的产品的新包装。
如何才能将B表中的各厂家产品的新包装依据A表自动填充新的包装编号呢?
如,佳能本月有两个新包装,依据A表中佳能产品包装编号已编到05,本月应该给07,09。
注:A表是只读文件。
有位大侠给的程序如下:
USE a表 in 0
USE b表 in 0
SELECT a表
INDEX ON 产品包装编号 to a
n_1=""
n_2=""
n_3=""
FOR i = 1 to RECCOUNT("b表")
foundkg=.f.
GO i in b表
LOCATE for ALLTRIM(a表.产品名称)==ALLTRIM(b表.产品名称)
foundkg=FOUND()
DO while !EOF()
n_1=ALLTRIM(a表.产品名称)
n_2=ALLTRIM(a表.包装编号)
IF foundkg
CONTINUE
foundkg=FOUND()
ENDIF
IF !foundkg
IF n_3=n_1
REPLACE b表.包装编号 with PADL(ALLTRIM(STR(VAL(n_2)+n)),2,"0") in b表
n=n+2
ELSE
n=2
REPLACE b表.包装编号 with PADL(ALLTRIM(STR(VAL(CHRTRAN(n_2,CHRTRAN(n_2,"0123456789",""),""))+2)),2,"0") in b表
n_3=n_1
n=n+2
ENDIF
EXIT
ENDIF
ENDDO
NEXT
但是运行起来,有时候编号会填的准确无误,有的时候会出现错误编号的情况。不知道是怎么回事。
还请各位大侠帮忙啊,谢谢啦!呵呵
呵呵,俺的脑子都让这个弄的快成浆糊了,乱啊。再重新描述一下:
如下:
B表 A表
产品名称 包装编号 产品名称 包装编号 产品包装编号
佳能 佳能 01 佳能01
佳能 佳能 03 佳能03
奥林巴斯 佳能 05 佳能05
奥林巴斯 尼康 01 尼康01
索尼 尼康 03 尼康03
索尼 01 索尼01
索尼 03 索尼03
索尼 05 索尼05
索尼 07 索尼07
奥林巴斯 01 奥林巴斯01
奥林巴斯 03 奥林巴斯03
A表是一个不断更新的数据库,里面的产品很多。产品包装编号=产品名称+包装编号。
A表中各厂家产品的包装种类的编号依次为:01,03,05......,后一个编号比前一个编号大2。
B表是从当月销售数据中挑出来的产品的新包装。
如何才能将B表中的各厂家产品的新包装依据A表自动填充新的包装编号呢?
如,佳能本月有两个新包装,依据A表中佳能产品包装编号已编到05,本月应该给07,09。
注:A表是只读文件。
有位大侠给的程序如下:
USE a表 in 0
USE b表 in 0
SELECT a表
INDEX ON 产品包装编号 to a
n_1=""
n_2=""
n_3=""
FOR i = 1 to RECCOUNT("b表")
foundkg=.f.
GO i in b表
LOCATE for ALLTRIM(a表.产品名称)==ALLTRIM(b表.产品名称)
foundkg=FOUND()
DO while !EOF()
n_1=ALLTRIM(a表.产品名称)
n_2=ALLTRIM(a表.包装编号)
IF foundkg
CONTINUE
foundkg=FOUND()
ENDIF
IF !foundkg
IF n_3=n_1
REPLACE b表.包装编号 with PADL(ALLTRIM(STR(VAL(n_2)+n)),2,"0") in b表
n=n+2
ELSE
n=2
REPLACE b表.包装编号 with PADL(ALLTRIM(STR(VAL(CHRTRAN(n_2,CHRTRAN(n_2,"0123456789",""),""))+2)),2,"0") in b表
n_3=n_1
n=n+2
ENDIF
EXIT
ENDIF
ENDDO
NEXT
但是运行起来,有时候编号会填的准确无误,有的时候会出现错误编号的情况。不知道是怎么回事。
还请各位大侠帮忙啊,谢谢啦!呵呵