Fórum Trabalhando com ListBox de Multiplo valor #9600
28/09/2009
0
Paulo Freire
Curtir tópico
+ 0Posts
28/09/2009
Paulo Freire
Gostei + 0
28/09/2009
Paulo Freire
Minha Store Procedure:
ALTER PROCEDURE [dbo].[spParametrizado]
@IDGRUPO AS SMALLINT,
@IDTRATAMENTO AS SMALLINT,
@IDPROFISSAO AS SMALLINT,
@IDIGREJA AS SMALLINT,
@IDESCOLARIDADE AS SMALLINT,
@IDESTADOCIVIL AS SMALLINT,
@IDSEXO AS SMALLINT
AS DECLARE
@SQL AS VARCHAR(4000) SET @SQL = ' SELECT IDMEMBRO, NOME, TEL_RES, TEL_COM, CELULAR, EMAIL FROM MEMBROS WHERE 1=1 '
IF (@IDGRUPO IS NOT NULL) BEGIN SET @SQL = @SQL + ' AND IDGRUPO = "' + CONVERT(VARCHAR, @IDGRUPO) + '"'
END
IF (@IDTRATAMENTO IS NOT NULL) BEGIN SET @SQL = @SQL + ' AND IDTRATAMENTO = "' + CONVERT(VARCHAR, @IDTRATAMENTO) + '"'
END
IF (@IDPROFISSAO IS NOT NULL) BEGIN SET @SQL = @SQL + ' AND IDPROFISSAO = "' + CONVERT(VARCHAR, @IDPROFISSAO) + '"'
END
IF (@IDIGREJA IS NOT NULL) BEGIN SET @SQL = @SQL + ' AND IDIGREJA = "' + CONVERT(VARCHAR, @IDIGREJA) + '"'
END
IF (@IDESCOLARIDADE IS NOT NULL) BEGIN SET @SQL = @SQL + ' AND IDESCOLARIDADE = "' + CONVERT(VARCHAR, @IDESCOLARIDADE) + '"'
END
IF (@IDESTADOCIVIL IS NOT NULL) BEGIN SET @SQL = @SQL + ' AND IDESTADOCIVIL = "' + CONVERT(VARCHAR, @IDESTADOCIVIL) + '"'
END
IF (@SEXO IS NOT NULL) BEGIN SET @SQL = @SQL + ' AND SEXO = "' + CONVERT(VARCHAR, @SEXO) + '"' END
EXECUTE(@SQL)
Meu botão Filtrar está assim:
procedure TParametrizado.btFiltrar_Click(sender: System.Object; e: System.EventArgs);
var
Comand : SqlCommand;
Conn : SqlConnection;
SqlReader : SqlDataReader;
begin
Conn := SqlConnection.Create(ConfigurationManager.ConnectionStrings['Conexao'].ToString);
Comand := SqlCommand.Create('spParametrizado', Conn);
Comand.CommandType := CommandType.StoredProcedure;
Comand.Parameters.Add('@IDGRUPO', ListBox_Grupos.SelectedValue);C
Comand.Parameters.Add('@IDTRATAMENTO', ListBox_Tratamentos.SelectedValue);
Comand.Parameters.Add('@IDPROFISSAO', ListBox_Profissoes.SelectedValue);
Comand.Parameters.Add('@IDIGREJA', ListBox_Igreja.SelectedValue);
Comand.Parameters.Add('@IDESCOLARIDADE', ListBox_Escolaridade.SelectedValue);
Comand.Parameters.Add('@IDESTADOCIVIL', ListBox_EstadoCivil.SelectedValue);
Comand.Parameters.Add('@IDSEXO', ListBox_Sexo.SelectedValue);
Conn.Open;
SqlReader := Comand.ExecuteReader;
if SqlReader.HasRows then
begin
try
GridView1.DataSource := SqlReader;
GridView1.DataBind;
finally
Conn.Close;
end;
end else
MessageScript( Page, 'Não foram encontrado Registros conforme Opções Selecionadas !!!');
end;
Obrigado mais uma vez.
Gostei + 0
28/09/2009
Rodrigo Mourão
Vuio analisar para entender completamente o problema e lhe sugerir algo .
Abs!!
Gostei + 0
29/09/2009
Paulo Freire
Gostei + 0
29/09/2009
Rodrigo Mourão
Agora me diz um coisa, vc fala em selectmode como Multiple então sua intenção seria poder selecionar duas profissões por exemplo? Ou sua intenção e permitir que o usuario selecione um profissao, um tratamento ou uma escolaridade e fazer um filtro em cima destes parametros de modo que fique dinâmico.
Eu fiquei na dúvida eu acredito q segunda opção mais viável e mais pratica. Podemos montar o Select Dinamicamente. Pode me confirmar a intenção !!
Abs!!
Gostei + 0
30/09/2009
Paulo Freire
Valeu
Gostei + 0
30/09/2009
Rodrigo Mourão
Posso te pedir um favor, teria como mandar a sua aplicação, pois ja esta toda montada e inclisive pq usar procedure assim ganhamos tempo e outro presico ver como vc esta carregando o ListBox.
Se nao puder nao tem problema eu montar uma aqui mas pode demorar um pouco.
abs!1
Gostei + 0
01/10/2009
Paulo Freire
Gostei + 0
01/10/2009
Paulo Freire
Gostei + 0
01/10/2009
Rodrigo Mourão
https://www.devmedia.com.br/imagens/videos/4/Video%20disco%20virtual.htm
Abs!!!
P.S.: Não esqueca de passar o link !!!
Gostei + 0
02/10/2009
Paulo Freire
http://video.devmedia.com.br/discovirtual/81635/suportes/ShalomWeb.rar
São as paginas Parametrizado.aspx e EnviarEmails.aspx que utilizo os ListBox
O scrito do banco é esse
http://video.devmedia.com.br/discovirtual/81635/suportes/ScriptDataBase_ShalomWeb.rar
Qualquer dúvida estamos aqui, obrigadão
Paulo
Gostei + 0
03/10/2009
Rodrigo Mourão
Ja beixei e montei o projeto com o banco aqui. Peço que aguarde mais um pouco estou realizando testes para tentar resolver seu problema.
Abs!!
Gostei + 0
03/10/2009
Rodrigo Mourão
Vamos la primeiro temos quel alterar a procedure [spParametrizado] atualmente os parametros são smallint mude para varchar:
@IDGRUPO AS varchar,
@IDTRATAMENTO AS varchar,
@IDPROFISSAO AS varchar,
@IDIGREJA AS varchar,
@IDESCOLARIDADE AS varchar,
@IDESTADOCIVIL AS varchar,
@SEXO AS varchar
Eu vou mostar a mudanca no grupo, mas basta fazer a mesma coisa para os outros parametros. Veja como fica a alteracao para o parametro Grupo:
IF (@IDGRUPO IS NOT NULL)
BEGIN
SET @SQL = @SQL + ' AND IDGRUPO in ("' + @IDGRUPO + '")'
END
Para entender, sai o = e entra o IN () isso pq agora poderemos pegar não um mais varios grupos. Faca o mesmo para os outros parametros.
Agora vamos ao Delphi. No clique do botao filtrar a pagina parametrizacao antes do codigo que ja exista vc terar uqe pegar os codigos dos grupos selecionados e passar para o select. Eu criei uma variavel Grupo e fiz um loop. Veja:
for i := 0 to ListBox_Grupos.Items.Count-1 do
begin
if ListBox_Grupos.Items[I].Selected then
Grupo := Grupo + ListBox_Grupos.Items[I].Value+',';
end;
Grupo := Grupo.Remove(Grupo.Length,1);
Como estou colocando ID,ID,ID, no final eu delete a ultima virgula. Depois eu passo o grupo para o procedure.
Conn := SqlConnection.Create(ConfigurationManager.ConnectionStrings['ConexaoShalom'].ToString);
Comand := SqlCommand.Create('spParametrizado', Conn);
Comand.CommandType := CommandType.StoredProcedure;
Comand.Parameters.Add('@IDGRUPO', Grupo);
Faça o loop com os outros compoenntes.
Como falei nao testei a aplicacao pois nao consigo conectar na base, mas a procedure compilou legal e a aplicacao tambem.
Qualquer coisa e so falar !!!
Abs!!1
Gostei + 0
05/10/2009
Paulo Freire
procedure TParametrizado.btFiltrar_Click(sender: System.Object; e: System.EventArgs);
var
Comand : SqlCommand;
Conn : SqlConnection;
SqlReader : SqlDataReader;
Grupo, Tratamento, Profissao, Igreja, Escolaridade, EstadoCivil,
Sexo : string;
i : integer;
begin
For i := 0 to ListBox_Grupos.Items.Count-1 do
begin
if ListBox_Grupos.Items[I].Selected then
Grupo := Grupo + ListBox_Grupos.Items[I].Value+',';
end;
Grupo := Grupo.Remove(Grupo.Length,1);
For i := 0 to ListBox_Tratamentos.Items.Count-1 do
begin
if ListBox_Tratamentos.Items[I].Selected then
Tratamento := Tratamento + ListBox_Tratamentos.Items[I].Value+',';
end;
Tratamento := Tratamento.Remove(Tratamento.Length,1);
For i := 0 to ListBox_Profissoes.Items.Count-1 do
begin
if ListBox_Profissoes.Items[I].Selected then
Profissao := Profissao + ListBox_Profissoes.Items[I].Value+',';
end;
Profissao := Profissao.Remove(Profissao.Length,1);
For i := 0 to ListBox_Igreja.Items.Count-1 do
begin
if ListBox_Igreja.Items[I].Selected then
Igreja := Igreja + ListBox_Igreja.Items[I].Value+',';
end;
Igreja := Igreja.Remove(Igreja.Length,1);
For i := 0 to ListBox_Escolaridade.Items.Count-1 do
begin
if ListBox_Escolaridade.Items[I].Selected then
Escolaridade := Escolaridade + ListBox_Escolaridade.Items[I].Value+',';
end;
Escolaridade := Escolaridade.Remove(Escolaridade.Length,1);
For i := 0 to ListBox_EstadoCivil.Items.Count-1 do
begin
if ListBox_EstadoCivil.Items[I].Selected then
EstadoCivil := EstadoCivil + ListBox_EstadoCivil.Items[I].Value+',';
end;
EstadoCivil := EstadoCivil.Remove(EstadoCivil.Length,1);
For i := 0 to ListBox_Sexo.Items.Count-1 do
begin
if ListBox_Sexo.Items[I].Selected then
Sexo := Sexo + ListBox_Sexo.Items[I].Value+',';
end;
Sexo := Sexo.Remove(Sexo.Length,1);
Conn := SqlConnection.Create(ConfigurationManager.ConnectionStrings['ConexaoShalom'].ToString);
Comand := SqlCommand.Create('spParametrizado', Conn);
Comand.CommandType := CommandType.StoredProcedure;
Comand.Parameters.Add('@IDGRUPO', Grupo);
Comand.Parameters.Add('@IDTRATAMENTO', Tratamento);
Comand.Parameters.Add('@IDPROFISSAO', Profissao);
Comand.Parameters.Add('@IDIGREJA', Igreja);
Comand.Parameters.Add('@IDESCOLARIDADE', Escolaridade);
Comand.Parameters.Add('@IDESTADOCIVIL', EstadoCivil);
Comand.Parameters.Add('@SEXO', Sexo);
Conn.Open;
SqlReader := Comand.ExecuteReader;
if SqlReader.HasRows then
begin
try
GridViewParametrizado.DataSource := SqlReader;
GridViewParametrizado.DataBind;
finally
Conn.Close;
end;
end else
MessageScript( Page, 'Não foram encontrados Registros conforme Selecionados !!!');
end;
Gostei + 0
05/10/2009
Paulo Freire
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)