高分请教一个既简单又复杂的问题

qiqif 2010-05-10 08:48:03
从数据库或文本读取条件如 i=1
放入变量j
即 j='i=1'

在vb程序中需要写入条件

if i=1 then
...
这样执行是没有问题

但如果写成 if j then
...
这样则会编译报错

判断条件在数据库中或配置文件 如何放入正常程序中?
望高手赐教

...全文
234 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhy623565791 2010-05-15
  • 打赏
  • 举报
回复
貌似 j="i=1"是不是成字符串了??
jabulin 2010-05-13
  • 打赏
  • 举报
回复
不知道楼主是不是想这样
dim j as boolean
if j then
......
end if
生命密码 2010-05-13
  • 打赏
  • 举报
回复
if 后应该跟逻辑值的,而“i=1”是字符型,根本不搭配
你可以这样写
if j="i=1" then
...
end if
liguicd 2010-05-12
  • 打赏
  • 举报
回复
帮顶..
  • 打赏
  • 举报
回复

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返回的结果作为一个逻辑表达式进行判断
  • 打赏
  • 举报
回复
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返回的结果作为一个逻辑表达式进行判断
chinaboyzyq 2010-05-12
  • 打赏
  • 举报
回复
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
赵4老师 2010-05-12
  • 打赏
  • 举报
回复
ScriptControl1.Eval
Tiger_Zhao 2010-05-12
  • 打赏
  • 举报
回复
EbExecuteLine 只能在 VB-IDE 中使用,不要再拿出来现了。
cngst 2010-05-12
  • 打赏
  • 举报
回复
j是字符串,肯定是不能当程序代码执行的

可以:
if j="i=1" then...

elseif j="i=0" then...

elseif j="i=..." then
gooore 2010-05-12
  • 打赏
  • 举报
回复
友情支持
luofenghen 2010-05-11
  • 打赏
  • 举报
回复
现在 想想楼主 好像 专牛角尖了
j="i=1" ......
if "i=1" then

"i=1"是字符串 和J 一样
Tiger_Zhao 2010-05-11
  • 打赏
  • 举报
回复
应该按照 VB 语法运算,否则还要做语法转换。
'使用 Microsoft Script Control 1.0
Option Explicit

Private 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 Sub

Private Sub Form_Load()
ScriptControl1.Language = "vbscript"
End Sub
luofenghen 2010-05-11
  • 打赏
  • 举报
回复
可以用SELECT CASE
学习风 2010-05-11
  • 打赏
  • 举报
回复
有趣的问题!up......
东方之珠 2010-05-11
  • 打赏
  • 举报
回复
up
孤独剑_LPZ 2010-05-11
  • 打赏
  • 举报
回复
mark
klj123 2010-05-11
  • 打赏
  • 举报
回复
说话的都是带星的,不敢乱言,只有静观学习了。
贝隆 2010-05-10
  • 打赏
  • 举报
回复
好多人问类似的问题,但我从来也没有找到过解决的办法。VB应该不行,这个不符合语法规定
特别 2010-05-10
  • 打赏
  • 举报
回复

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)
加载更多回复(3)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