注册 登录
编程论坛 VFP论坛

有好检测重复字段名的方法否?

fdqzy 发布于 2020-11-15 05:26, 2194 次点击
新建一个表时,有时为了方便,将已建的一个表代码修改成所需新表,由于字段较多,字段名相接近,常常出现字段名主复,有时查起还有点费劲,有什么好又快的方法吗?
11 回复
#2
sdta2020-11-15 09:05
举例说明
#3
吹水佬2020-11-15 10:00
动态变动字段时可用FIELD()检测
#4
fdqzy2020-11-15 15:55
如这里面就有重名字段,如何快速找出?
程序代码:
Create Table fc\szpt (qsz c(10),jnh N(6),a1 N(3),a2 N(3),a3 N(3),a4 N(4),a5 N(4),a6 N(4),a7 N(4),;
    m2y c(5),mw c(5),;
    _2dxxf c(7),_2dxx c(6),_2d c(5),_2x c(5),_2t c(5),;
    _2xtxf c(5),_2xtx c(5),_2xtf c(5),_2xt c(5),;
    _2dx5xf c(8),_2dx5x c(7),_2d5 c(5),_2x5 c(5),;        
    _2s012xf c(8),_2s012x c(7),_2s0 c(5),_2s1 c(5),_2s2 c(5),;
    _2s01xf c(7),_2s01x c(6),_2s01f c(6),_2s01 c(5),;   
    _2sxqxf c(7),_2sxqx c(6),_2sq c(4),_2xq c(4),;
    _2sdxxf c(7),_2sdxx c(6),_2sd c(4),_2sx c(4),;
    _2sftwxf c(8),_2sftwx c(7),_2stw c(5),_2fstw c(6),;
    _2sjotf c(7),_2sjot c(6),_2sj c(5),_2so c(5),;
    _2szhtf c(7),_2szht c(6),_2sz c(5),_2sh c(5),;
    _2l c(5),_2w c(5),_2r c(5),;
    _2lwrxf c(8),_2lwrx c(7),_2lwxf c(7),_2lwx c(6),_2lwf c(5),_2lw c(5),;
    _2sl c(5),_2sw c(5),_2sr c(5),;
    _2slwrxf c(7),_2slwrx c(6),_2slwxf c(7),_2slwx c(6),_2slwf c(6),_2slw c(5),;
    _2_5xf c(6),_2_5x c(5),_25_2 c(5),_25_2 c(5),_25_3 c(5),_25_4 c(5),;
    _2512xf c(5),_2512x c(5),_2512f c(5),_2512 c(5),;
    _2534xf c(5),_2534x c(5),_2534f c(5),_2534 c(5),;
    _25sl c(5),_25sw c(5),_25sr c(5),;
    _25slwrxf c(9),_25slwrx c(8),_25slwxf c(8),_25slwx c(6),_25slwf c(7),_25slw c(6),;
    _2pxf c(5),_2px c(5),_2p0 c(5),_2p1_5 c(6),_2p6 c(5),_2p11 c(5),;
    _2p05xf c(7),_2p05x c(6),_2p05 c(6),;
    _2p611xf c(7),_2p611x c(6),_2p611 c(6))


[此贴子已经被作者于2020-11-15 15:56编辑过]

