⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 only_chk.prg

📁 vfp 源码,比较全面
💻 PRG
字号:
* 程序:Only_chk.prg
* 功能:字段值唯一性检查通用程序
* 说明:将一些数据库的某些字段需要保持其唯一性的进行检查,看是否保持唯一性,如不唯一,则可能引起程序的运行错误。
* 原理:将表按这一字段从小到大排序,根据唯一性和排序特征,当前数据值必须大于前一数据值,由此来检查是否美一个记录都满足这样的要求。
* 调用方法:

*  do Only_chk with 表,表的字段,字段的最小值
* 如:do only_chk with "sample","field",0 (or " ")

para chk_dbf,chk_field  && 变量分别:被检查的数据名,被检查的字段名
if !used('&chk_dbf')
    use &chk_dbf in 0 share
endif
sele &chk_dbf
Value_type=type('&chk_field')
do case
   case Value_type="N" or Value_type="Y"
       chk_min=0
   case Value_type="C"
       chk_min=" "
   case Value_type="D"
       chk_min={}
   case Value_type="T"
       chk_min={}
   other
       messagebox("数据库“&chk_dbf.”中的字段“&chk_field.”的数据类型是“&Value_type.”,不能进行唯一性检查!",48,"错误") 
       retu
endcase

sele &chk_field from &chk_dbf where .T. into cursor Temp_Only_chk_dbf order by &chk_field
sele Temp_Only_chk_dbf

nError=0
go top
Field_Value_Old=chk_min
do while .not.eof()
    Field_Value_New=&chk_field
*!*	    wait window "检查“&chk_dbf.”中“&chk_field.”的进度: "+allt(str(recn()*100/recc()))+"% 完成!" nowait
    if Field_Value_New>Field_Value_Old
       * 数据正确
    else
       * 数据不正确
       nError=nError+1
        do case
		   case Value_type="N" or Value_type="Y"
		       Found_vaLue=allt(str(Field_Value_New))
		   case Value_type="C"
		       Found_value=allt(Field_Value_New)
		   case Value_type="D"
		       Found_value=dtoc(Field_Value_New)
		   case Value_type="T"
		       Found_value=ttoc(Field_Value_New)
		endcase
       if messagebox("在检查数据库“&chk_dbf.”的字段“&chk_field.”的唯一性时,发现值为“"+Found_value+"”的记录不唯一,请检查!" ,1+48,"发现 "+allt(str(nError))+" 处不唯一性")=2
          exit
       endif   
    endif      
       Field_Value_Old=&chk_field
       skip
enddo
sele &chk_dbf
use
sele Temp_Only_chk_dbf
use
set message to "数据库“&chk_dbf.”中字段“&chk_field.”的唯一性检查完毕!"
*!*	wait window "检查完成,"+iif(nError=0,"“&chk_dbf.”中“&chk_field.”的唯一性正确!","发现 "+allt(str(nError))+" 处不唯一!") nowait
if nError>0
   messagebox("因为这是唯一性检查,在正确运行程序前,需确保唯一性的正确性!",48,"警告:数据库“&CHK_DBF.”中字段“&CHK_FIELD.”有 "+allt(str(nError))+" 处不唯一")
endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -