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

📄 procs.prg

📁 刚才那个的补充
💻 PRG
字号:
** 返回中文形式的日期时间字符串
FUNC cdatetime
PARA pdt
DIME dt(6)
cdt=''
IF PARAMETERS( )=0
	pdt=DATETIME()
ENDIF
dt(1)=STR(YEAR(pdt),4)
dt(2)=STR(MONTH(pdt),2)
dt(3)=STR(DAY(pdt),2)
dt(4)=STR(HOUR(pdt),2)
dt(5)=STR(MINUTE(pdt),2)
dt(6)=STR(SEC(pdt),2)
IF TYPE('pdt')='D'
	cdt=dt(1)+'年'+dt(2)+'月'+dt(3)+'日'
ELSE
	IF YEAR(pdt)>1900
		cdt=dt(1)+'年'+dt(2)+'月'+dt(3)+'日'
	ENDIF
	cdt=cdt+dt(4)+'时'+dt(5)+'分'+dt(6)+'秒'
ENDIF
RETURN cdt

**新增表记录时,编号字段自动生成(+1)
FUNC newId
PARA tcAlias,tcField
IF EMPTY(tcAlias)
	tcAlias=ALIAS()
ENDIF
IF EMPTY(tcField)
	tcField=FIELD(1)
ENDIF
cDelSet=set("DELETED")
SET DELETED OFF
DIME maxValue[1]
SELE MAX(&tcField) FROM (tcAlias) INTO ARRAY maxValue
nSize=FSIZE(tcField,tcAlias)
nNewValue=VAL(maxValue[1])+1
cNewValue=PADL(ALLT(STR(nNewValue)),nSize,'0')
SET DELETED &cDelSet
RETURN cNewValue


** 取中文字符串的子串
func csubstr
	para pch,pstart,plen
	local nChinese,curch
	store 0 to nChinese
	for i=pstart to pstart+plen-1
		curch=subs(pch,i,1)
		nChinese=nChinese+iif(asc(curch)>127,1,0)
	endfor
	if mod(nChinese,2)=1
		csub=subs(pch,pstart,plen-1)
		pstart=pstart+plen-1
	else
		csub=subs(pch,pstart,plen)
		pstart=pstart+plen
	endif
	plen=plen
	return csub


**取得查询结果中各字段内容的最大长度
proc getFieldMaxLen
para cAlias
N=FCOUNT(cAlias)
public maxlen[N]
dime lentmp[1]
for i=1 to N
	fieldname=field(i)
	sele max(len(allt(&fieldname))) from &cAlias into array lentmp
	maxlen[i]=lentmp[1]
endfor


**构成查询结果中的一行
FUNC getfield
PARA cAlias
N=FCOUNT(cAlias)
ch=''
FOR i=1 TO N
	fieldname=FIELD(i)
	DO CASE
		CASE TYPE(fieldname)$"YNFBI"
			cFieldValue=STR(&fieldname)
		CASE TYPE(fieldname)$"DT"
			cFieldValue=DTOC(&fieldname)
		CASE TYPE(fieldname)$"L"
			cFieldValue=IIF(&fieldname,"是","否")
		CASE TYPE(fieldname)$"CM"
			cFieldValue=&fieldname
	ENDCASE
	cFieldValue=left(cFieldValue,maxlen[i])
	ch=ch+cFieldValue+'  '
ENDFOR
RETURN allt(ch)


**构成查询结果的标题行
FUNC gettitle
PARA cAlias
N=FCOUNT(cAlias)
ctitle=''
FOR i=1 TO N
	F=FIELD(i)
	ctitle=ctitle+PADR(F,maxlen[i]+2,' ')
ENDFOR
RETURN ctitle


*** 获得Windows系统信息
function GetSysInfo
para ctype
LOCAL lcSysDir, lcWinDir, lnStringLen ,lcReturn
do case
	case lower(ctype)="windir"
		DECLARE LONG GetWindowsDirectory IN WIN32API ; 
			STRING @ lcWinDir, LONG
		lcWinDir = SPACE(200) + CHR(0) 
		lnStringLen = GetWindowsDirectory(@lcWinDir, 200) 
		lcReturn = LEFT(lcWinDir,lnStringLen) 
	case lower(ctype)="sysdir"
		DECLARE LONG GetSystemDirectory IN WIN32API ; 
			STRING @ lcSysDir, LONG 
		lcSysDir = SPACE(200) + CHR(0) 
		lnStringLen = GetSystemDirectory(@lcSysDir, 200) 
		lcReturn = LEFT(lcSysDir,lnStringLen) 
endcase
return lcReturn

**取得查询结果中各字段内容的最大长度
proc getFieldMaxLen
para cAlias
N=FCOUNT(cAlias)
public maxlen[N]
dime lentmp[1]
for i=1 to N
	fieldname=field(i)
	sele max(len(allt(&fieldname))) from &cAlias into array lentmp
	maxlen[i]=lentmp[1]
endfor


**构成查询结果中的一行
FUNC getfield
PARA cAlias
N=FCOUNT(cAlias)
ch=''
FOR i=1 TO N
	fieldname=FIELD(i)
	DO CASE
		CASE TYPE(fieldname)$"YNFBI"
			cFieldValue=STR(&fieldname)
		CASE TYPE(fieldname)$"DT"
			cFieldValue=DTOC(&fieldname)
		CASE TYPE(fieldname)$"L"
			cFieldValue=IIF(&fieldname,"是","否")
		CASE TYPE(fieldname)$"CM"
			cFieldValue=&fieldname
	ENDCASE
	cFieldValue=left(cFieldValue,maxlen[i])
	ch=ch+cFieldValue+'  '
ENDFOR
RETURN allt(ch)


**构成查询结果的标题行
FUNC gettitle
PARA cAlias
N=FCOUNT(cAlias)
ctitle=''
FOR i=1 TO N
	F=FIELD(i)
	ctitle=ctitle+PADR(F,maxlen[i]+2,' ')
ENDFOR
RETURN ctitle

⌨️ 快捷键说明

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