Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于填充小写的问题

明月  发表于:2014-02-08 11:33:13  
复制

我有一个ACCESS表,数据是从电子表格导入的,也就是说,数据会时常发生变化,同时,根据表设计了一个窗体用以打印,现在的问题是:

1、要将如¥123.4拆分开,分别写入各自对应的文本框内,有10个文本框,同时“¥”前的文本框应为空白,每个文本框用什么函数编写。

2、制单日期控件源设置为表,显示为20140112,需有变为2014年01月12日,文本框用什么函数编写。

3、收款单位名称有的可能比较长,如何自动缩小字体填充。

 

Top
zhaoyoulong 发表于:2014-02-08 12:06:06
没说明白

chinasa 发表于:2014-02-08 16:06:05

1.用LEN判断下长度,然后使用RIGHT从右取数据,每次取一位,指到LEN判断出的长度为止。

2.使用MID截取对应的位数,然后加上“年”“月”“日”

3.直接用小点的字体。



明月 发表于:2014-02-08 16:45:41

chinasa老师好!

第2个问题解决了,我在文本框属性设置中“格式”设置为9999年99月99日就OK了。

第3个问题不是太大,因为超出文本框的单位名称不是太多,只是不完美罢了。

只是第1个问题你的解决方法,有点文题,RIGHT从右取数据取得不是一个而是一串,我需有一个一个的取,我是这样写的:

小数点后第二位:RIGHT([text54]*100,1)
小数点后第一位:(RIGHT([text54]*100,2)-RIGHT([text54]*100,1))/10

个位:IIF(LEN([text54]*100)-3<=0,"0",(RIGHT([text54]*100,3)-RIGHT([text54]*100,2))/100)

十位:IIF(LEN([text54]*100)-4<=-1,"¥",(RIGHT([text54]*100,4)-RIGHT([text54]*100,3))/1000)

百位:IIF(LEN([text54]*100)-5<=-1,"¥",(RIGHT([text54]*100,5)-RIGHT([text54]*100,4))/10000)

一直这样编写下去取数是没有问题,但是当出现0.23或123.7时,百位以上的文本框中都会出现“¥”符号,怎么解决,拜求老师解决



chinasa 发表于:2014-02-08 17:22:37

有一个问题需要先确定,那就是你按照小写金额把文本框写满就可以(左面为空),还是你需要先确定小数点的文本框,然后再从小数点文本框两边填写?

比如我用ABCDEFG代表文本框,你需要下面哪种形式:

A  B  C  D  E  F  G

        ¥ 1 .  2  空

            ¥ 1 .  2

如果你只要根据小写金额从右面顶格写,那么你使用MID函数写好了。

 

如果是先确定小数点,那么你需要下面函数确定小数点。然后再用MID

小数点位置= InStr(1, 小写金额, ".", 1)



chinasa 发表于:2014-02-08 17:25:59

右面第一个文本框:=mid(小写金额,len(小写金额),1)

右面第二个文本框:=mid(小写金额,len(小写金额)-1,1)

if len(小写金额)>2 then

右面第三个文本框:=mid(小写金额,len(小写金额)-2,1)

end if

......................



明月 发表于:2014-02-08 17:40:28

周老师好!

不管是什么。乘以100,从右第三位取数,就可以不用考虑小数点的问题,现在的问题是,“¥”只出现一次就好了,我的函数做不到,请老师修改完善一下



明月 发表于:2014-02-08 17:42:52
支票大写旁边的小写小方格知道吧,就是那种写法

chinasa 发表于:2014-02-08 19:37:22

给你参考下,具体你测试下,我没测试,有事情今天没空了。

