boolean类型的字段值在DataGrid里显示值为"-1"与"0",怎么样才能让他显示:Ture或false

微信软件工作室   (MicroInfo   Soft   Studio)    
  http://www.playyuer.com  
  于溪玥(PlayYuer)   2000/02/01   帖:  
  《VB6   之数据格式化对象使用技巧》(http://microinfo.top263.net/Txt/Format.txt  
  )  
  例程下载:(http://microinfo.top263.net/Zip/Format.exe)  
  Visual   Basic   提供了许多工具以满足数据访问编程的需要,其中引用微软数据格式化对象库  
  (Microsoft   Data   Formatting   Object   Library)   格式化对象技术是   VB6   的增强功能。其最大优  
  点是可以通过编程随心所欲地格式化数据(可参阅   MSDN   )。下面以格式化   DataGrid   各列数据为  
  例,演示数据格式化对象的使用方法。  
   
  首先,根据   DataGrid   各列的数据类型,确定格式化后的格式:  
                布尔(Boolean)型数据:True   =   是;False   =   否;  
                数字(Number)型数据:格式化为大写;  
  其次,确认工程已经引用(Reference)了Microsoft   Data   Formatting   Object   Library。  
  再次,在窗体上绘制一个DataGrid控件。  
  接下来,就可以编写代码了:  
   
  1.声明带   WithEvents   关键字的   StdDataFormat   对象类型的窗体模块级的私有变量,作为大写  
        格式的数据格式对象:  
   
        Option   Explicit  
        Private   WithEvents   FmtX   As   StdDataFormat  
   
   
  2.编写Private   Sub   Form_Load()事件过程:  
   
        Private   Sub   Form_Load()  
        '创建含有货币、布尔、数字型字段的记录集  
        Dim   adoRecordset   As   New   ADODB.Recordset  
        adoRecordset.Fields.Append   "Fld1",   adCurrency,   ,   adFldIsNullable   +   adFldMayBeNull  
        adoRecordset.Fields.Append   "Fld2",   adBoolean,   ,   adFldIsNullable   +   adFldMayBeNull  
        adoRecordset.Fields.Append   "Fld3",   adDouble,   ,   adFldIsNullable   +   adFldMayBeNull  
        adoRecordset.Open  
        adoRecordset.AddNew   Array("fld1",   "fld2",   "fld3"),   Array(1001231.01,   True,   634532.23)  
        adoRecordset.AddNew   Array("fld1",   "fld2",   "fld3"),   Array(1000.23,   False,   89758242)  
   
        Set   DataGrid1.DataSource   =   adoRecordset  
   
        FormatDataGrid   DataGrid1  
        End   Sub  
   
   
  3.编写一个过程,格式化   DataGrid,可在需要的时机调用:  
   
        Sub   FormatDataGrid(DataGridX   As   DataGrid)  
                Dim   FmtY   As   New   StdDataFormat   '用于布尔型字段格式  
                FmtY.Type   =   fmtBoolean  
                FmtY.TrueValue   =   "是"   '"真"   "对"  
                FmtY.FalseValue   =   "否"   '"假"   "错"  
   
                Set   FmtX   =   New   StdDataFormat   '实例化用于格式化货币型字段的对象  
                FmtX.Type   =   fmtCustom   '用于货币型字段格式  
   
                Dim   adoRecordsetX   As   ADODB.Recordset  
                Set   adoRecordsetX   =   DataGridX.DataSource  
   
                Dim   i   As   Integer  
                For   i   =   0   To   adoRecordsetX.Fields.Count   -   1  
                        With   DataGridX.Columns.Item(i)  
                                  Select   Case   adoRecordsetX.Fields.Item(i).Type     '可根据字段数据类型设置数据格式  
                                                Case   adNumeric,   adVarNumeric,   _  
                                                          adBigInt,   adUnsignedInt,   adUnsignedTinyInt,   _  
                                                          adUnsignedSmallInt,   adUnsignedBigInt,   _  
                                                          adInteger,   adSmallInt,   adBigInt,   adTinyInt,   _  
                                                          adDecimal,   adDouble,   adSingle   '与数字有关的数据类型  
                                                          .DataFormat.Format   =   "Standard"  
                                                          .Alignment   =   dbgRight  
                                                Case   adCurrency   '货币型  
                                                          Set   .DataFormat   =   FmtX  
                                                          .Alignment   =   dbgRight  
                                                Case   adBoolean  
                                                          Set   .DataFormat   =   FmtY   '布尔型字段设为自定义格式  
                                                          .Alignment   =   dbgCenter  
                                                Case   adDate,   adDBDate,   adDBTimeStamp  
                                                          .DataFormat.Format   =   "Long   Date"   '日期、时间  
                                                          .Alignment   =   dbgRight  
                                                Case   Else   '其它,如:文本等  
                                                          .Alignment   =   dbgLeft  
                                            End   Select  
                        End   With  
                Next   i  
        End   Sub  
   
   
  4.编写数据格式化对象的格式化   (Format)   事件过程:  
   
        Private   Sub   FmtX_Format(ByVal   DataValue   As   StdFormat.StdDataValue)  
        '读者可自行编写将数字转化为大写的函数!例如(附录:   NtoC   函数):  
        DataValue   =   NtoC(Trim(Str(DataValue)),   "圆",   "角",   "分")  
        End   Sub  
   
        (该方案在   PWin   9.X   和   VB   6.0   下通过。)  
          数据格式化对象,可以用于格式化各种具有   DataFormat   属性的控件,程序员可以将数据显示  
  为各种格式。如果格式非常简单,可以使用传统的   Format   函数。如果格式布尔型数据,可以使用  
  过程级的数据格式化对象。如果格式非常复杂,情况很多,则须使用窗体模块级的带事件数据格式  
  化对象,并编程该对象的   Format   等事件。  
   
  (欢迎去   Http://microinfo.top263.net   下载例程)  
   
  ================================================  
  《   附录:   NtoC   函数   》  
  Option   Explicit  
  Public   Function   NtoC(ByVal   sNum   As   String,   Optional   ByVal   Yuan   As   String   =   "美圆",   Optional   ByVal   Jiao   As   String   =   "美角",   Optional   ByVal   Fen   As   String   =   "美分")   As   String  
  If   Val(Trim(sNum))   >   0   Then  
        Dim   sIntD,   sDecD   As   String  
        Dim   i,   iCount,   j,   iLength   As   Integer  
        Dim   lStartPos   As   Long  
        Dim   sBIT(4),   sUNIT(3),   sCents(2)   As   String  
        sBIT(0)   =   ""   '个  
        sBIT(1)   =   "拾"  
        sBIT(2)   =   "佰"  
        sBIT(3)   =   "仟"  
        sUNIT(0)   =   ""  
        sUNIT(1)   =   "万"  
        sUNIT(2)   =   "亿"  
        sUNIT(3)   =   "yu"  
        sCents(0)   =   Fen  
        sCents(1)   =   Jiao  
        Dim   temp   As   String  
        If   InStr(Trim(sNum),   ".")   >   0   Then  
              temp   =   Left(Trim(sNum),   InStr(Trim(sNum),   ".")   -   1)  
        Else  
              temp   =   Trim(sNum)  
        End   If  
        iCount   =   IIf(Len(temp)   Mod   4,   Len(Trim(temp))   /   4   +   1,   Len(Trim(temp))   /   4)  
        lStartPos   =   1  
        For   i   =   iCount   To   1   Step   -1  
                If   i   =   iCount   And   Len(Trim(temp))   Mod   4   <>   0   Then  
                      iLength   =   Len(Trim(temp))   Mod   4  
                Else  
                      iLength   =   4  
                End   If  
                sIntD   =   Mid(Trim(temp),   lStartPos,   iLength)  
                For   j   =   1   To   Len(Trim(sIntD))  
                        If   Val(Mid(sIntD,   j,   1))   <>   0   Then  
                              NtoC   =   NtoC   &   Choose(Val(Mid(sIntD,   j,   1)),   "壹",   "贰",   "叁",   "肆",   "伍",   "陆",   "柒",   "捌",   "玖")   &   sBIT(Len(Trim(sIntD))   -   j)  
                        Else  
                              If   Val(Mid(sIntD,   j   +   1,   1))   <>   0   Then  
                                    NtoC   =   NtoC   &   "零"  
                              End   If  
                        End   If  
                Next   j  
                lStartPos   =   lStartPos   +   iLength  
                If   i   <   iCount   Then  
                      If   (Val(Mid(sIntD,   Len(Trim(sIntD)),   1))   <>   0   Or   Val(Mid(sIntD,   Len(Trim(sIntD))   -   1,   1))   <>   0   Or   Val(Mid(sIntD,   Len(Trim(sIntD))   -   2,   1))   Or   Val(Mid(sIntD,   Len(Trim(sIntD))   -   3,   1))   <>   0)   Then  
                            NtoC   =   NtoC   &   sUNIT(i   -   1)  
                      End   If  
                Else  
                      NtoC   =   NtoC   &   sUNIT(i   -   1)  
                End   If  
        Next  
        If   Len(Trim(NtoC))   >   0   Then  
              NtoC   =   NtoC   &   Yuan  
        End   If  
        '小数  
        If   InStr(1,   Trim(sNum),   ".")   <>   0   Then  
              sDecD   =   Right(sNum,   Len(Trim(sNum))   -   InStr(1,   Trim(sNum),   "."))  
              For   i   =   1   To   Len(Trim(sDecD))  
                      If   Val(Mid(Trim(sDecD),   i,   1))   <>   0   Then  
                            NtoC   =   NtoC   &   Choose(Val(Mid(Trim(sDecD),   i,   1)),   "壹",   "贰",   "叁",   "肆",   "伍",   "陆",   "柒",   "捌",   "玖")  
                            NtoC   =   NtoC   &   sCents(2   -   i)  
                            If   i   >=   2   Then  
                                  Exit   For  
                            End   If  
                      Else  
                            If   Len(Trim(NtoC))   >   0   Then  
                                  NtoC   =   NtoC   &   "零"  
                            End   If  
                      End   If  
              Next   i  
        Else  
              NtoC   =   NtoC   &   "整"  
        End   If  
  Else  
        NtoC   =   "零"   &   Yuan  
  End   If  
  End   Function   
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值