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



嗨,我需要你们的帮助!

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

谢谢。

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

'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使用的)

HRESULT VariantChangeType(VARIANT * pvDst, VARIANT * pvSrc, WORD wFlags, VARTYPE vt);

这个函数改变一个VARIANT的类型而不改变它的值(如果可能的话)。若要就地更改变量,请使目标与源相同。

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

所以一个包含52的字符串将会是一个整数,如果你尝试给它加上另一个数字。

同样在basic中,int是16位,long是32位,以便与16位的VB兼容。

最新更新