2009-11-16 6 views
1

comment utiliser le cas lors de la déclaration avec oledb à fichier Excel à l'aide vb.net 2.0 comme select prodid, cas PRODID quand 1 puis « bien » quand 2 puis « bonne » finCAS OLEDB En cas de requêtes SELECT

+3

Votre touche majuscule ou majuscule est-elle bloquée? – random

+1

Est-ce une requête SQL? – djeidot

+0

besoin de sélectionner une requête pour lire le fichier Excel – VENKAT

Répondre

2

OLEDB est seulement un "relais" de tri et répète simplement la requête à la source sous-jacente.

Je ne crois pas qu'Excel supporte la construction CASE WHEN, et par conséquent vous ne pouvez pas l'utiliser, même par OLEDB.

Vous pouvez utiliser à la place un idiome spécifique à Excel, le IFF() function, comme décrit dans la réponse de CodeByMoonlight. Comme indiqué le besoin d'imbriquer des appels IFF() fait est une proposition plutôt désordonnée pour les situations qui nécessitent plus de 3 ou 4 cas.

4

Vous devez utiliser IIF au lieu de CASE lors de l'interrogation Excel, par exemple

SELECT prodid, IIF (prodid = 1, 'amende', IIF (prodid = 2, 'bon', '')) FROM MyExcel

Comme vous pouvez le voir, il peut devenir salissant rapidement. Ce n'est pas si grave si vous avez seulement une évaluation bidirectionnelle, mais dans votre code, il n'est pas clair si vous avez seulement 2 valeurs possibles pour prodid ou plus. Mon exemple suppose qu'il existe d'autres valeurs, d'où le IIF imbriqué.