Principales respuestas
Visualizar el número de un número guardado en una tabla sql en un form c#

Pregunta
-
Saludos, lo que quiero lograr en esta ocasión es que al momento de abrir el form
Se visualise el ultimo número que tiene guardado la tabla del sql y que al momento
De darle a registrar los datos se inserte el número actual y se visualise el siguiente número en el form.
joel
Respuestas
-
Una pregunta, emm ¿estás visualizando el número en un datagridview o en un simple Textbox o en un Label? . No has especificado bien.
Si es en un TextBox o en un Label, en este caso sería ...public void mostrar_ultimo_Dato() { SqlCommand comando = new SqlCommand(); String instruccion = "SELECT MAX(studentID) as maximo FROM students"; comando.CommandType = CommandType.Text; comando.CommandText = instruccion; comando.Connection = clases.conexion.conex(); comando.ExecuteNonQuery(); SqlDataReader dr; dr = comando.ExecuteReader(); while (dr.Read()) { string ultimo_dato = dr["maximo"].ToString(); label1.Text = ultimo_dato; } } private void Form1_Load(object sender, EventArgs e) { mostrar_ultimo_Dato(); }
- Marcado como respuesta joel201022 lunes, 18 de febrero de 2019 20:58
-
me esta dando error en esta linea
comando.Connection = clases.conexion.conex();
Esa llinea es la forma "abreviada" en la que el autor te estaba diciendo "mete dentro del comando.Connection la cadena de conexion adecuada para tu base de datos".
En otras palabras, tendrias que poner algo asi:
comando.Connection = "Aqui hay que poner una cadena de conexion";
Para no dejar las cadenas de conexion repartidas por todo el codigo, es razonable escribir una unica subrutina que la devuelva y eso es lo que habia hecho el autor de la respuesta dentro de clases.conexion.conex().
En cualquier caso, ¿qué hay que poner dentro de "Aqui hay que poner una cadena de conexion"? Pues nadie te lo puede decir sin conocer con todo detalle cuál es tu base de datos: tipo, nombre de servidor, nombre de base de datos, credenciales, etc etc. Con toda esa información se ensambla la cadena.
- Marcado como respuesta joel201022 miércoles, 20 de febrero de 2019 18:08
Todas las respuestas
-
Para visualizar el último número, puedes enviar un "select MAX(columna)" a la base de datos, y te devolverá el último número. Si eso lo metes en una subrutina, puedes llamarlo al abrir el form y también después de grabar para que se seleccione el siguiente. Ten cuidado si es una aplicación multi-usuario, porque podría ser que mientras se está mostrando en pantalla el último número, otro usuario grabe algo con ese mismo número, con lo que al llegar el momento de grabar desde tu formulario podría ser que el número que mostraste al principio ya no sea el último.
La forma de enviar el "select(max)" depende de qué tecnología de acceso a datos tengas implementada en tu programa. Ya que no has mencionado nada al respecto, te pongo un ejemplo de cómo se haría si estuvieses usando Entity Framework, pero el código variará muchísimo si estás usando otra cosa:
using (var ctx = new MiContextoDeDatos()) { var q = (from x in ctx.MiTabla select x.MiNumero).Max(); textBox1.Text = q.ToString(); }
Ojo, la primera vez, cuando no haya nada en la tabla, fallará al obtener el último número ya que no existirá ningún último número. Tendrás que prever qué es lo que quieres hacer en este caso especial y añadir en el código un tratamiento para este caso especial. -
Una pregunta, emm ¿estás visualizando el número en un datagridview o en un simple Textbox o en un Label? . No has especificado bien.
Si es en un TextBox o en un Label, en este caso sería ...public void mostrar_ultimo_Dato() { SqlCommand comando = new SqlCommand(); String instruccion = "SELECT MAX(studentID) as maximo FROM students"; comando.CommandType = CommandType.Text; comando.CommandText = instruccion; comando.Connection = clases.conexion.conex(); comando.ExecuteNonQuery(); SqlDataReader dr; dr = comando.ExecuteReader(); while (dr.Read()) { string ultimo_dato = dr["maximo"].ToString(); label1.Text = ultimo_dato; } } private void Form1_Load(object sender, EventArgs e) { mostrar_ultimo_Dato(); }
- Marcado como respuesta joel201022 lunes, 18 de febrero de 2019 20:58
-
Hola ReyneerLeon:
comando.ExecuteNonQuery(); SqlDataReader dr; dr = comando.ExecuteReader();
Para obtener un valor, supongo que será mejor ExecuteScalar y no llamar dos veces al "comando", amen de facilitarle una SqlConnection o lo que corresponda.
Tu código no puede ser funcional. Revisalo, que a lo mejor has trasladado algo diferente de lo que esperabas.
https://docs.microsoft.com/es-es/biztalk/adapters-and-accelerators/adapter-sql/executenonquery-executereader-and-executescalar-using-the-sql-adapter
-
Hola ReyneerLeon:
comando.ExecuteNonQuery(); SqlDataReader dr; dr = comando.ExecuteReader();
Para obtener un valor, supongo que será mejor ExecuteScalar y no llamar dos veces al "comando", amen de facilitarle una SqlConnection o lo que corresponda.
Tu código no puede ser funcional. Revisalo, que a lo mejor has trasladado algo diferente de lo que esperabas.
https://docs.microsoft.com/es-es/biztalk/adapters-and-accelerators/adapter-sql/executenonquery-executereader-and-executescalar-using-the-sql-adapter
Acabo de leer los links, sí y tienes razon. Nunca en mi vida he escuchado ese tal "ExecuteScalar". Pero bueno..., al menos el código que dí si devuelve la última fila según lo tengo probado.
-
-
me esta dando error en esta linea
comando.Connection = clases.conexion.conex();
Esa llinea es la forma "abreviada" en la que el autor te estaba diciendo "mete dentro del comando.Connection la cadena de conexion adecuada para tu base de datos".
En otras palabras, tendrias que poner algo asi:
comando.Connection = "Aqui hay que poner una cadena de conexion";
Para no dejar las cadenas de conexion repartidas por todo el codigo, es razonable escribir una unica subrutina que la devuelva y eso es lo que habia hecho el autor de la respuesta dentro de clases.conexion.conex().
En cualquier caso, ¿qué hay que poner dentro de "Aqui hay que poner una cadena de conexion"? Pues nadie te lo puede decir sin conocer con todo detalle cuál es tu base de datos: tipo, nombre de servidor, nombre de base de datos, credenciales, etc etc. Con toda esa información se ensambla la cadena.
- Marcado como respuesta joel201022 miércoles, 20 de febrero de 2019 18:08
-