#5
sdta2020-11-15 16:18
CLEAR
TEXT TO lcStr NOSHOW TEXTMERGE
qsz c(10),jnh N(6),a1 N(3),a2 N(3),a3 N(3),a4 N(4),a5 N(4),a6 N(4),a7 N(4),m2y c(5),mw c(5),_2dxxf c(7),_2dxx c(6),_2d c(5),_2x c(5),_2t c(5),_2xtxf c(5),_2xtx c(5),_2xtf c(5),_2xt c(5),_2dx5xf c(8),_2dx5x c(7),_2d5 c(5),_2x5 c(5),_2s012xf c(8),_2s012x c(7),_2s0 c(5),_2s1 c(5),_2s2 c(5),_2s01xf c(7),_2s01x c(6),_2s01f c(6),_2s01 c(5),2sxqxf c(7),_2sxqx c(6),_2sq c(4),_2xq c(4),_2sdxxf c(7),_2sdxx c(6),_2sd c(4),_2sx c(4),_2sftwxf c(8),_2sftwx c(7),_2stw c(5),_2fstw c(6),_2sjotf c(7),_2sjot c(6),_2sj c(5),_2so c(5),_2szhtf c(7),_2szht c(6),_2sz c(5),_2sh c(5),_2l c(5),_2w c(5),_2r c(5),_2lwrxf c(8),_2lwrx c(7),_2lwxf c(7),_2lwx c(6),_2lwf c(5),_2lw c(5),_2sl c(5),_2sw c(5),_2sr c(5),_2slwrxf c(7),_2slwrx c(6),_2slwxf c(7),_2slwx c(6),_2slwf c(6),_2slw c(5),_2_5xf c(6),_2_5x c(5),_25_2 c(5),_25_2 c(5),_25_3 c(5),_25_4 c(5),_2512xf c(5),_2512x c(5),_2512f c(5),_2512 c(5),_2534xf c(5),_2534x c(5),_2534f c(5),_2534 c(5),_25sl c(5),_25sw c(5),_25sr c(5),_25slwrxf c(9),_25slwrx c(8),_25slwxf c(8),_25slwx c(6),_25slwf c(7),_25slw c(6),_2pxf c(5),_2px c(5),_2p0 c(5),_2p1_5 c(6),_2p6 c(5),_2p11 c(5),_2p05xf c(7),_2p05x c(6),_2p05 c(6),_2p611xf c(7),_2p611x c(6),_2p611 c(6),m0 C(4),m1 C(4),m2 C(4),m3 c(4),m4 c(4),m5 c(4),m6 c(4),m7 c(4),m8 c(4),m9 c(4),m10 c(4),m11 C(4),m12 C(4),m13 c(4),m14 c(4),m15 c(4),m16 c(4),m17 c(4),m18 c(4),m19 c(4),m20 c(4),m21 C(4),m22 C(4),m23 c(4),m24 c(4),m25 c(4),m26 c(4),m27 c(4),m28 c(4),m29 c(4),m30 c(4),m31 C(4),m32 C(4),m33 c(4)
ENDTEXT
* 方法一
cValue = ""
FOR lnj = 1 TO ALINES(laStr, lcStr, 4 + 1, ",")
    IF NOT laStr[lnj] $ cValue
        cValue = cValue + laStr[lnj] + ","
    ELSE
        ? "第 " + TRANSFORM(lnj) + " 字段重复:" + laStr[lnj]
    ENDIF
ENDFOR
? cValue
* 方法二
DIMENSION laStr[ALEN(laStr), 1]
CREATE CURSOR 检查结果 (内容 c(10))
INSERT INTO 检查结果 FROM ARRAY laStr
SELECT 内容, RECNO() bj FROM 检查结果 WHERE 内容 in (SELECT 内容 FROM 检查结果 GROUP BY 1 HAVING COUNT(*) > 1)
#6
fdqzy2020-11-15 19:54
谢谢!!
#7
fdqzy2020-11-15 19:57
以下是引用sdta在2020-11-15 16:18:34的发言:

* 方法二
DIMENSION laStr[ALEN(laStr), 1]
CREATE CURSOR 检查结果 (内容 c(10))
INSERT INTO 检查结果 FROM ARRAY laStr
SELECT 内容, RECNO() bj FROM 检查结果 WHERE 内容 in (SELECT 内容 FROM 检查结果 GROUP BY 1 HAVING COUNT(*) > 1)

方法二找不到变量"laStr"
方法一也够了,谢谢!
#8
sdta2020-11-15 20:26
以下是引用fdqzy在2020-11-15 19:57:21的发言:


方法二找不到变量"laStr"
方法一也够了,谢谢!

