Announcement

Collapse
No announcement yet.

If-Bedingung dynamisch erstellen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • If-Bedingung dynamisch erstellen?

    Hallo,
    gibt es eine möglichkeit IF-Bedingungen dynamisch, zb aus werten aus der Datenbank, zu erstellen?

    Bsp. In einer Tablle in der DB wird in einer Spalte immer die bedingung zur Bahndlung von einer Combobox hinterlegt. In folgender Form:

    =2 ODER >3 ODER <0 UND >-5
    bei der Combobox soll dann das Value abgefragt werden.

    Also,

    Code:
    If selectedValue=2 OR selectedValue >3 OR selectedValue<0 AND selectedValue>-5 THEN
    blablabla
    end if
    Gibts für das Problem eine Lösung?

  • #2
    Hallo Andreas,

    vornweg gestatte mit bitte eine Frage.

    Wer bitte hinterlegt Teile eines If-Kontsruktes in eine Datenbank?

    In manchen größeren Projekten wird man mit der Zeit "betriebsblind" und macht Sachen, die einem zwar für den Moment weiterbringen, aber im weiteren Projekt sich eher als hinderlich heraus kristalisieren.

    Nun zu deiner Frage

    Sicherlich ist sowas machbar, auch wenn der Aufwand dafür imens ist.
    Wenn ... OR ...OR ... AND immer in der Reihenfolge gegeben ist, dann kann man ja z.b. auch so verfahren.

    Dim bool1, bool2, bool3, bool4 As Boolean

    Funktion für = (Wert von SelectedItem,Wert aus der Stringauswertung ) as Boolean
    Funktion für < (...) as Boolean
    Funktion für > (...) as Boolean
    .
    .

    Funktion zu Stringauswertung
    Stringzerlegung und Aufruf der entsprechenden Vergleichsfunktionen welche dann nur ein Boolean zurück liefern
    End Funktion

    If bool1 And bool2 And bool3 Or bool4 Then
    'code
    End If

    Ist aber ... OR ...OR ... AND nicht immer gleich, dann ähnlich wie oben. Nur das für AND ..OR ... u.s.w. ebenfalls Funktionen geschaffen werden müssen.
    Also Auswerten ergibt nen Trigger, der entscheidet welches "Auswerten" vortgesetzt wird u.s.w. Am Ende steht dann nur True oder False, was wiederum

    If Ruckgabe der Auswertung = True then
    ...
    end if

    ergeben könnte. So könnte ich es mir vorstellen.

    mfg laptel

    Comment


    • #3
      ich hab ne eigene skriptsprache geschrieben und die dll is in .NET und kann als Formelauswerter missbraucht werden. Ist aber nicht so sehr schnell!

      Download der DLL: http://crossdev.cr.ohost.de/files/Levu_RTL.dll
      Fragen dazu beantworte ich auch gerne über sgp.lima-city.de.

      Ich schreib mal ne kleine Anwendung für dich und poste sie später!

      Comment


      • #4
        Code:
        Public Class Form1
        
            Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                Dim t As String = TextBox1.Text
                Dim p As New Levu_RTL.Program(False, False)
                Dim v As Integer = 4 'value to be checked
                Dim code As String = "v = " & v & "; if ( " & t & " ) ; isOK = 1 ; else ; isOK = 0 ; end if ; "
                p.CodeFiles = New MyLib.IO.MultiDoc.Multidoc
                p.CodeFiles.AddDocument(code)
                p.exec()
                Dim isOK As Integer = Integer.Parse(p.getExp("isOK", True, False).ToString)
                If isOK = 1 Then
                    MsgBox("stimmt")
                Else
                    MsgBox("stimmt nicht")
                End If
            End Sub
        
        End Class
        Sodele, das dürfte es sein. Du brauchst noch so ne andere Lib; die sind beide als zip im anhang!
        Attached Files

        Comment


        • #5
          Beispiel für t:

          t = "v < 5 AND (v > 6 OR v < 2)"

          oder irgendwas...

          und nochwas: ich bin in nächsten 3 wochen weg, und erreichbar bin ich wenn überhaupt nur über meine website!

          Comment

          Working...
          X