Wish &= Operator

Alexander Stolte

Expert
Licensed User
Longtime User
In vb.net I've only been using it for half a year, but I've learned to love it because it makes the code shorter in some situations.

Example:
B4X:
Dim strQuery As String = ""
strQuery = strQuery & " SELECT "
strQuery = strQuery & " * "
strQuery = strQuery & " FROM "
strQuery = strQuery & " Table "
If True Then strQuery = strQuery & " WHERE bla = 1 "
To:
B4X:
Dim strQuery As String = ""
strQuery &= " SELECT "
strQuery &= " * "
strQuery &= " FROM "
strQuery &= " Table "
If True Then strQuery &= " WHERE bla = 1 "
 

William Lancee

Well-Known Member
Licensed User
Longtime User
If have used the 'op=' construct in a number of languages, but I don't miss it in B4A.

However, I do like my code clean with unnecessary repetitions. Therefore I use 'stringbuilder' a lot, as you could have done with your example.
My favorite though is smart strings with the new IIf() function.

B4X:
    Dim strQuery As String = $"
        SELECT
        *
        FROM
        Table
        ${IIf(True, "WHERE bla = 1", "")}
    "$
    Log(strQuery.Replace(TAB, " ").Replace(CRLF, ""))
 

Mahares

Expert
Licensed User
Longtime User
SInce you like String Literals, IIF and you also like challenges, here are some more for your consumption:
B4X:
'Below works well: display if field =1000, else show nothing
    Dim strQuery As String = $"
    Select * 
    FROM Crossfalls
    ${IIf(True, "WHERE Stakevalue = ?", "")}
    ORDER BY Stakevalue"$
    rs=SQL.ExecQuery2(strQuery, Array As String(1000))

'Below works well:if 10000 does not exist, display for 1000
    Dim strQuery As String = $"
    Select * 
    FROM Crossfalls
    ${IIf(False, "WHERE Stakevalue = 10000","WHERE Stakevalue = 1000")}
    ORDER BY Stakevalue"$
    rs=SQL.ExecQuery(strQuery)

'Below works well: If there is no 10000 in given field display all
    Dim strQuery As String = $"
    Select * 
    FROM Crossfalls
    ${IIf(False, "WHERE Stakevalue = 10000", "")}
    ORDER BY Stakevalue"$
    rs=SQL.ExecQuery(strQuery)
    
'Below works well: If there is no 10000 in given field display all, equiv to above it
Dim strQuery As String = $"
    Select * 
    FROM Crossfalls
    WHERE 10000 NOT IN (Stakevalue)
    ORDER BY Stakevalue"$
    rs=SQL.ExecQuery(strQuery)

'Below works well: If there is no 10000 in given field display all, equiv to above it
Dim strQuery As String = $"
    Select * 
    FROM Crossfalls
    ${IIf(False, "WHERE 10000 NOT IN (Stakevalue) ", "")}
    ORDER BY Stakevalue"$
    rs=SQL.ExecQuery(strQuery)

'Below works well: If there is no 10000 in given field display all, equiv to above it
Dim strQuery As String = $"
    Select * 
    FROM Crossfalls
    ${IIf(True, "WHERE ? NOT IN (Stakevalue) ", "")}
    ORDER BY Stakevalue"$
    rs=SQL.ExecQuery2(strQuery, Array As String(10000))
 
Top