none
Convertir un tipo de Dato GUID para hacer Inserción RRS feed

  • Pregunta

  • Buenas a toda la comunidad, tengo una duda de cómo ingresar un tipo de dato GUID que desde mi base de datos es uniqueidentifier. Estoy trabajando en capas, donde en la parte de presentación hago referencia al dato a través de la capa de negocio, pero no se como hacer la conversión. En la tabla donde debo insertar mis datos, ahí tengo que agregar un guid perteneciente a otra tabla. Ejemplo:

    private void Guardar_ItemClick(object sender, ItemClickEventArgs e)
    {

        Negocio Tabla1 = New Negocio ();

        Clase datos= New Clase();

        datos.Id_Tabla1= GUID(txt.ID.Text);    <------- He aquí mi error... (éste dato lo he declarado de tipo GUID en mi clase de Negocio)

        datos.Nombres= txtNombres.Text;

        Tabla1.GuardarDatos(datos);    

    }

    Entonces, cómo puedo hacer esa conversión?

            


    domingo, 28 de julio de 2019 20:18

Respuestas

  • Gracias Leandro por tu interés, lo he puesto así como tú dices, pero el error lo presento en la conversión

    private void Guardar_ItemClick(object sender, ItemClickEventArgs e)
    {

        Negocio Tabla1 = New Negocio ();

        Clase datos= New Clase();

        datos.Id_Tabla1= GUID.Parse(ComboBox1.Text);   <----- Aquí mi error 

        datos.Nombres= txtNombres.Text;

        Tabla1.GuardarDatos(datos);    

    }

    ESTE ES EL ERROR QUE ME ARROJA:

    Información adicional: Guid debe contener 32 dígitos con 4 guiones (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).


    lunes, 29 de julio de 2019 2:26
  • Para hacer la conversión, existe el método Guid.Parse, que se usa igual que si tuvieses que convertir un número o una fecha llamando a int.Parse o DateTime.Parse.

    Sin embargo, es un poco raro que tengas que convertir un Guid que se encuentra en un TextBox. Normalmente cuando se usa un Guid en una base de datos, es un identificador puramente interno que no resulta de interés para los usuarios, y no se muestra en pantalla ni se permite que lo tecleen. Se deja que se genere automáticamente la primera vez, y cuando hay que enlazar dos tablas se pasa directamente el Guid de una a la otra en binario sin que se haga nunca una conversión.
    domingo, 28 de julio de 2019 20:36
    Moderador
  • Yo no tecleo el id, lo mando a llamar desde un combobox como ValueMember y DisplayMember el nombre que quiero que me muestre. Entonces me aparece este error:

    Error 2 Argumento 1: no se puede convertir de 'object' a 'string'. Es que lo hice así:

    private void Guardar_ItemClick(object sender, ItemClickEventArgs e)
    {

        Negocio Tabla1 = New Negocio ();

        Clase datos= New Clase();

        datos.Id_Tabla1= GUID.Parse(ComboBox1.SelectedValue);    

        datos.Nombres= txtNombres.Text;

        Tabla1.GuardarDatos(datos);    

    }

    En el Evento load del formulario:

                DataTable tabla= new DataTable();
                Negocio VP = new Negocio();
                tabla = VP.MostrarComboBox();

                ComboBox1.DataSource = tabla;
                ComboBox1.DisplayMember = "Nombres";
                ComboBox1.ValueMember = "Id_Tabla1";

    domingo, 28 de julio de 2019 21:29

Todas las respuestas

  • Para hacer la conversión, existe el método Guid.Parse, que se usa igual que si tuvieses que convertir un número o una fecha llamando a int.Parse o DateTime.Parse.

    Sin embargo, es un poco raro que tengas que convertir un Guid que se encuentra en un TextBox. Normalmente cuando se usa un Guid en una base de datos, es un identificador puramente interno que no resulta de interés para los usuarios, y no se muestra en pantalla ni se permite que lo tecleen. Se deja que se genere automáticamente la primera vez, y cuando hay que enlazar dos tablas se pasa directamente el Guid de una a la otra en binario sin que se haga nunca una conversión.
    domingo, 28 de julio de 2019 20:36
    Moderador
  • Yo no tecleo el id, lo mando a llamar desde un combobox como ValueMember y DisplayMember el nombre que quiero que me muestre. Entonces me aparece este error:

    Error 2 Argumento 1: no se puede convertir de 'object' a 'string'. Es que lo hice así:

    private void Guardar_ItemClick(object sender, ItemClickEventArgs e)
    {

        Negocio Tabla1 = New Negocio ();

        Clase datos= New Clase();

        datos.Id_Tabla1= GUID.Parse(ComboBox1.SelectedValue);    

        datos.Nombres= txtNombres.Text;

        Tabla1.GuardarDatos(datos);    

    }

    En el Evento load del formulario:

                DataTable tabla= new DataTable();
                Negocio VP = new Negocio();
                tabla = VP.MostrarComboBox();

                ComboBox1.DataSource = tabla;
                ComboBox1.DisplayMember = "Nombres";
                ComboBox1.ValueMember = "Id_Tabla1";

    domingo, 28 de julio de 2019 21:29
  • hola

    >>Error 2 Argumento 1: no se puede convertir de 'object' a 'string'.

    cambia el orden en que asignaslos datos al combo

    ComboBox1.DisplayMember = "Nombres";
    ComboBox1.ValueMember = "Id_Tabla1";
    
    ComboBox1.DataSource = tabla;

    ubica el DataSource al final, asi el ValueMember tomara el valor del id que es el guid

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 28 de julio de 2019 23:15
  • Gracias Leandro por tu interés, lo he puesto así como tú dices, pero el error lo presento en la conversión

    private void Guardar_ItemClick(object sender, ItemClickEventArgs e)
    {

        Negocio Tabla1 = New Negocio ();

        Clase datos= New Clase();

        datos.Id_Tabla1= GUID.Parse(ComboBox1.Text);   <----- Aquí mi error 

        datos.Nombres= txtNombres.Text;

        Tabla1.GuardarDatos(datos);    

    }

    ESTE ES EL ERROR QUE ME ARROJA:

    Información adicional: Guid debe contener 32 dígitos con 4 guiones (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).


    lunes, 29 de julio de 2019 2:26