回 帖 发 新 帖 刷新版面

主题:[请教] 测试字段宽度和小数位数的函数

打开一个表,已知某字段是“N”型,
想知道其宽度和小数位数用什么函数?
谢谢!

回复列表 (共30个回复)

沙发

各位兄弟好:
    我是北京种子乐,因原密码丢失不能使用,才又注册的“北京惬意”。
    因故有近半年没有编程了,所以也就很少来和各位交流,抱歉!
    现在又开始编程了,如不出其它原因,愿一直编到共产主义。
    现在又开始编程了,又会有许多问题要向兄弟们请教,望各位兄弟能不吝赐教,致以诚挚的谢意!
    现在又开始编程了,又能有机会与各位进行交流。因水平有限,说的对与不对,希望大家能包含。

板凳

字段宽度:Fsize(),小数位数....

3 楼

fyyylyl弟你好:
    我用你告诉的“Fsize()”测出字段全宽,还是没法测出其中的小数位数,请再指导。

4 楼

老种子,你好!

参考:

PROC flddec

PARAMETER m.q_fld,m.q_alias

* m.q_fld   =
* m.q_alias =

* 参数:字段、工作区
* 返回:字段小数位数

*PRIVATE ALL LIKE q_*
*PRIVATE m.q_fld
*PRIVATE m.q_alias

PRIVATE m.q_exact
PRIVATE m.q_flda
PRIVATE m.q_nn
PRIVATE m.q_sele

IF TYPE("m.q_fld")#"C"
   m.q_fld=""
ENDI

m.q_fld=UPPE(ALLTRIM(m.q_fld))

IF TYPE("m.q_alias")#"C"
   m.q_alias=""
ENDI

m.q_alias=UPPE(ALLTRIM(m.q_alias))

IF m.q_alias==""
   m.q_alias=ALIAS()
ENDI

IF !USED(m.q_alias).OR.FSIZE(m.q_fld,m.q_alias)=0
   RETU 0
ENDI

IF TYPE(m.q_alias+"->"+m.q_fld)#"N"
   RETU 0
ENDI

DIME q_flda(1)
m.q_flda=""

#IF !"WINDOWS"$UPPE(VERSION())
m.q_sele=SELE()
SELE (m.q_alias)
=AFIELD(m.q_flda)
SELE (m.q_sele)
#elif "WINDOWS"$UPPE(VERSION())
=AFIELD(m.q_flda,m.q_alias)
#ENDI

m.q_exact=SET("EXACT")
SET EXACT ON
m.q_nn=0
DO WHILE .T.
   m.q_nn=ASCAN(m.q_flda,m.q_fld,m.q_nn+1)
   IF m.q_nn=0
      SET EXACT &q_exact
      RETU 0
   ENDI
   IF MOD(m.q_nn-1,ALEN(m.q_flda,2))+1=1
      SET EXACT &q_exact
      RETU q_flda(INT((m.q_nn-1)/ALEN(m.q_flda,2))+1,4)
   ENDI
ENDDO

* END OF PROC FLDDEC.



5 楼


老种子,你好!
有一种方法:

copy stru to gg extend
use gg in 0
select field_len,field_dec from gg where field_name = upper('<你的字段名>')

得到的field_len是字段长度,field_dec是字段的小数位数

6 楼

用ADIR()函数将表结构复制到数组里,再从数组中找到某字段的宽度或和小数位数是可以的。但我觉得太复杂,想找到更简捷的方法。在没找到理想涵数和方法前,我还是准备用ADIR()函数来解决。

谢谢4楼的指导,广东管我叫老种子的应该只有MOZ,祝老朋友事业有成,心想事成。
谢谢5楼高老师的指导,祝你工作顺利,家庭幸福!


7 楼

想听听乌鸦老弟的声音,
还想听听CBL518老弟的声音。

8 楼

那不是我,我没有那么高的水平。我现在是越活越倒退了,谢谢老种子居然还记得我的存在,让我很感欣慰。

9 楼

拷贝你的表的数据结构到临时表,里边就有你要的东东在 field_dec  字段中。下面的例子只拷贝一个字段。

use 我的表
copy stru exte to 临时表 field 要检查的字段
use 临时表
? field_name
? field_len  && 字段宽度
? field_dec  && 小数位长
? field_type && 字段类型
brow

10 楼

[quote]那不是我,我没有那么高的水平。我现在是越活越倒退了,谢谢老种子居然还记得我的存在,让我很感欣慰。[/quote]
在广西时MOZ兄弟帮助解决了那么多问题,特别是帮助解决了DBF转电子表格的问题,怎么会不记得呢?如果不记得了那就是忘本。


我来回复

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