方法二中加下面一行代码
ALINES(laStr, lcStr, 4 + 1, ",")
#9
fdqzy2020-11-15 21:03
以下是引用sdta在2020-11-15 20:26:00的发言:


方法二中加下面一行代码
ALINES(laStr, lcStr, 4 + 1, ",")

謝谢!
#10
fdqzy2020-11-16 08:33
以下是引用sdta在2020-11-15 20:26:00的发言:


方法二中加下面一行代码
ALINES(laStr, lcStr, 4 + 1, ",")

不行。查询为第1个不重复的字段。

[此贴子已经被作者于2020-11-16 08:36编辑过]

#11
radiofan2020-11-16 09:36
以下是引用sdta在2020-11-15 16:18:34的发言:

CLEAR
TEXT TO lcStr NOSHOW TEXTMERGE
qsz c(10),jnh N(6),a1 N(3),a2 N(3),a3 N(3),a4 N(4),a5 N(4),a6 N(4),a7 N(4),m2y c(5),mw c(5),_2dxxf c(7),_2dxx c(6),_2d c(5),_2x c(5),_2t c(5),_2xtxf c(5),_2xtx c(5),_2xtf c(5),_2xt c(5),_2dx5xf c(8),_2dx5x c(7),_2d5 c(5),_2x5 c(5),_2s012xf c(8),_2s012x c(7),_2s0 c(5),_2s1 c(5),_2s2 c(5),_2s01xf c(7),_2s01x c(6),_2s01f c(6),_2s01 c(5),2sxqxf c(7),_2sxqx c(6),_2sq c(4),_2xq c(4),_2sdxxf c(7),_2sdxx c(6),_2sd c(4),_2sx c(4),_2sftwxf c(8),_2sftwx c(7),_2stw c(5),_2fstw c(6),_2sjotf c(7),_2sjot c(6),_2sj c(5),_2so c(5),_2szhtf c(7),_2szht c(6),_2sz c(5),_2sh c(5),_2l c(5),_2w c(5),_2r c(5),_2lwrxf c(8),_2lwrx c(7),_2lwxf c(7),_2lwx c(6),_2lwf c(5),_2lw c(5),_2sl c(5),_2sw c(5),_2sr c(5),_2slwrxf c(7),_2slwrx c(6),_2slwxf c(7),_2slwx c(6),_2slwf c(6),_2slw c(5),_2_5xf c(6),_2_5x c(5),_25_2 c(5),_25_2 c(5),_25_3 c(5),_25_4 c(5),_2512xf c(5),_2512x c(5),_2512f c(5),_2512 c(5),_2534xf c(5),_2534x c(5),_2534f c(5),_2534 c(5),_25sl c(5),_25sw c(5),_25sr c(5),_25slwrxf c(9),_25slwrx c(8),_25slwxf c(8),_25slwx c(6),_25slwf c(7),_25slw c(6),_2pxf c(5),_2px c(5),_2p0 c(5),_2p1_5 c(6),_2p6 c(5),_2p11 c(5),_2p05xf c(7),_2p05x c(6),_2p05 c(6),_2p611xf c(7),_2p611x c(6),_2p611 c(6),m0 C(4),m1 C(4),m2 C(4),m3 c(4),m4 c(4),m5 c(4),m6 c(4),m7 c(4),m8 c(4),m9 c(4),m10 c(4),m11 C(4),m12 C(4),m13 c(4),m14 c(4),m15 c(4),m16 c(4),m17 c(4),m18 c(4),m19 c(4),m20 c(4),m21 C(4),m22 C(4),m23 c(4),m24 c(4),m25 c(4),m26 c(4),m27 c(4),m28 c(4),m29 c(4),m30 c(4),m31 C(4),m32 C(4),m33 c(4)
ENDTEXT
* 方法一
cValue = ""
FOR lnj = 1 TO ALINES(laStr, lcStr, 4 + 1, ",")
    IF NOT laStr[lnj] $ cValue
        cValue = cValue + laStr[lnj] + ","
    ELSE
        ? "第 " + TRANSFORM(lnj) + " 字段重复:" + laStr[lnj]
    ENDIF
ENDFOR
? cValue
* 方法二
DIMENSION laStr[ALEN(laStr), 1]
CREATE CURSOR 检查结果 (内容 c(10))
INSERT INTO 检查结果 FROM ARRAY laStr
SELECT 内容, RECNO() bj FROM 检查结果 WHERE 内容 in (SELECT 内容 FROM 检查结果 GROUP BY 1 HAVING COUNT(*) > 1)


如何改善TEXT TO lcStr NOSHOW TEXTMERGE中的字符串可读性,有时字符串会很长,如何解决呢?
#12
吹水佬2020-11-16 10:16
以下是引用radiofan在2020-11-16 09:36:10的发言:



如何改善TEXT TO lcStr NOSHOW TEXTMERGE中的字符串可读性,有时字符串会很长,如何解决呢?

用参数:PRETEXT
程序代码:
TEXT TO cCode NOSHOW TEXTMERGE PRETEXT 15
    qsz c(10),jnh N(6),a1 N(3),a2 N(3),a3 N(3),a4 N(4),a5 N(4),a6 N(4),a7 N(4),
    m2y c(5),mw c(5),
    _2dxxf c(7),_2dxx c(6),_2d c(5),_2x c(5),_2t c(5),
    _2xtxf c(5),_2xtx c(5),_2xtf c(5),_2xt c(5),
    _2dx5xf c(8),_2dx5x c(7),_2d5 c(5),_2x5 c(5),      
    _2s012xf c(8),_2s012x c(7),_2s0 c(5),_2s1 c(5),_2s2 c(5),
    _2s01xf c(7),_2s01x c(6),_2s01f c(6),_2s01 c(5),   
    _2sxqxf c(7),_2sxqx c(6),_2sq c(4),_2xq c(4),
    _2sdxxf c(7),_2sdxx c(6),_2sd c(4),_2sx c(4),
    _2sftwxf c(8),_2sftwx c(7),_2stw c(5),_2fstw c(6),
    _2sjotf c(7),_2sjot c(6),_2sj c(5),_2so c(5),
    _2szhtf c(7),_2szht c(6),_2sz c(5),_2sh c(5),
    _2l c(5),_2w c(5),_2r c(5),
    _2lwrxf c(8),_2lwrx c(7),_2lwxf c(7),_2lwx c(6),_2lwf c(5),_2lw c(5),
    _2sl c(5),_2sw c(5),_2sr c(5),
    _2slwrxf c(7),_2slwrx c(6),_2slwxf c(7),_2slwx c(6),_2slwf c(6),_2slw c(5),
    _2_5xf c(6),_2_5x c(5),_25_2 c(5),_25_2 c(5),_25_3 c(5),_25_4 c(5),
    _2512xf c(5),_2512x c(5),_2512f c(5),_2512 c(5),
    _2534xf c(5),_2534x c(5),_2534f c(5),_2534 c(5),
    _25sl c(5),_25sw c(5),_25sr c(5),
    _25slwrxf c(9),_25slwrx c(8),_25slwxf c(8),_25slwx c(6),_25slwf c(7),_25slw c(6),
    _2pxf c(5),_2px c(5),_2p0 c(5),_2p1_5 c(6),_2p6 c(5),_2p11 c(5),
    _2p05xf c(7),_2p05x c(6),_2p05 c(6),
    _2p611xf c(7),_2p611x c(6),_2p611 c(6)
ENDTEXT
ALINES(aCode,cCode,5,",")
ASORT(aCode)
DISPLAY MEMORY LIKE aCode  &&看看重复的都排在一起

cCode = aCode[1]
FOR i=2 TO ALEN(aCode)
    IF aCode[i] = cCode
        ? "重复:",cCode
    ELSE
        cCode = aCode[i]
    ENDIF
ENDFOR
RETURN
1