a3 = IIf(Len([text54] * 100) = 3, "¥", IIf(Len([text54] * 100) > 3, Mid([text54] * 100, Len([text54] * 100) - 2, 1), ""))
a4 = IIf(Len([text54] * 100) = 4, "¥", IIf(Len([text54] * 100) > 4, Mid([text54] * 100, Len([text54] * 100) - 3, 1), ""))
a5 = IIf(Len([text54] * 100) = 5, "¥", IIf(Len([text54] * 100) > 5, Mid([text54] * 100, Len([text54] * 100) - 4, 1), ""))
a6 = IIf(Len([text54] * 100) = 6, "¥", IIf(Len([text54] * 100) > 6, Mid([text54] * 100, Len([text54] * 100) - 5, 1), ""))



zhaoyoulong 发表于:2014-02-09 13:55:44

一、将十个文本框有规律地命名:假设为 Text1....Text10

二、假设另一存放完整文本框的控件名为:MyText 注:格式设为货币

三、确定数字的对齐方式:左对齐;右对齐;按小数点的固定位置对齐

左对齐:

Dim i As Integer

 For i = 1 To Len(Me.MyText) + 1
    Me("Text" & i) = Mid("¥" & Me.MyText, i, 1)
 Next
OK!!

右对齐:

For i = 1 To Len(Me.MyText) + 1
    Me("Text" & (10 - Len(Me.MyText) + i - 1)) = Mid("¥" & Me.MyText, i, 1)
 Next
OK!!

按小数点的固定位置对齐:

Dim LNum As String   '整数部分
Dim XX As String    '小数部分
Dim N    '小数定位的位置

N = 7 '假设为第7位为小数点的位置
    If InStr(Me.MyText, ".") = 0 Then
        XX = ".00" '如果是一整数,则后面加两位小数
        LNum = Me.MyText '取整数部分
    Else
        XX = Mid(Me.MyText, InStr(Me.MyText, "."))    '小数部分
        LNum = Left(Me.MyText, InStr(Me.MyText, ".") - 1)    '整数部分
    End If
    '填小数
    For i = N To 10 '这里的 10 代表10个文本框---填写从N个文本框到第10个文本框的小数部分
        Me("Text" & i) = Mid(XX, i - (N - 1), 1)
    Next
 '填整数
    LNum = "¥" & LNum
    For i = N - Len(LNum) To N - 1
        Me("Text" & i) = Mid(LNum, Len(LNum) - N + i + 1, 1)
    Next
剩下的就是要写一点超出范围的数据的处理过程了!!

OK!!



zhaoyoulong 发表于:2014-02-09 14:03:39


明月 发表于:2014-02-09 17:18:00

谢谢周老师!

你的函数位数虽然写错了如在写第5位函数式Len([text54] * 100) = 5, "¥",应该显示的是第五位数字而不是"¥",但是从你的公式中我忽然明白,IIF函数也可以相IF函数那样

写,最大的区别是IF函数规则是“如果。。。。。则。。。。如果。。。。。则。。。。如果。。。。。则。。。。”,而IIFIF函数规则是“如果。。。。。则。。。。如果。。。。。则。。。。如果。。。。。是或否”,向周老师致敬!

我的公式是:

A5=IIf(Len([text54]*100)-5<-1," ",IIf(Len([text54]*100)-5=-1,"¥",IIf(Len([text54]*100)-5>-1,Mid([text54]*100,Len([text54]*100)-4,1),"出错")))

A6=IIf(Len([text54]*100)-6<-1," ",IIf(Len([text54]*100)-6=-1,"¥",IIf(Len([text54]*100)-6>-1,Mid([text54]*100,Len([text54]*100)-5,1),"出错")))

A7=IIf(Len([text54]*100)-7<-1," ",IIf(Len([text54]*100)-7=-1,"¥",IIf(Len([text54]*100)-7>-1,Mid([text54]*100,Len([text54]*100)-6,1),"出错")))

A8=IIf(Len([text54]*100)-8<-1," ",IIf(Len([text54]*100)-8=-1,"¥",IIf(Len([text54]*100)-8>-1,Mid([text54]*100,Len([text54]*100)-7,1),"出错")))

以此类推,谢谢大家的帮助!



总记录:11篇  页次:1/1 9 1 :