回 帖 发 新 帖 刷新版面

主题:提取字符串问题,,,严重!!!

图1的表单上面的零件清单号应该提取图2用红色填充的数据的最小至最大的数字

即:1~8(填充到图2第一行)9~14(填充到图2第二行)

如何实现这个功能??

回复列表 (共8个回复)

沙发

我理解老前辈了,毕竟人都想得到一个结果

板凳

标题和问题,我认为都有很多疑问。

估计搞得太晚头晕了吧?

3 楼

把图2视为B表,图1视为A表

SELECT B表
SET FILTER TO "/"$序号
GO TOP
xh0=LEFT(序号,AT("/",序号)-1)
bh0=编号
bh1=""
DO WHILE !EOF()
  IF LEFT(序号,AT("/",序号)-1)=xh0
    bh1=编号
  ELSE
    SELECT A表
    APPEND BLANK
    REPLACE 编号 WITH xh0,零件清单号 WITH bh0+"~"+bh1
    SELECT B表
    xh0=LEFT(序号,AT("/",序号)-1)
    bh0=编号
    bh1=""
  ENDIF
  SKIP
  IF EOF()
    SELECT A表
    APPEND BLANK
    REPLACE 编号 WITH xh0,零件清单号 WITH bh0+"~"+bh1
    SELECT B表
  ENDIF 
ENDDO
SET FILTER TO 

4 楼

经过测试,能够提取需要的编号值,但是不能找到正确的填充位置。
另外我去掉了APPEND BLANK,因为我不需要增加一行,
我想在 REPLACE 编号 WITH xh0,零件清单号 WITH bh0+"~"+bh1 FOR 发货清单.图号==abcd.图号
但是好像不行哦,我觉得这个判断条件有问题,但是我又没有好的办法!?

5 楼

FOR 发货清单.图号==abcd.图号
是增加的条件语句,觉得有问题!~~

6 楼

顶起来~~!

7 楼

SELE 发货清单
LOCATE FOR 图号==abcd.图号
IF FOUND()
REPLACE 编号 WITH xh0,零件清单号 WITH bh0+"~"+bh1 
ENDIF

8 楼

不行啊 ~~
Select abcd
Set Filter To "/"$序号 &&指定可以访问表中的哪些字段,$ 如果一个字符表达式包含于另一个字符表达式中返回真(.T.); 否则, 返回假 (.F.)。
Go Top
xh0=Left(序号,At("/",序号)-1)
bh0=编号
bh1=""
Select abcd
Do While !Eof()
    If Left(序号,At("/",序号)-1)=xh0
        bh1=编号
    Else
        Sele 发货清单
        Locate For 图号==abcd.图号
        If Found()
            Replace 零件清单号 With Alltrim(bh0)+"~"+Alltrim(bh1)
        Endif
        Select abcd
        xh0=Left(序号,At("/",序号)-1)
        bh0=编号
        bh1=""
    Endif
    Skip
    If Eof()
        Sele 发货清单
        Locate For 图号==abcd.图号
        If Found()
            Replace 零件清单号 With Alltrim(bh0)+"~"+Alltrim(bh1)
        Endif
    Endif
Enddo

Set Filter To
 有问题吗??

我来回复

您尚未登录,请登录后再回复。点此登录或注册