TABELA COMO PARAMETRO EM C#
Boa tarde.
Estou fazendo uma aplicação, e gostaria de colocar um parametro para trocar o banco de dados a partir de uma combobox. Não sei onde estou errando, a aplicação retorna o seguinte erro:
Erro : Must declare the table variable [Ô]@From1[Ô].
SqlCommand cmd = new SqlCommand([Ô]SELECT CASE MONTH(Data)[Ô]
+ [Ô] WHEN [ô]01[ô] THEN [ô]JAN[ô][Ô]
+ [Ô] WHEN [ô]02[ô] THEN [ô]FEV[ô][Ô]
+ [Ô] WHEN [ô]03[ô] THEN [ô]MAR[ô][Ô]
+ [Ô] WHEN [ô]04[ô] THEN [ô]ABR[ô][Ô]
+ [Ô] WHEN [ô]05[ô] THEN [ô]MAI[ô][Ô]
+ [Ô] WHEN [ô]06[ô] THEN [ô]JUN[ô][Ô]
+ [Ô] WHEN [ô]07[ô] THEN [ô]JUL[ô][Ô]
+ [Ô] WHEN [ô]08[ô] THEN [ô]AGO[ô][Ô]
+ [Ô] WHEN [ô]09[ô] THEN [ô]SET[ô][Ô]
+ [Ô] WHEN [ô]10[ô] THEN [ô]OUT[ô][Ô]
+ [Ô] WHEN [ô]11[ô] THEN [ô]NOV[ô][Ô]
+ [Ô] WHEN [ô]12[ô] THEN [ô]DEZ[ô][Ô]
+ [Ô] END AS Mes, SUM(Vendas) AS Vendas[Ô]
+ [Ô] FROM @From1[Ô]
+ [Ô] WHERE Data BETWEEN @data3 AND @data4[Ô]
+ [Ô] GROUP BY DATENAME(MONTH,Data), YEAR(Data), MONTH(Data), Filial[Ô]
+ [Ô] ORDER BY YEAR(Data), MONTH(Data)[Ô], conn);
//Cria um DataAdapter a partir do comando
SqlDataAdapter da = new SqlDataAdapter(cmd);
//Cria Parametros para substituir na Querry
cmd.Parameters.Add([Ô]@data3[Ô], SqlDbType.Date);
cmd.Parameters[[Ô]@data3[Ô]].Value = this.dtpUni1.Value.Date;
cmd.Parameters.Add([Ô]@data4[Ô], SqlDbType.Date);
cmd.Parameters[[Ô]@data4[Ô]].Value = this.dtpUni2.Value.Date;
cmd.Parameters.Add([Ô]@From1[Ô], SqlDbType.VarChar, 50);
cmd.Parameters[[Ô]@From1[Ô]].Value = cbxUnidade.SelectedIndex;
switch (cbxUnidade.SelectedIndex)
{
case 0:
cmd.Parameters[[Ô]@From1[Ô]].Value = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_BA[Ô];
break;
case 1:
cmd.Parameters[[Ô]@From1[Ô]].Value = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_CE[Ô];
break;
case 2:
cmd.Parameters[[Ô]@From1[Ô]].Value = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_DF[Ô];
break;
case 3:
cmd.Parameters[[Ô]@From1[Ô]].Value = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_GO[Ô];
break;
}
Estou fazendo uma aplicação, e gostaria de colocar um parametro para trocar o banco de dados a partir de uma combobox. Não sei onde estou errando, a aplicação retorna o seguinte erro:
Erro : Must declare the table variable [Ô]@From1[Ô].
SqlCommand cmd = new SqlCommand([Ô]SELECT CASE MONTH(Data)[Ô]
+ [Ô] WHEN [ô]01[ô] THEN [ô]JAN[ô][Ô]
+ [Ô] WHEN [ô]02[ô] THEN [ô]FEV[ô][Ô]
+ [Ô] WHEN [ô]03[ô] THEN [ô]MAR[ô][Ô]
+ [Ô] WHEN [ô]04[ô] THEN [ô]ABR[ô][Ô]
+ [Ô] WHEN [ô]05[ô] THEN [ô]MAI[ô][Ô]
+ [Ô] WHEN [ô]06[ô] THEN [ô]JUN[ô][Ô]
+ [Ô] WHEN [ô]07[ô] THEN [ô]JUL[ô][Ô]
+ [Ô] WHEN [ô]08[ô] THEN [ô]AGO[ô][Ô]
+ [Ô] WHEN [ô]09[ô] THEN [ô]SET[ô][Ô]
+ [Ô] WHEN [ô]10[ô] THEN [ô]OUT[ô][Ô]
+ [Ô] WHEN [ô]11[ô] THEN [ô]NOV[ô][Ô]
+ [Ô] WHEN [ô]12[ô] THEN [ô]DEZ[ô][Ô]
+ [Ô] END AS Mes, SUM(Vendas) AS Vendas[Ô]
+ [Ô] FROM @From1[Ô]
+ [Ô] WHERE Data BETWEEN @data3 AND @data4[Ô]
+ [Ô] GROUP BY DATENAME(MONTH,Data), YEAR(Data), MONTH(Data), Filial[Ô]
+ [Ô] ORDER BY YEAR(Data), MONTH(Data)[Ô], conn);
//Cria um DataAdapter a partir do comando
SqlDataAdapter da = new SqlDataAdapter(cmd);
//Cria Parametros para substituir na Querry
cmd.Parameters.Add([Ô]@data3[Ô], SqlDbType.Date);
cmd.Parameters[[Ô]@data3[Ô]].Value = this.dtpUni1.Value.Date;
cmd.Parameters.Add([Ô]@data4[Ô], SqlDbType.Date);
cmd.Parameters[[Ô]@data4[Ô]].Value = this.dtpUni2.Value.Date;
cmd.Parameters.Add([Ô]@From1[Ô], SqlDbType.VarChar, 50);
cmd.Parameters[[Ô]@From1[Ô]].Value = cbxUnidade.SelectedIndex;
switch (cbxUnidade.SelectedIndex)
{
case 0:
cmd.Parameters[[Ô]@From1[Ô]].Value = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_BA[Ô];
break;
case 1:
cmd.Parameters[[Ô]@From1[Ô]].Value = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_CE[Ô];
break;
case 2:
cmd.Parameters[[Ô]@From1[Ô]].Value = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_DF[Ô];
break;
case 3:
cmd.Parameters[[Ô]@From1[Ô]].Value = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_GO[Ô];
break;
}
Você não pode fazer isso. A parametrização é para parâmetros mesmo, não para uma tabela.
Então não é possivel eu fazer uma troca de tabela dinamica?
Se realmente não tiver jeito, eu faço varios UNION e uso outro filtro como parametro.
E não tem jeito de declarar variavel no SQL?
Se realmente não tiver jeito, eu faço varios UNION e uso outro filtro como parametro.
E não tem jeito de declarar variavel no SQL?
Veja bem, adicionar parâmetros no comando, não significa que os valores do parâmetros simplesmente substituirão as variáveis, não é assim que funciona. Existe uma sintaxe básica para cada comando sql, que deve ser respeitada. Os valores que o comando SQL vai conter, esses sim, vão receber os parâmetros que você adiciona no comando. [Ô]From Tabela[Ô], não é um parâmetro é uma cláusula SQL e deve ser respeitada. Para esse caso, você poderia simplesmente fazer um replace:
string SQL = string.Format([Ô]SELECT CASE MONTH(Data)[Ô]
+ [Ô] WHEN [ô]01[ô] THEN [ô]JAN[ô][Ô]
+ [Ô] WHEN [ô]02[ô] THEN [ô]FEV[ô][Ô]
+ [Ô] WHEN [ô]03[ô] THEN [ô]MAR[ô][Ô]
+ [Ô] WHEN [ô]04[ô] THEN [ô]ABR[ô][Ô]
+ [Ô] WHEN [ô]05[ô] THEN [ô]MAI[ô][Ô]
+ [Ô] WHEN [ô]06[ô] THEN [ô]JUN[ô][Ô]
+ [Ô] WHEN [ô]07[ô] THEN [ô]JUL[ô][Ô]
+ [Ô] WHEN [ô]08[ô] THEN [ô]AGO[ô][Ô]
+ [Ô] WHEN [ô]09[ô] THEN [ô]SET[ô][Ô]
+ [Ô] WHEN [ô]10[ô] THEN [ô]OUT[ô][Ô]
+ [Ô] WHEN [ô]11[ô] THEN [ô]NOV[ô][Ô]
+ [Ô] WHEN [ô]12[ô] THEN [ô]DEZ[ô][Ô]
+ [Ô] END AS Mes, SUM(Vendas) AS Vendas[Ô]
+ [Ô] FROM [txt-color=#e80000]{0}[/txt-color][Ô]
+ [Ô] WHERE Data BETWEEN @data3 AND @data4[Ô]
+ [Ô] GROUP BY DATENAME(MONTH,Data), YEAR(Data), MONTH(Data), Filial[Ô]
+ [Ô] ORDER BY YEAR(Data), MONTH(Data)[Ô], [txt-color=#e80000]cbxUnidade.SelectedIndex[/txt-color]);
SqlCommand cmd = new SqlCommand(SQL, conn);
string SQL = string.Format([Ô]SELECT CASE MONTH(Data)[Ô]
+ [Ô] WHEN [ô]01[ô] THEN [ô]JAN[ô][Ô]
+ [Ô] WHEN [ô]02[ô] THEN [ô]FEV[ô][Ô]
+ [Ô] WHEN [ô]03[ô] THEN [ô]MAR[ô][Ô]
+ [Ô] WHEN [ô]04[ô] THEN [ô]ABR[ô][Ô]
+ [Ô] WHEN [ô]05[ô] THEN [ô]MAI[ô][Ô]
+ [Ô] WHEN [ô]06[ô] THEN [ô]JUN[ô][Ô]
+ [Ô] WHEN [ô]07[ô] THEN [ô]JUL[ô][Ô]
+ [Ô] WHEN [ô]08[ô] THEN [ô]AGO[ô][Ô]
+ [Ô] WHEN [ô]09[ô] THEN [ô]SET[ô][Ô]
+ [Ô] WHEN [ô]10[ô] THEN [ô]OUT[ô][Ô]
+ [Ô] WHEN [ô]11[ô] THEN [ô]NOV[ô][Ô]
+ [Ô] WHEN [ô]12[ô] THEN [ô]DEZ[ô][Ô]
+ [Ô] END AS Mes, SUM(Vendas) AS Vendas[Ô]
+ [Ô] FROM [txt-color=#e80000]{0}[/txt-color][Ô]
+ [Ô] WHERE Data BETWEEN @data3 AND @data4[Ô]
+ [Ô] GROUP BY DATENAME(MONTH,Data), YEAR(Data), MONTH(Data), Filial[Ô]
+ [Ô] ORDER BY YEAR(Data), MONTH(Data)[Ô], [txt-color=#e80000]cbxUnidade.SelectedIndex[/txt-color]);
SqlCommand cmd = new SqlCommand(SQL, conn);
e como ficaria a sintaxe do switch (cbxUnidade.SelectedIndex)
tentei aqui mas ta dando erro
---------------------------
---------------------------
Erro : Incorrect syntax near [ô]-[ô].
---------------------------
OK
---------------------------
tentei aqui mas ta dando erro
---------------------------
---------------------------
Erro : Incorrect syntax near [ô]-[ô].
---------------------------
OK
---------------------------
Achei uma solução um amigo me deu uma mão criei outra classe.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
//CLASSE PUBLICA DE VARIÃVEIS PARA UTILIZAR EM TODO SOFTWARE
public class Variaveis
{
public static string banco = qry + ba + clausula;
public const string ba = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_BA[Ô];
public const string ce = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_CE[Ô];
public const string df = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_DF[Ô];
public const string go = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_GO[Ô];
public const string mg = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_MG[Ô];
public const string mt = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_MT[Ô];
public const string pe = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_PE[Ô];
public const string rj = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_RJ[Ô];
public const string sp = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_SP[Ô];
public const string qry = [Ô]SELECT CASE MONTH(Data)[Ô]
+ [Ô] WHEN [ô]01[ô] THEN [ô]JAN[ô][Ô]
+ [Ô] WHEN [ô]02[ô] THEN [ô]FEV[ô][Ô]
+ [Ô] WHEN [ô]03[ô] THEN [ô]MAR[ô][Ô]
+ [Ô] WHEN [ô]04[ô] THEN [ô]ABR[ô][Ô]
+ [Ô] WHEN [ô]05[ô] THEN [ô]MAI[ô][Ô]
+ [Ô] WHEN [ô]06[ô] THEN [ô]JUN[ô][Ô]
+ [Ô] WHEN [ô]07[ô] THEN [ô]JUL[ô][Ô]
+ [Ô] WHEN [ô]08[ô] THEN [ô]AGO[ô][Ô]
+ [Ô] WHEN [ô]09[ô] THEN [ô]SET[ô][Ô]
+ [Ô] WHEN [ô]10[ô] THEN [ô]OUT[ô][Ô]
+ [Ô] WHEN [ô]11[ô] THEN [ô]NOV[ô][Ô]
+ [Ô] WHEN [ô]12[ô] THEN [ô]DEZ[ô][Ô]
+ [Ô] END AS Mes, SUM(Vendas) AS Vendas[Ô]
+ [Ô] FROM [Ô];
public const string clausula = [Ô] WHERE Data BETWEEN @data3 AND @data4[Ô]
+ [Ô] GROUP BY DATENAME(MONTH,Data), YEAR(Data), MONTH(Data), Filial[Ô]
+ [Ô] ORDER BY YEAR(Data), MONTH(Data)[Ô];
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
//CLASSE PUBLICA DE VARIÃVEIS PARA UTILIZAR EM TODO SOFTWARE
public class Variaveis
{
public static string banco = qry + ba + clausula;
public const string ba = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_BA[Ô];
public const string ce = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_CE[Ô];
public const string df = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_DF[Ô];
public const string go = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_GO[Ô];
public const string mg = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_MG[Ô];
public const string mt = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_MT[Ô];
public const string pe = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_PE[Ô];
public const string rj = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_RJ[Ô];
public const string sp = [Ô]PAINEL_GERENCIAL.dbo.Pedidos_SP[Ô];
public const string qry = [Ô]SELECT CASE MONTH(Data)[Ô]
+ [Ô] WHEN [ô]01[ô] THEN [ô]JAN[ô][Ô]
+ [Ô] WHEN [ô]02[ô] THEN [ô]FEV[ô][Ô]
+ [Ô] WHEN [ô]03[ô] THEN [ô]MAR[ô][Ô]
+ [Ô] WHEN [ô]04[ô] THEN [ô]ABR[ô][Ô]
+ [Ô] WHEN [ô]05[ô] THEN [ô]MAI[ô][Ô]
+ [Ô] WHEN [ô]06[ô] THEN [ô]JUN[ô][Ô]
+ [Ô] WHEN [ô]07[ô] THEN [ô]JUL[ô][Ô]
+ [Ô] WHEN [ô]08[ô] THEN [ô]AGO[ô][Ô]
+ [Ô] WHEN [ô]09[ô] THEN [ô]SET[ô][Ô]
+ [Ô] WHEN [ô]10[ô] THEN [ô]OUT[ô][Ô]
+ [Ô] WHEN [ô]11[ô] THEN [ô]NOV[ô][Ô]
+ [Ô] WHEN [ô]12[ô] THEN [ô]DEZ[ô][Ô]
+ [Ô] END AS Mes, SUM(Vendas) AS Vendas[Ô]
+ [Ô] FROM [Ô];
public const string clausula = [Ô] WHERE Data BETWEEN @data3 AND @data4[Ô]
+ [Ô] GROUP BY DATENAME(MONTH,Data), YEAR(Data), MONTH(Data), Filial[Ô]
+ [Ô] ORDER BY YEAR(Data), MONTH(Data)[Ô];
}
}
Tópico encerrado , respostas não são mais permitidas