Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Conditional Insert
Message
De
29/10/2015 15:05:13
 
 
À
29/10/2015 12:09:18
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows 10
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Divers
Thread ID:
01626580
Message ID:
01626656
Vues:
47
>>>>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.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform