精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖数据处理〗>>动态建立SQL查询——VFP5示例详解(三)

主题:动态建立SQL查询——VFP5示例详解(三)
发信人: fbilo()
整理人: hunter__fox(2002-03-16 22:15:50), 站内信件
vaildatetype方法:
用来确定包含在SQL语句的where从句中是否使用了正确的数据类型。
因为本示例是通过交互式建立一个SQL语句来建立查询的,因此必须正确的设置在

SQL语句的where从句中使用的值的数据格式。否则,可能因为要查询的字段和自

定义值的数据类型不匹配而出现错误。
在前述的settextboxformat方法中,我们只是设置了文本框的输入方式,从该文

本框返回的还是字符型值。(一般来说,系统默认文本框返回的值都是字符型)

因此,必须使用特定的方法把这些字符型值转换成相应的数据类型。
***********************************************************
LPARAMETERS  lField,  lcValue
LOCAL  lcType
lcType = TYPE(lField)
DO  CASE
CASE  lcType $ "CM"
lcValue = CHR(34) + lcValue + CHR(34)
CASE  lcType $ "DT"
lcValue = "{" + lcValue + "}"
CASE  lcType $ "NY"
IF  EMPTY(lcValue)
lcValue = "0"
ENDIF
CASE  lcType $ "L"
IF  !INLIST(UPPER(lcValue), ".T.", ".F.")
lcValue = ".T."
ENDIF
ENDCASE
RETURN  lcValue
***********************************************************

本方法接收两个参数lField字段, lcValue字段的值。通过判断字段iFiIeld的数

据类型,修改并返回lcValue字段的值。
--通过type()函数判断lField字段的数据类型,并赋值给变量lctype。
--如果lctype包含于"CM",也即是lField是字符型或备注型,则使用CHR(34)给l

cValue两端加上双引号。
--如果lctype包含于"DT", 也即是lField是日期型或日期时间型,则给lcValue

两端加上花括号。
--如果lctype包含于"NY", 也即是lField是数值型或货币型,则判断lcValue是

否为空,如是空值则给赋值为0。
--如果lctype包含于"L", 也即是lField是逻辑型,判断lcValue转换为大写后其

值是否不在".T.", ".F."列表中,如是,则给lcValue赋值为 ".T."。
--用RETURN  lcValue语句将经过转换的lcValue返回给调用本方法的过程。


--通过type()函数判断lField字段的数据类型,并赋值给变量lctype。
--如果lctype包含于"CM",也即是lField是字符型或备注型,则使用CHR(34)给l
cValue两端加上双引号。
--如果lctype包含于"DT", 也即是lField是日期型或日期时间型,则给lcValue
两端加上花括号。
--如果lctype包含于"NY", 也即是lField是数值型或货币型,则判断lcValue是
否为空,如是空值则给赋值为0。
--如果lctype包含于"L", 也即是lField是逻辑型,判断lcValue转换为大写后其
值是否不在".T.", ".F."列表中,如是,则给lcValue赋值为 ".T."。
--用RETURN  lcValue语句将经过转换的lcValue返回给调用本方法的过程。

--
※ 修改:.fbilo 于 Apr  7 18:26:24 修改本文.[FROM: 202.96.101.254]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.101.254]

[关闭][返回]