Jump to content

"Index was outside the bounds of the array"-erro


ninaOsorio
 Share

Recommended Posts

Ola. Eu estou com um erro e gostava muito que me ajudassem. O meu programa serve para reservar as salas de aula.

Eu para ver se o programa está a ler os dados da base de dados em Access decidi buscar os dados atraves do getstring para uma listbox.

Só que aparece este erro: Index was outside the bounds of the array

Alguém pode me ajudar?

Beijinhos

Link to comment
Share on other sites

Esse erro indica que estás a tentar obter um valor que não existe no array.

Por exemplo, o teu array tem 20 posições e estás a pedir os valores da posição 21.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Mas eu nao estou a usar arrays... vou deixar aqui o meu codigo pode ser que alguem consiga descobrir onde errei:

            OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=J:/Rascunho1.mdb");
            string sql = "SELECT * FROM Reserva";
            try
            {
                conexao.Open();
                MessageBox.Show("Está conectado!");
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message, "**** ERRO ****", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            OleDbDataAdapter OleDA = new OleDbDataAdapter(sql, conexao);

            DataSet ods = new DataSet();
            OleDA.Fill(ods, "Reserva");

            //criar um objeto Data Row
            DataRow oDR = ods.Tables["Reserva"].NewRow();

            //Preencher o datarow com valores
                if (txtNome.Text == "")
                {
                    MessageBox.Show("Tem que inserir o nome do professor!");
                }
                else
                {
                    string sqlExemplo = "SELECT Professor FROM Reserva WHERE Professor = 'Paula Martins'";
                    OleDbCommand comando = new OleDbCommand(sqlExemplo, conexao);
                    OleDbDataReader lerComando = comando.ExecuteReader();
                    MessageBox.Show("ola");
                    while (lerComando.Read()) 
                    {
                        lbox.Items.Add(lerComando.GetString(2));
                    }

                    oDR["Professor"] = txtNome.ToString();
                    oDR["DiaInicialMes"] = cbDia.SelectedItem.ToString();
                    oDR["DiaFinalMes"] = cbDia.SelectedItem.ToString();
                    oDR["DiaSemana"] = cbSemana.SelectedItem.ToString();
                    oDR["HoraInicial"] = cbHoraInicial.SelectedItem.ToString();
                    oDR["HoraFinal"] = cbHoraFinal.SelectedItem.ToString();
                    oDR["MesInicio"] = cbMes.SelectedItem.ToString();
                    oDR["MesFinal"] = cbMes.SelectedItem.ToString();
                    oDR["Sala"] = cbSala.SelectedItem;
                    oDR["Razao"] = cbRazao.SelectedItem.ToString();

                    //Incluir um datarow ao dataset
                    ods.Tables["Reserva"].Rows.Add(oDR);

                    //Usar o objeto Command Bulder para gerar o Comandop Insert 
                    OleDbCommandBuilder oCB = new OleDbCommandBuilder(OleDA);

                    //Atualizar o BD com valores do Dataset 
                    OleDA.Update(ods, "Reserva");

                    MessageBox.Show("A Reserva foi realizada com êxito!");

                    oCB.Dispose();
                }
        
            //liberar o data adapter , o dataset , o comandbuilder e a conexao
            OleDA.Dispose();
            ods.Dispose();
            conexao.Dispose();
Link to comment
Share on other sites

lbox.Items.Add(lerComando.GetString(2));

Provavelmente o erro está aqui neste 2

Também sou da mesma opinião. Dado que estás apenas a ir buscar o campo Professor e o que faz o 2 é para ir buscar o a coluna de índice 2 - atenção que o zero também é numero !!! - aprendi isso na praxe  🙂

O que precisas de fazer é alterar o teu código para:

while (lerComando.Read())
{
lbox.Items.Add(lerComando.GetString(0));
}

Espero ter ajudado.

Pedro Martins

Sharing is Knowledge!

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

Link to comment
Share on other sites

Pois, mas isso não importa. O que importa são os campos que vais ler, neste caso apenas o Professor  🙂

Já agora... esse código não faz muito sentido.

Porque razão queres obter o Nome do Professor das Reservas, em que o nome do professor já o sabes? (Paula Martins). E ainda por cima popular uma combobox com o mesmo nome, N vezes?

O campo que deves precisar deverá ser o ID da Reserva, não?

Pedro Martins

Sharing is Knowledge!

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

Link to comment
Share on other sites

o que eu queria mesmo era pegar nos valores da base de dados e fazer uma comparacao com os valores inseridos pelo utilizador para que não possa existir duas reservas iguais. mas para isso tenho que introduzir os dados da bd para uma variavel e por isso pus numa list box para ver se inseria mas nao estou a conseguir

Link to comment
Share on other sites

Hum... Os campos DiaInicialMes, DiaFinalMes, DiaSemana, HoraInicial, HoraFinal, MesInicio, MesFinal representam o quê? As datas de Início e Fim?

Se assim é, não podes utilizar antes campos do tipo Data / Hora? É mais simples, para depois calculares as sobreposições.

Ainda em relação às sobreposições... Existem três tipos:

- Totalmente sobreposta (a tua nova reserva está totalmente dentro de outra reserva já existente);

- Inicialmente sobreposta (o início da tua nova reserva está sobreposta a outra reserva já existente);

- Finalmente sobreposta (o fim da tua nova reserva está sobreposta a outra reserva já existente);

Pedro Martins

Sharing is Knowledge!

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

Link to comment
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
 Share

×
×
  • 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.