回 帖 发 新 帖 刷新版面

主题:请教:如何找出重复的字段名?

各位老师好,我做程序,输入数据时有重复的数据想给出提示。字段名有姓名、年龄、性别、地址。如何做呢?谢谢

回复列表 (共5个回复)

沙发

总觉得你这个问题怪怪的。是只想有重复值的提示,还是不允许重复值存入?看来不像是,不然建立候选索引就解决了。这几个字段如果没有索引,就只能locate了。如果表的记录很多肯定会效率不高。是否可以
SELECT 姓名 DISTINCT from yourtable into cursor locatename
SELECT 年龄 DISTINCT from yourtable into cursor locateage
SELECT 性别 DISTINCT from yourtable into cursor locatesex
SELECT 地址 DISTINCT from yourtable into cursor locateaddress 
去除了重复值的临时表来查找是否要快些?
不知是否如你意,仅供参考。也许有更好的办法,算是抛一瓦片吧,砖头也算不上的!!。

板凳

wzxc老师好,谢谢你的多年帮助。这个问题是想如果:数据表里有张三、男、26等,再输入表单输入张三、男、26等时,点保存(repl)后,系统就能发现数据表里已有这个人,提示重复。这么能发现呢?候选索引能发现重复么?这么做?

3 楼

主索引
主索引包含表中每条记录的索引关键字并且当未指定任何其他索引作为表主索引时的默认索引。主索引禁止为产生索引关键字所指定字段或索引表达式中的重复值;因此,主索引中每个索引关键字是唯一的。每个表只能创建一个主索引。

候选索引
类似于主索引,候选索引包含表中每条记录的索引关键字并且禁止为产生索引关键字所指定字段或索引表达式中的重复值。然而,每个表可以创建多个候选索引。名称“候选”实际上是涉及该索引的状态;那就是,可以创建候选索引作为挑选主索引的选择。

我做过的都是单个字段的索引。你的需要这几个字段合起来做索引,不然无法解决同名同性同龄的记录。
试着创建索引 姓名+str(年龄)+性别+地址 

4 楼

wzxc老师,我只想输入时,遇到重复数据时,系统给出提示。再根据情况安排。
目前有一段代码。
sele 表
 locate for 姓名=thisform.text1.Value  
   IF   found()=.T.
      IF bc=MESSAGEBOX("重复",32+4,"友好提示")
          replace   thisform.text1.Value  with 姓名                                                         
       ELSE 
           bc=messagebox("退出输入!",32+0,"友好提示")   
       ENDIF    
    ENDIF
但,这个代码在:如果用表单向导做的表单就有提示,运行正常。用repl的保存就没有提示。为什么?

5 楼

我从不用向导。
测试检查一下SET EXACT 的状态。off 或 on 会有不同的查找结果。

locate for alltrim(姓名)==alltrim(thisform.text1.Value)
试试看

我来回复

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