>>>>Hi,
>>>>
>>>>I need to change the following SQL Insert such that if the cursor cViewName does not have a column FIELD1 (or any other), this column IS NOT included in the expression. Here is an example:
>>>>
>>>>
>>>>INSERT INTO (cViewName) (FIELD1, FIELD2, FIELD3) VALUES ( "", "", 0.00 )
>>>>
>>>>
>>>>I know I can do it with an IF ENDIF condition but I wonder if it can be done in one line.
>>>>
>>>>TIA
>>>
>>>if you like this,
>>>a solution exist:
>>>
>>>INSERT INTO (cViewName) ((IIF(EMPTY(FSIZE("FIELD1)),"FIELD2","FIELD1")), FIELD2, FIELD3);
>>> VALUES ( IIF(EMPTY(FSIZE("FIELD1)),"" ,"val1") , "val2", 0.00 )
>>>
>>
>>Interesting. I see that you if FIELD1 is empty you are setting value to FIELD2 twice. Do we know that VFP always processes INSERT in the exact order of how the fields are listed? That is, that the first FIELD2 will be set to empty string and then it will be set to 'val2'?
>>Thank you.
>
>It is not on VFP documentation,
>but it work on this way.
>VFP is dead, then no issues on next release exists.
>
>However i suggest you to use the classic IF ELSE
Personally I'd prefer to stick with IF..ELSE rather than trying to "shrink" to a single statement. Especially if the resulting "shorter" code is less obvious -- thus harder to debug and modify at a later date. And considering the possibility of converting/rewrite of code to a different language or platform, it's probably good to avoid relying on implementation-specific behavior in your code.