Visual CSharp .NET - ayuda, mostrar el id maximo de una tabla

 
Vista:
Imágen de perfil de Dante

ayuda, mostrar el id maximo de una tabla

Publicado por Dante (3 intervenciones) el 17/02/2013 17:59:37
Hola a todos ya gracias por la ayuda. Mi duda la encontré en varios sitios, pero en todos no dan la ayuda definitiva. lo que pasa es que tengo una tabla de mi base de datos digamos llamada "Alumnos", y en esa tabla tengo los siguientes campos: "idalu", "nomalu", "apealu", "facalu" y "escalu";
si tengo ya registrado a 20 alumnos, y para registrar al alumno numero 21 quiero que en mi formulario aparezca el numero "21" en un TextBox. Ya lo intente de la siguiente forma:
1
2
3
4
5
6
7
8
private void MostrarIdAlumnol()
        {
            comando = new OleDbCommand("SELECT MAX(idalu) FROM Alumnos",conexion);
            da = new OleDbDataAdapter(comando);
            DataTable dt = new DataTable();
            da.Fill(dt);
            txtIdAlumno.Text = Convert.ToString(dt.Columns[0]);
        }


Pero por alguna razón en el TextBox me sale "Expr 1000", ya lo intente también con un DataReader de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void MostrarIdAlumnol()
        {
            comando = new OleDbCommand();
            comando.Connection = conexion;
            comando.CommandText = "SELECT * FROM Alumnos";
 
            conexion.Open();
            dr = comando.ExecuteReader(); //dr es el DataReader
 
            dr.Read();
            txtIdAlumno.Text = dr.GetString(0);
 
            conexion.Close();
 
        }


Pero esta me bota un error de parametros en el ExecuteReader. Agregare ademas que la base de datos esta en access y ademas en estos codigos solo quiero hacer apareces el ultimo numero, el siguiente numero es facil pero por el momento no logro hacer esto.
Espero que me puedan ayudar, yo seguire buscando la manera y si lo hallo la publicare gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dante

Resuelto

Publicado por Dante (3 intervenciones) el 17/02/2013 18:55:34
Bueno, después de buscar por la web y de revisar bien mi código, llegue a esta respuesta que probé y me funciono:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void MostrarIdAlumnol()
        {
            comando = new OleDbCommand();
            comando.Connection = conexion;
            comando.CommandText = "SELECT MAX(idalu) FROM Alumnos";
 
            conexion.Open();
            dr = comando.ExecuteReader(); //dr es el DataReader
 
            dr.Read();
            int id = dr.GetInt32(0);
            txtIdAlumno.Text = Convert.ToString(id + 1);
 
            conexion.Close();
        }


Mi error estaba en que el campo ID era de tipo numérico y yo lo quería obtener de tipo string, así mejor cree una variable de tipo int y ahí puse el id, luego lo convertí en tipo string sumádole una unidad antes.
Espero que les sirva a algunos. Buen dia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Resuelto

Publicado por William Alexander Brito Viñas (10 intervenciones) el 18/02/2013 21:27:28
Funciona pero no es lo mejor. Cada BD tiene una funcion propia la cual te devuelve cual es el proximo Id a generar en campos autonumericos. Por ejemplo con:
MySQL usar last_insert_id()
SQL Server usar ident_current('table_name')
Access 2k o superior usar @@IDENTITY
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dante

Resuelto

Publicado por Dante (3 intervenciones) el 22/02/2013 14:36:54
Interesante tu recomendación, voy a probarlo, en una tabla con id auto-numérico, la tabla con la que trabajaba no era auto-numérico. Gracias por el aporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar