“程序设计”目录存档
2012年04月20日,星期五
今天朋友让我帮忙提取身份证号中的出生日期
发现需要区分15位身份证号和18为身份证号
做了如下的代码以供大家参考:
在单元格内输入如下代码=IF(LEN(E2)=18,MID(E2,7,4)&”年”&MID(E2,11,2)&”月”&MID(E2,13,2)&”日”,”19″&MID(E2,7,2)&”年”&MID(E2,9,2)&”月”&MID(E2,11,2)&”日”)
身份证号提取出生日期
2012年03月20日,星期二
今天用vf做了个成绩录入的小系统,编译后,
可执行文件exe运行出现错误“不能更新临时表”
查看源代码发现用的两个工作区
没有问题,代码分析发现没有什么问题,表也打开了,直接在vf中运行表单发现可以更新表,不提示“不能更新临时表”
只要已编译运行exe文件就提示“不能更新临时表”
看了问题出现在编译过程,最后在项目管理器中找到下图所示的地方选中排查,重新编译就不出现提示“不能更新临时表”
了,
vf连编以后表不能修改,表示表被包含在exe文件中了,只读。
在项目管理器中把用户表“排除”即可。
试试吧。
每次打开表的时候选择工作区一个工作区 select 1在打开表
就能避免好多的问题
2012年03月18日,星期日
visual foxpro常用命令4–赋值语句(store…to)
赋值语句(store…to)
将一个数据赋给一个变量。
语法:
STORE 表达式 TO 变量名表
参数:
表达式的值即为要赋给变量的数据。
变量名表即为要被赋值的各变量。在这里可以是一个变量,也可以是多个变量,如果有多个变量,其间用“,”(逗号)隔开。
备注:
如果是给一个变量赋值,该语句可写成如下形式:
变量名=表达式
表达式可以是一个数值,也可以是一个算术式。
举例:
例1:将3赋给ab、xyz、jfz三个变量,程序如下:
store 3 to ab,xyz,jfz
例2:将变量gz的值加100赋给yfgz。程序如下:
yfgz=gz+100
2012年03月18日,星期日
数值转换字符函数(str()
返回与指定数值表达式对应的字符。
语法:
str(数值表达式[,长度[,小数位数]])
返回值的类型
字符型
参数:
数值表达式:要被转换为字符的数值表达式。
长度:转换后字符的长度。该长度等于小数点和小数点右边第个数字所占字符的数目总和。
如果指定长度大于所需长度,自动在前面加空格补齐。
如果指定长度小于所需长度,返回一串星(*)号,表示数值溢出。
如省略长度,则默认长度为10。
小数位数:指定返回字符串中的小数位数。
如指定位数小于实际位数,则返回值四舍五入。
如指定位数大于实际位数,则加0补齐。
如省略小数位数,默认为0。
在指定了小数位数的情况下,如指定长度(第二个参数)小于总长度,但大于整数长度,则返回对小数部分做了四舍五入的字符。
备注:
返回后的值看起来还是数···
2012年03月17日,星期六
分支 语句(do case…endcase)
根据不同的条件执行不同的程序组。
语法 :
DO CASE
CASE 逻辑表达式1
程序组1
[CASE 逻辑表达式2
程序组2
...
CASE 逻辑表达式n
程序组n ]
[OTHERWISE
程序组0 ]
ENDCASE
参数 :
CASE 逻辑表达式 程序组 … 当程序执行到 do case 时,便检验第一个 case 的逻辑表达式( 逻辑表达式1 )是否为真,如不为真,接着检验第二个 case的逻辑表达式,以此类推直到 逻辑表达式n 。当检测到第一个为真的逻辑表达式时,便执行跟随在其后面的程序组,执行完后跳过后面所有的 case ,接着执行 endcase 后面的语句,也就是说即使后面还有为真的逻辑表达式也不执行了。
如果所有 case 后面的逻辑表达式都为假,则执行 otherwise 后面的程序组(如果有的话, otherwise 及其程序组是可以没有的,如果没有则什么都不做,直接执行 endcase 以后的程序)
备注 :
在do case 和 endcase 之间可以有任意多个 case 。
下面看个例子
set t···
2012年03月16日,星期五
状态检验函数
⒈ 数据库参数测试函数
⑴返回数据库的别名──ALIAS()
【格式】ALIAS([<别名>])
其中,<别名>可以为工作区编号(1 ̄255),也可以为工作区代码(A ̄J)或工作区别
名。
【功能】返回指定工作区中已打开数据库文件的别名。
【说明】该函数可以使用0(或1)个参数,函数值类型为字符型。省略<别名>时则返回
当前工作区中数据库文件的别名。如果指定的工作区内并未打开数据库文件,则返回一空串。
例如:
SELECT 1
USE MYDBF &&在工作区1打开数据库文件MYDBF.DBF
? ALIAS(1), ALIAS(“A”), ALIAS()
MYDBF MYDBF MYDBF
⑵返回数据库文件名──DBF()
【格式】DBF([<别名>])
【功能】返回指定工作区中已打开数据库文件名称。
【说明】该函数可以使用0(或1)个参数,函数值类型为字符型。省略<别名>时则返回
当前工作区数据库文件的名称。如果指定的工作区中并未打开数据库文件,则返回一空串。
例如:···
2012年03月14日,星期三
第一步也是最重要的一步就是把你的表单设置为主文件
在你的工程管理器中选中你的表单 右键设 置为主文件
1。 新建一个表单 并要注明windowstype=1 而且 showwindow是作为顶层表单使用
2。新建一个PRG 作为主文件或启动文件使用。而且 在PRG中写下类似这样的语句
_screen.Visible =.f.
DO FORM form1
READ events
3。新建一个文本文件 命名为CONFIG.FPW 并写下 类似 SCREEN=OFF
4。退出程序时 在FORM1(主表单) 的DESTORY事件中 写下类似 CLEAR EVENTS 这样的语句
经过以上的几个步骤应在编译你的程序就可以显示表单了!
2012年03月13日,星期二
由于工作需要
要在两个foxpro的表中根据某一字段查找
含有或者含有的数据
1、下边的是pbmk表中有的数据而11hcfs没有的数据,根据sfzh进行查询(pbmk表中数据包含11hcfs表中数据)
SELECT SFZH,XM FROM pbmk WHERE SFZH not in (SELECT SFZH FROM 11hcfs)
2、下边的是pbmk表中与11hcfs表中都有的数据,根据sfzh进行查询(pbmk表中数据包含11hcfs表中数据)
SELECT SFZH,XM FROM pbmk WHERE SFZH in (SELECT SFZH FROM 11hcfs)
2012年03月13日,星期二
索引是一个文件,你如果不想打开索引,直接关闭该索引文件就行,用命令:
set index to
或直接关闭表后再重新打开表就行了。
如果想删除索引文件,那就用dele file <文件名>去删除。
如果要删除某项索引,dele tag <索引名>
2012年03月13日,星期二
Do While 循环、for 循环、Scan循环
1、DO WHILE <条件>
<命令序列>
[LOOP]
[EXIT]
<命令序列>
ENDDO
2 、FOR 变量=初值TO终值 [STEP 步长]
<命令序列>
[LOOP]
[EXIT]
<命令序列>
ENDFOR(或NEXT)
3、SCAN [范围] [FOR条件]
<命令序列>
[LOOP]
[EXIT]
<命令序列>
ENDSCAN
第1种根据条件执行循环,条件不满足则退出循环
第2种根据变量初值、终值、增量值决定循环次数
第3种根据指定范围在满足条件时执行循环