none
codigo generador de clave primaria RRS feed

Todas las respuestas

  • No se ha entendido nada. ¿Qué quiere decir "letra como clave primaria"? ¿Quieres que la clave primaria sea un char(1)? Eso limitará considerablemente el tamaño de la tabla.

    Creo que deberías extenderte mucho más en la redacción de tu pregunta, explicando claramente qué es lo que quieres conseguir y dónde exactamente está el problema. Me imagino que el problema no estará en el código de C#, dado que la pregunta está en el foro de SQL Server, así que presumiblemente tienes alguna dificultad con la sintaxis de las sentencias SQL que se generan o con el comportamiento de la clave primaria. Para que te puedan dar una respuesta en el foro, tienes que explicar bien todo esto, exponiendo con mucho más detalle el problema concreto que se te presenta.

    lunes, 21 de enero de 2019 7:30
  • como dice el amigo Alberto, has de explicarte un poquito mas para que podamos ayudarte.

    Por otra parte, no se hasta que punto eso es un requisito de negocio, pero si lo es, yo intentaría replantearlo. sobre todo si el tamaño de esa clave es grande.


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Propuesto como respuesta Pedro Alfaro martes, 22 de enero de 2019 21:48
    martes, 22 de enero de 2019 10:07
    Moderador
  • Hola tengo este codigo pero me sañala error 

            private void Auto()
            {
                int num = 0;

                {
                    conn.Open();
                    string sql = ("SELECT MAX(ID) From CLIENTE");
                    var cmd = new SqlCommand(sql, conn);
                    cmd.Connection = conn;
                    // si no existe ningun registro
                    if ((IsDBNull(cmd.ExecuteScalar)))
                    {
                        num = 1;

                        txt_auto.Text = "P00" + num.ToString();
                    }
                    else
                    {
                        // de lo contrario al valor maximo le sumas 1
                        num = cmd.ExecuteScalar + 1;

                        // defines tu formato
                        txt_auto.Text = "P00" + num.ToString();
                    }
                    cmd.Dispose();
                }
            }

    Muchas gracias por tu ayuda

    viernes, 1 de febrero de 2019 1:19
  • Hola Jheajoni:

     try
                {
                    string consulta2 = "Select isnull(max(id),0)+1 from cliente;";
                    int num = 0;
                    var ConnectionString = @"Password=testForos19;Persist Security Info=True;User ID=testForos;Initial Catalog=ejUno;Data Source=ESQUINERO;";
    
                    using (SqlConnection connection = new SqlConnection(ConnectionString))
                    {
                        connection.Open();
                        var cmd = new SqlCommand(consulta2, connection);
                        
                        num =(int)cmd.ExecuteScalar();
                        txt_auto.Text = "POO" + num.ToString();
                    } 
                }
                catch (Exception e) 
                {
                    MessageBox.Show ("Excepción en método: "+e.ToString());                 
                }
    

    Espero te el código te ayude. Fijate en que te he cambiado la consulta añadiendole un isnull, además he metido tu conexión en un using para que ocurra lo que ocurra, siempre funcione dispose, para cerrar la conexión y lo he envuelto en un try catch para que tengas conocimiento de lo que ocurre cuando falla.

    isnull

    https://docs.microsoft.com/es-es/sql/t-sql/functions/isnull-transact-sql?view=sql-server-2017


    viernes, 1 de febrero de 2019 5:37
  • Hola tengo este codigo pero me sañala error 

    Cuando pongas una pregunta en los foros, acostúmbrate a no decir nunca "me señala error". Hay que decir exactamente cuál es el error, y señalar el sitio exacto en el que ocurre. Copia el mensaje de error completo y detallado, indicando la línea en la que ocurre.

    A la vista de tu código, y a falta de más detalles sobre el error, el único problema sintáctico que le veo es este:

    num = cmd.ExecuteScalar + 1;

    Dado que ExectueScalar devuelve un Object, es necesario agregar un "cast" para convertirlo a int:

    num = (int)cmd.ExecuteScalar + 1;

    Pero, claro, puede ser que además tengas algún otro error; si hubieras puesto el mensaje de error e indicado su sitio exacto, habría sido mucho más fácil ayudar con él.

    viernes, 1 de febrero de 2019 7:31