none
Tengo un problema con insertar un dato en cierta casilla en mysql dependiendo de lo que se seleccione en la app web ASP.NET C# RRS feed

  • Pregunta

  • tengo una tabla en mysql con 10 columnas por ejemplo C, R, T , I , T-I etc.

    lo que quiero que si en un textbox le pongo que C en la base de datos aparezca una X en la C

    C, R, T , I , T-I

    X

         X

    algo asi, pero tengo puro if, todo esta bien si aparece solo la C, R, T O I pero si aparece T-I me dice que ya se inserto mi codigo es en c#

     mySqlCmd.Parameters.AddWithValue("_C", "");
                        mySqlCmd.Parameters.AddWithValue("_R", "");   SI NO PONGO ESTO ME DICE QUE NO SE ENCONTRO EL VALOR                                                                                              TODOS AUNQUE LOS TENGA EN EL IF
                        mySqlCmd.Parameters.AddWithValue("_E", "");
                        mySqlCmd2.Parameters.AddWithValue("_T", "");
                        mySqlCmd.Parameters.AddWithValue("_Te", "");
                        mySqlCmd.Parameters.AddWithValue("_Th", "");
                        mySqlCmd.Parameters.AddWithValue("_Tt", "");
                        mySqlCmd.Parameters.AddWithValue("_I", "");
                        mySqlCmd.Parameters.AddWithValue("_B", "");
                        mySqlCmd.Parameters.AddWithValue("_M", "");

                        if (CPeligrosidad.SelectedItem.ToString() == "C")
                        {
                            mySqlCmd.Parameters.AddWithValue("_C", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "R")
                        {
                            mySqlCmd.Parameters.AddWithValue("_R", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "E")
                        {
                            mySqlCmd.Parameters.AddWithValue("_E", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "T")
                        {
                            mySqlCmd.Parameters.AddWithValue("_T", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "Te")
                        {
                            mySqlCmd.Parameters.AddWithValue("_Te", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "Th")
                        {
                            mySqlCmd.Parameters.AddWithValue("_Th", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "Tt")
                        {
                            mySqlCmd.Parameters.AddWithValue("_Tt", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "I")
                        {
                            mySqlCmd.Parameters.AddWithValue("_I", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "B")
                        {
                            mySqlCmd.Parameters.AddWithValue("_B", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "M")
                        {
                            mySqlCmd.Parameters.AddWithValue("_M", "X");
                        }
                        else if (CPeligrosidad.SelectedItem.ToString() == "T-I")
                        {
                            mySqlCmd.Parameters.AddWithValue("_T", "X");
                            mySqlCmd.Parameters.AddWithValue("_I", "X");

                        }

     no se si hay otra forma me ayudaria mucho


    • Editado danielglez lunes, 2 de septiembre de 2019 12:57
    lunes, 2 de septiembre de 2019 12:56

Todas las respuestas

  • hola

    Porque diseñaste de esa forma la tabla, fue una pesima idea

    Si tienes valores que pueden variar en la seleccion se definen estos como registros, entonces la tabla solo tendria un unica columna

    NombreTabla Id PK Codigo

    //otras columnas

    entonces usas el INSERT para registrar directamente el codigo si selecciono un X, insertas en codigo una X si selecciono una T insertas en codigo una T

    Si selecciona mas de una opcion realizas tantos insert como codigos definas

    Pero NUNCA haces lo que describes de poner un X en una columna, se tratan los codigos como registros

    El problema que mencionas se debe a un pesimo diseño de la tabla

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 2 de septiembre de 2019 16:18
  • es que despues tengo que mandarlo a un gridview de ese formato, por que es un formato oficil de SEMARNAT una dependencia de gobierno de aqui en mexico, por que de hecho estaba pensando en que sea en lugar de 10 una columna que se refiera a peligrosidad,  refiriendoce si es TOXICO (T), TOXICO-INFLAMABLE, etc, pero al momento de mandarlo al gridview solo mostrara digmos ID: 1 , NOMBRE: tal , PELIGROCIDAD:T, siendo que tengo que mostrar el formato que la dependencia gubernamental menciona que son 10 columnas, no se si hay una forma para que la tabla sea una columna pero al momento de mandar a consultar se coloque la posicion correcta dependiendo de lo que se selecciono

     http://legismex.mty.itesm.mx/_tramites/SEMARNAT-07/07-027A.doc 



    • Editado danielglez lunes, 2 de septiembre de 2019 18:13
    lunes, 2 de septiembre de 2019 17:49
  • hola

    >>es que despues tengo que mandarlo a un gridview de ese formato

    Pero eso no tiene nada que ver porque se pueden transformar los datos, el modelo de datos no tiene que estar NUNCA condicionando por como lo presentas

    >>no se si hay una forma para que la tabla sea una columna pero al momento de mandar a consultar se coloque la posicion correcta dependiendo de lo que se selecciono

    FROM - Using PIVOT and UNPIVOT

    Convertir filas en columnas y columnas en filas en SQL Server

    quizas para pivotear mas facil seria mas simple que siempre registras todos los codigos y pones una columna adicional si aplica o no

    NombreTabla Id PK Codigo

    Aplica (columna bool)

    entonces insertas siempre todos los codigo que conoces y solo poner true/false entonces al tener todas las filas con los codigos posibles aplicar un PIVOT es mucho mas facil de pasar a columnas

    Pero pero insertar es tan simple como iterar las listas de codigo y ver si esa opcion fue marcada o no para indicar el valor de aplica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 2 de septiembre de 2019 20:02