VB.NET Оценить строку с переменными - PullRequest
0 голосов
/ 07 октября 2018

Мне нравится заполнять мою базу данных разными формулами.

Когда в базе данных есть формула, такая как "(2+4)*5", я получаю результат 40:

update DB.dbo.INFOGROUP SET formula = '(2+4)*5' where INFOGROUP = 'S42'

Когда яесть формула в базе данных, как "(x+4)*5" я получаю результат 20.Значение x игнорируется, даже если для x установлено значение 10:

update DB.dbo.INFOGROUP SET formula = '(x+4)*5' where INFOGROUP = 'S42'
Private Sub BtnCalculate_Click(sender As Object, e As EventArgs) Handles BtnCalculate.Click
    Dim SC As New MSScriptControl.ScriptControl
    Dim x As Double = 10
    SQL.AddParam("@infogroup", "S42")
    SQL.ExecQuery($"SELECT formula FROM DB.dbo.INFOGROEP where infogroep=@infogroep")
    Dim Formula As String = <string_from_db>
    'SET LANGUAGE TO VBSCRIPT
    SC.Language = "VBSCRIPT"
    'ATTEMPT MATH
    Try
        Dim Result As Double = Convert.ToDouble(SC.Eval(Formula))
        'SHOW THAT IT WAS VALID
        MessageBox.Show("Math success, " & Formula & " equals " & Result.ToString)
    Catch ex As Exception
        'SHOW THAT IT WAS INVALID
        MessageBox.Show("Not a valid math formula for a double.")
    End Try
End Sub

Возможно ли это вообще или мне нужен сторонний скрипт для этого?

Кстати: в Visual Foxpro была такая функция, как EVAL(db_string).

1 Ответ

0 голосов
/ 07 октября 2018

Скриптовый движок не знает о переменных в ваших методах.Если вы хотите оценить формулу, которая содержит переменную, вам нужно указать, какое значение имеет эта переменная:

SC.Language = "VBSCRIPT"
sc.AddCode "Private Const x = 10"

Dim Result As Double = Convert.ToDouble(SC.Eval(Formula))
...