在VBSCRIPT中将数据类型从char更改为int

在VBSCRIPT中将数据类型从char更改为int,vbscript,crystal-reports,Vbscript,Crystal Reports,嗨,我需要你们的帮助 我不熟悉我使用的系统,我正在定制使用crystal report的报告, 我需要得到最后一页的值,并将其与当前页进行比较 (CurrentPage LastPage),但最后一页的数据类型设置为string/char。。 我想这就是为什么我不能在上述条件下得到结果的原因。有什么办法可以改变吗 它的数据类型是整数吗?或者,是否有其他方法可以从crystal reports中获取LastPage整数值,而不使用最后一页的设置变量 谢谢。请记住,无论内容如何,所有文本框值始终是字

嗨,我需要你们的帮助

我不熟悉我使用的系统,我正在定制使用crystal report的报告, 我需要得到最后一页的值,并将其与当前页进行比较 (CurrentPage LastPage),但最后一页的数据类型设置为string/char。。 我想这就是为什么我不能在上述条件下得到结果的原因。有什么办法可以改变吗 它的数据类型是整数吗?或者,是否有其他方法可以从crystal reports中获取LastPage整数值,而不使用最后一页的设置变量


谢谢。

请记住,无论内容如何,所有文本框值始终是字符串值

'Private Sub TextBox1_Change()
    Dim IntValue As Integer

    If TextBox1.TextLength > 0 Then
        IntValue = TextBox1 * 1     ' method 1
        'IntValue = TextBox1 + 1 - 1 ' method 2
        'IntValue = TextBox1 + 0     ' method 3
        MsgBox "IntValue = " & IntValue
    End If

End Sub'

CInt指定整数数据类型。VBScript通常会自动转换。

我有一个不同的用户id,所以我必须在这里回复。这是一个变体

struct tagVARIANT {
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union {
//  C++ Type      Union Name   Type Tag                Basic Type
//  --------      ----------   --------                ----------
    long          lVal;        // VT_I4                ByVal Long
    unsigned char bVal;        // VT_UI1               ByVal Byte
    short         iVal;        // VT_I2                ByVal Integer
    float         fltVal;      // VT_R4                ByVal Single
    double        dblVal;      // VT_R8                ByVal Double
    VARIANT_BOOL  boolVal;     // VT_BOOL              ByVal Boolean
    SCODE         scode;       // VT_ERROR
    CY            cyVal;       // VT_CY                ByVal Currency 
    DATE          date;        // VT_DATE              ByVal Date
    BSTR          bstrVal;     // VT_BSTR              ByVal String
    IUnknown      *punkVal;    // VT_UNKNOWN 
    IDispatch     *pdispVal;   // VT_DISPATCH          ByVal Object
    SAFEARRAY     *parray;     // VT_ARRAY|*           ByVal array
    // A bunch of other types that don't matter here...
    VARIANT       *pvarVal;    // VT_BYREF|VT_VARIANT  ByRef Variant
    void          * byref;     // Generic ByRef        
    };
 };
变体通常会自动转换,需要一个字符串才能将其更改为字符串

这是一个OLE函数(可能是VB使用的)

此函数在不更改变量值的情况下更改变量的类型(如果可能)。要就地更改变量,请使目标与源相同

CInt强制它是一个整数,即使vbscript认为它应该是其他的

因此,如果您尝试向包含52的字符串中添加另一个数字,则该字符串将是一个整数


此外,为了与16位VB兼容,在basic中int是16位的,long是32位的。

如果您发布您的内容,我们可以更有效地帮助您……它仍然不起作用。谢谢,但我猜此方法没有更改字符串的数据类型,此方法只会导致(string+1=“String1”)的串联,并为(string*1)提供错误。CInt函数将任何数字转换为子类型Integer的变量。这里说这个函数用于整数[CInt(AnyInteger)],这个函数也启用字符串吗?i、 e.[CInt(STRING)]+符号用于添加数字和压缩字符串
A=“5”B=5 msgbox A+B msgbox cint(A)+B msgbox clng(A)+B
全部打印10
HRESULT VariantChangeType(VARIANT * pvDst, VARIANT * pvSrc, WORD wFlags, VARTYPE vt);