2016-06-29 10 views
0

他の選択肢と同じようにintに変換しようとしましたが、このケースは複数選択であり、foreachはint型では機能しません。しかし、このforeachのは、カンマでさえ働いている、それはクエリが動作していないSQLでコントローラでの単純なSQLクエリ構文エラー

//var id_status = Convert.ToInt32(Request.Form["id_status"]);  
var id_status = Request.Form["id_status"]; 
var id_cliente = Convert.ToInt32(Request.Form["id_cliente"]); 

var sql = "SELECT * FROM ativacao INNER JOIN cliente ON ativacao.id_cliente = cliente.id WHERE ativacao.id_cliente =" + id_cliente; 

if (id_status != null) 
{ 
    foreach (var itemselecionado in id_status) 
    { 
     sql = sql + " OR ativacao.status = '" + itemselecionado + "'"; 
    } 
} 

....(しかし):私はこれを試してみました、それが働きました。

正しいSQLクエリを取得するにはどうすればよいですか? SQL変数の

最終値:

"SELECT * FROM ativacao 
INNER JOIN cliente 
ON ativacao.id_cliente = cliente.id 
WHERE ativacao.id_cliente =106 
AND cliente.id_prospector = 2 
AND cliente.id_executivo = 1 
AND cliente.ano_cliente = '2015' 
--> OR ativacao.status = '4' 
    OR ativacao.status = ',' 
    OR ativacao.status = '5' 
    OR ativacao.status = ',' 
    OR ativacao.status = '6' <-- 

私は、私は非常によく英語を知らない、非常によく説明カント場合はごめんなさい。

すべての援助は非常に高く評価されます。

+0

id_clienteのデータ型は何ですか? –

+0

_sql_変数の最終値は何ですか? – Steve

+0

私はあなたが必要とする投稿を編集します –

答えて

0

EDIT:あなたは自分のforeachループでこれを行うことができます。

if(itemselecionado == ',') continue; 
+0

.trimはasp.netに存在しません –

+0

@FlávioAugustoあなたの質問の結果を見た後、if文でカンマを無視して続行するだけです。 – AguaCS

1

また、ここ句で使用することができます。良いクエリを作成して作成することも簡単にできます。ここではそのためのコードは次のとおりです。

if (id_status != null) 
{ 
    string inClause = " ativacao.status in ("; 
    foreach (var itemselecionado in id_status) 
    { 
    if(itemselecionado.Trim() == ",") 
    { 
     countinue; 
    } 
    inClause += "'" + itemselecionado + "',"; 
    } 
    inClause = inClause.SubString(0, inClause.Length - 1) + ")"; 
    sql = sql + inClause; 
} 

編集:あなたのクエリは、この1のようになります。

"SELECT * FROM ativacao INNER JOIN cliente ON 
ativacao.id_cliente = Cliente.id WHERE ativacao.id_cliente = 106 AND 
cliente.id_prospector = 2 
AND cliente.id_executivo = 1 AND cliente.ano_cliente = '2015' 
OR ativacao.status in ('4', '5', '6')" 

おかげ

+0

私が投稿した時、私の問題はコンマでしたが、私はそれを修正しました...しかし、今は私は他の人を持っています、sintaxe ORは間違っています。あなたのようなものが助けになるでしょう。しかし、どこに "と"と "か"を入れますか? –

+0

AND(ativacao.status = 3 OR ativacao.status = 4 OR ativacao.status = 8) –

+0

コードで生成されたクエリを確認してください。 – vivek