从数据库或文本读取条件如 i=1
放入变量j
即 j='i=1'在vb程序中需要写入条件

if i=1 then
 ...
这样执行是没有问题但如果写成 if j then
 ...
这样则会编译报错判断条件在数据库中或配置文件 如何放入正常程序中?
望高手赐教

解决方案 »

  1.   

    VB中数值型变量是个直接作为条件表达式使用的啊.楼主的意思莫非是你这里j是个字符串,内容为"i=1",即相当于
    Dim j as string
    j = "i=1"  '从数据库中或配置文件读取
      

  2.   

    如是这种需求,一般就可用ScriptControl的Execute方法判断字符串表示的表达式的结果值.这个的使用在本站和搜索引擎上都很容易搜索到方法:)
      

  3.   

    +1需要引用Microsoft Script Control
    如果是等于比较的话,你需要将1个等于号换成两个等于号
    采用的是JavaScript脚本来执行的
        Dim script As New MSScriptControl.ScriptControl
        script.Language = "javascript"
        Dim str As String
        
        str = "i=3;" + vbNewLine
        str = str & " i==1;"
        MsgBox b.Eval(str)
      

  4.   


        Dim script As New MSScriptControl.ScriptControl
        script.Language = "javascript"
        Dim str As String
        
        str = "function test() {" & vbNewLine
        str = str & "var i; " & vbNewLine
        str = str & "i=1; " & vbNewLine    '给i赋值
        str = str & " return (i==1); " & vbNewLine
        str = str & "}"
        str = str & "test(); "    '执行,返回的是执行结果
        MsgBox script.Eval(str)
      

  5.   

    应该按照 VB 语法运算,否则还要做语法转换。
    '使用 Microsoft Script Control 1.0
    Option ExplicitPrivate Sub Command1_Click()
        Dim i As Long
        Dim j As String
        
        'i = 1
        i = 2
        j = "i=1"
        
        ScriptControl1.Reset
        ScriptControl1.AddCode "const i = " & i
        If ScriptControl1.Eval(j) Then
            MsgBox "真"
        Else
            MsgBox "假"
        End If
    End SubPrivate Sub Form_Load()
        ScriptControl1.Language = "vbscript"
    End Sub
      

  6.   

    现在 想想楼主 好像  专牛角尖了
    j="i=1" ......
     if "i=1" then"i=1"是字符串  和J 一样 
      

  7.   

    Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
    Public Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
        ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
    End Function
    你只需要ExecuteLine一下就可以了,将ExecuteLine返回的结果作为一个逻辑表达式进行判断
      

  8.   


    Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
    Public Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
      ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
    End Function
    你只需要ExecuteLine一下就可以了,将ExecuteLine返回的结果作为一个逻辑表达式进行判断
      

  9.   

    EbExecuteLine 只能在 VB-IDE 中使用,不要再拿出来现了。
      

  10.   

    If 表达式 Then ...
    这里的表达式是字符串变量或字符串表达式时,只有两种值是合法的,即“True"  或  "False"(不分大小写)
    你串变量j的值为"i=1",当然就会出错。
    Private Sub Command1_Click()
       
       Dim j As String, i As Integer
       Dim k As Integer, fj
       
       i = 2 '-------------测试i=1或i=2
       
       j = "i=1"
       fj = Split(j, "=")
       Select Case fj(0)
           Case "i"
                j = fj(1) = i
           Case "k"
                 j = fj(1) = k
           'case .........
       End Select
          
       If j Then
          MsgBox True
       Else
          MsgBox False
       End If
       
       
    End Sub
      

  11.   

    j是字符串,肯定是不能当程序代码执行的可以:
    if j="i=1" then...elseif j="i=0" then...elseif j="i=..." then
      

  12.   

    不知道楼主是不是想这样
    dim j as boolean
    if j then
    ......
    end if
      

  13.   

    if 后应该跟逻辑值的,而“i=1”是字符型,根本不搭配
    你可以这样写
    if j="i=1" then
      ...
    end if