Jump to content

Erro "parameter index is out of range"


Ralado

Recommended Posts

Viva,

O erro "index is out of range" significa que estás a aceder a uma posição que não existe numa coleção (possivelmente array).

Caso seja um ciclo for, em .net as coleções começam por 0 e vão até à posição tamanho-1.

Exemplo de um ciclo for:
 

string[] meses = { "Janeiro", "Fevereiro", "Março" };

for (int i = 0; i < meses.Length; i++)
{
  Console.WriteLine(meses[i]);
}

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Link to post
Share on other sites

desculpe eu estou tentando aprender entao estou bem perdido

este é meu codigo

public object Salvar(ClienteDTO pCli)
        {
            string lSql = string.Empty;
            if (pCli.Idcliente == 0)
            {
                lSql = "INSERT INTO tb_cliente (DataCadastro, Nome, CPF, Logradouro, Localidade, UF, Bairro, Numero, Cep, Telefone, Celular, Email, IdFuncionario, LimiteCredito) ";
                lSql += " VALUES(@DataCadastro,@Nome,@CPF,@Logradouro,@Localidade,@UF,@Bairro,@Numero,@Cep,@Telefone,@Celular,@Email,@IdFuncionario,@LimiteCredito);";
                lSql += " SELECT LAST_INSERT_ID();";
            }
            else
            {
                lSql = "UPDATE tb_cliente SET DataCadastro=?,Nome=?,CPF=?,Logradouro=?,Localidade=?,UF=?,Bairro=?,Numero=?,Cep=?,Telefone=?,Celular=?,Email=?,LimiteCredito=?,IdFuncionario=?";
                lSql += string.Format(" WHERE tb_cliente.Idcliente = {0}", pCli.Idcliente);
            }
            
            lAcessoDados.LimparParametro();// Limpar parâmetro salvar            
            lAcessoDados.AdicionarParametro("@Nome", pCli.Nome);
            lAcessoDados.AdicionarParametro("@CPF", pCli.CPF);
            lAcessoDados.AdicionarParametro("@Logradouro", pCli.Logradouro);
            lAcessoDados.AdicionarParametro("@Localidade", pCli.Localidade);
            lAcessoDados.AdicionarParametro("@UF", pCli.UF);
            lAcessoDados.AdicionarParametro("@Bairro", pCli.Bairro);
            lAcessoDados.AdicionarParametro("@Numero", pCli.Numero);
            lAcessoDados.AdicionarParametro("@Cep", pCli.Cep);
            lAcessoDados.AdicionarParametro("@Telefone", pCli.Telefone);
            lAcessoDados.AdicionarParametro("@Celular", pCli.Celular);
            lAcessoDados.AdicionarParametro("@Email", pCli.Email);
            lAcessoDados.AdicionarParametro("@LimiteCredito", pCli.LimiteCredito);
            lAcessoDados.AdicionarParametro("@IdFuncionario", pCli.Cadastrante.IdFuncionario);
            if (pCli.Idcliente == 0) lAcessoDados.AdicionarParametro("@DataCadastro", pCli.DataCadastro);

            if (pCli.Idcliente == 0)
            {
                return lAcessoDados.ExecutarManipulacao(CommandType.Text, lSql).ToString();
            }
            else
            {
                lAcessoDados.ExecutarManipulacao(CommandType.Text, lSql);
                return pCli.Idcliente;
            }

        }

meu botao salvar

private void BtnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                if (Metodos.MensagemSalvar() == DialogResult.Yes)
                {
                    ClienteDTO lCli = new ClienteDTO()
                    {
                        Idcliente = txtId.Text == "" ? 0 : txtId.Text.ToInt(),
                        DataCadastro = dtpDataCad.Value,
                        Nome = txtNome.Text,
                        CPF = txtCpf.Text,
                        Logradouro = txtLogradouro.Text,
                        Localidade = txtLocalidade.Text,
                        UF = txtUf.Text,
                        Bairro = txtBairro.Text,
                        Numero = txtNumero.Text,
                        Cep = txtCep.Text,
                        Telefone = txtTelefone.Text,
                        Celular = txtCelular.Text,                      
                        Email = txtEmail.Text,
                        LimiteCredito = txtLimiCre.Text == "" ? 0 : txtLimiCre.Text.ToDecimal(),

                    };
                    lCli.Cadastrante = (FuncionarioDTO)cbCadastrante.SelectedItem;// mostrar o funcionario na combobox do cliente

                    lClienteBLL.Salvar(lCli);
                    if (lCli.Idcliente == 0)
                    {
                        Metodos.MensagemInserido();
                    }
                    else
                    {
                        Metodos.MensagemAlterado();
                    };
                }
                Metodos.LimparTextbox(tbcCadCliente.Controls); // Limpar textbox dentro de um tabcontrol
                Metodos.LimparMaskedTextbox(tbcCadCliente.Controls); //Limpa o Maskedtextbox dentro de um tabcontrol
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            txtNome.ReadOnly = true;//Desabilita o textbox
            txtCpf.ReadOnly = true;
            txtLogradouro.ReadOnly = true;
            txtLocalidade.ReadOnly = true;
            txtUf.ReadOnly = true;
            txtBairro.ReadOnly = true;
            txtNumero.ReadOnly = true;
            txtCep.ReadOnly = true;
            txtTelefone.ReadOnly = true;
            txtCelular.ReadOnly = true;
            txtEmail.ReadOnly = true;
            txtLimiCre.ReadOnly = true;
            
            btnNovo.Enabled = true;
            btnExcluir.Enabled = false;
            btnSalvar.Enabled = false;
            txtNome.Focus(); //Leva o foco direto para o textbox Nome
        }

Link to post
Share on other sites

quando ele chaga neste ponto

return pCli.Idcliente ele deveria ir para meu metodo salvar em bll

mas ele vai direto para o exeption 

 {
                lAcessoDados.ExecutarManipulacao(CommandType.Text, lSql);
                return pCli.Idcliente;
            }

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.