> >= = irgendwie dynamisch ablegen
-
Mittwoch, 9. Mai 2012 19:08
Hi zusammen,
ich möchte innerhalb eines Programms eine Zahl folgender Maßen prüfenif Variable> 1 then
if Variable>= 1 then
if Variable= 1 then
jetzt möchte ich aber irgendwie den Operator dynamisch halten. Ich möchte gerne irgendwie
if Variable meinOperator 1 then
kann ich sowas irgendwie lösen, oder müßte ich das anders machen (select case ? )
Gruss
Alle Antworten
-
Mittwoch, 9. Mai 2012 19:53
Hallo Thomas,
man könnte das über eine eigene Funktion machen. Etwa so:
Public Class Form1
Public Enum enmCompareOperator
Equal = 1
Greater_Or_Equal
Greater
End Enum
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Variable As Integer = 1
Dim meinOperator As enmCompareOperator
meinOperator = enmCompareOperator.Greater
MsgBox(Compare(Variable, meinOperator, 1).ToString)
meinOperator = enmCompareOperator.Greater_Or_Equal
MsgBox(Compare(Variable, meinOperator, 1).ToString)
meinOperator = enmCompareOperator.Equal
MsgBox(Compare(Variable, meinOperator, 1).ToString)
End Sub
Public Function Compare(ByVal Value1 As Integer, _
ByVal CompareOperator As enmCompareOperator, _
ByVal Value2 As Integer) As Boolean
Select Case CompareOperator
Case enmCompareOperator.Equal
If Value1 = Value2 Then
Return True
Else
Return False
End If
Case enmCompareOperator.Greater_Or_Equal
If Value1 >= Value2 Then
Return True
Else
Return False
End If
Case enmCompareOperator.Greater
If Value1 > Value2 Then
Return True
Else
Return False
End If
Case Else
Throw New ArgumentException("Invalid CompareOperator: " & CompareOperator.ToString)
End Select
End Function
End Class
- Bearbeitet Markus Schertler Mittwoch, 9. Mai 2012 20:08
- Als Antwort markiert Robert BreitenhoferMicrosoft Contingent Staff, Moderator Mittwoch, 23. Mai 2012 15:53
-
Mittwoch, 9. Mai 2012 20:18
Servus Thomas
also ich bin hier nicht der Experte, aber ich habe mal das Problem mit einem Sql-Statement gelöst.
als Beispiel:
Select 1>2 as Erg gibt 0 zurück
Select 1<2 as Erg gibt -1 zurück
Der Vorteil ist, das ein SQL-String/Statement dynamisch aufgebaut werden kann und SQL eine Menge solcher Vergleiche oder Prüfungen zuläst und unterstützt. Dies gilt insbesonder dann, wenn der Vergleich durch User defeniert werden und bei Programmerstellung nicht alle Möglichkeiten definiert werden können.
Ich hoffe das hilft dir weiter ... mfg eem monarch
PS: Auch komplexe Math-Ausdrück lassen sich so auflösen :-)
Hier noch ein CodebeispielDim con As New OleDbConnection Dim cmd As New OleDbCommand Dim Erg As String Private Sub Statements() Dim Statements(3) As String 'Hier können die Statements dynamisch aufgebaut werden (ich gebe für das Beispiel mal 4 Statements vor) Statements(0) = "1>2" Statements(1) = "1<2" Statements(2) = "(20-4)/8" Statements(3) = "0/3 + Halligalli" For i = 0 To 3 MsgBox(SQLAuswertung(Statements(i)) & "(" & Statements(i) & ")", vbOKOnly) Next End Sub Private Function SQLAuswertung(ByVal Statement As String) As String Try con.ConnectionString = My.Settings.MonarchUFPConnectionString cmd.Connection = con con.Open() cmd.CommandText = "Select " & Statement & " as Erg" SQLAuswertung = cmd.ExecuteScalar Catch SQLAuswertung = "FEHLER im Statement" End Try con.Close() End Function- Bearbeitet Monarch-Falter Donnerstag, 10. Mai 2012 09:55
- Als Antwort markiert Robert BreitenhoferMicrosoft Contingent Staff, Moderator Mittwoch, 23. Mai 2012 15:53
-
Mittwoch, 23. Mai 2012 15:53Besitzer
Hallo Thomas Klinger2,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT

Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

