Visual Basic.NET - Insertar datos Listview a BD SQL Server

 
Vista:
Imágen de perfil de Erick

Insertar datos Listview a BD SQL Server

Publicado por Erick (8 intervenciones) el 16/08/2016 18:38:58
Hola amigos. Acudo a Uds por lo siguiente.

Sucede que tengo una tabla Artistas, Evento y Detalle Evento. En esta ultima, va incluido el Id_Det_Evento que se crea automaticamente, el Id_Evento creado previamente y el Id_Artista.
En un Form tengo un Listview que es llenado por medio de un boton el cual extrae los Artistas cargados en un Combobox. El problema que me surge ahora es que no sé cómo insertar todos esos Artistas contenido a en el Listview e insertarlos en el campo Id_Artista de la tabla Detalle_Evento ya que este me pide el Id_Artista.
Por la web muchos hacian la insercion de datos por separado. En mi caso seria, insertar Nombre del Artista y el Valor de cada uno, pero a mi no me sirve ya que la tabla Detalle_Evento solo me pide Id_Artista.

Alguna ayuda que me puedan brindar por favor??
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 Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Insertar datos Listview a BD SQL Server

Publicado por Diego (190 intervenciones) el 17/08/2016 03:15:04
Hola Erick, no se entiende muy bien. Pero... utilizas algun dataset, datatable, alguna estructura en memoria para llenar los controles primero? Por que utilizas un listview y no un listbox?

Saludos y +bytes.
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 Erick

Insertar datos Listview a BD SQL Server

Publicado por Erick (8 intervenciones) el 17/08/2016 04:58:19
Lo que sucede es que Utilice un listview porque me es mas facil hacr 2 columnas que mostrara los datos que requeria, y la eliminacion de estos. Todo esto esta programado.
El problema es cómo insertar los Artistas que estan dentro del Listview en la tabla DETALLE_EVENTO el cual contiene el ID_ARTISTA y que, obviamente, el procedimiento de almacenado me lo pide.
Quiza me falten mas objetos para poder realizar la insercion correcta de los datos u utilizar otra manera de hacerlo.
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 Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Insertar datos Listview a BD SQL Server

Publicado por Diego (190 intervenciones) el 17/08/2016 19:28:01
Hola, sigo sin entender como llenas el listview, podrías pasar el codigo de como obtenes los datos de la base y como los ingresas a la lista? Que campos intervienen, es importante saberlo porque, por ejemplo... Al usuario no le interesa saber el ID del artista, pero para tu programa es fundamental saberlo, entonces, una columna muesta el nombre del artista y eso es lo que ve el usuario, cuando seleccionas ese dato, de fondo el programa puede conocer el id del artista sin demasiada complicacion. Porque está en un DATATABLE, por ejemplo.

1
2
3
4
5
6
7
8
9
10
11
12
Dim conn As New SqlConnection("") <<<<< Aqui va tu cadena de conexion
Dim da As New SqlDataAdapter("SELECT idArtista, nombreArtista FROM artistas ORDER BY nombreArtista", conn)
Dim tablaArtistas As New DataTable
 
da.Fill(tablaArtistas)
tablaArtistas.PrimaryKey = New DataColumn() {tablaArtistas.Columns("idArtista")}
 
With ListBox1
	.DataSource = tablaArtistas
	.DisplayMember = "nombreArtista"
	.ValueMember = "idArtista"
End With


Por ejemplo, con ese codigo, conectas a la DB, ejecutas una consulta y llenas un datatable, lo conectas con un listbox, elegis que valor se visualiza y que valor representa (IdArtista)

Cuando un usuario selecciona un item de la lista, con este codigo recuperas el IdArtista:
1
2
3
4
5
6
7
8
9
Dim comando as new sqlCommand("INSERT INTO Detalle_Evento(id_artista, id_evento) VALUES (" & listbox1.selectedvalue & ", " & variable_donde_tengas_asignado_el_numero_de_evento & ")", conn) <<<< Se supone que conn es una variable globar de conexion
 
try
       conn.open
       comando.executeNonQuery()
       conn.close
catch (ex as Exception)
      'Mensaje de error.......
end try


Si queres brindar un detalle mas extenso o mas columnas del mismo modo, te recomiendo utilices un datagridview, aunque sean solo 2 columnas. Sin embargo recorriendo con un for-each el datatable, podes llenar manualmente el listview.

Bueno, espero tu código, a ver si te puedo ayudar un poco mas.
Saludos y +bytes
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 Erick

Insertar datos Listview a BD SQL Server

Publicado por Erick (8 intervenciones) el 17/08/2016 20:03:25
Hola Diego.
No habia entendio tu pregunta. Aqui te pego el codigo que uso para llenar el Listview por medio de un boton llamado btnARTISTAS.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub btnARTISTAS_MouseClick(sender As Object, e As MouseEventArgs) Handles btnARTISTAS.MouseClick
 
	Dim total As Integer
	Dim i As Integer
 
	If ValidateChildren() = True And cbARTISTAS.Text <> "" Then
 
		list_ARTISTA_AGREGADO.Items.Add(cbARTISTAS.Text)
		list_ARTISTA_AGREGADO.Items(list_ARTISTA_AGREGADO.Items.Count - 1).SubItems.Add(txtVALOR_ARTISTA.Text)
 
		For i = 0 To list_ARTISTA_AGREGADO.Items.Count - 1
			total = total + list_ARTISTA_AGREGADO.Items(i).SubItems(1).Text
		Next
		txtTOTAL_ARTISTA.Text = total
 
	Else
 
		MessageBox.Show("Debe seleccionar un Artista.", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
 
	End If
 
End Sub

Y este codigo es el que utilizo para eliminar los Artistas seleccionados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub btnQUITAR_ARTISTA_MouseClick(sender As Object, e As MouseEventArgs) Handles btnQUITAR_ARTISTA.MouseClick
 
	Dim lista As ListViewItem = New ListViewItem()
	Dim total, i As Integer
 
	If list_ARTISTA_AGREGADO.Items.Count = 0 Then
 
		MessageBox.Show("La lista se encuentra vacía.", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
 
	Else
 
		For Each lista In list_ARTISTA_AGREGADO.SelectedItems
			lista.Remove()
 
			For i = 0 To list_ARTISTA_AGREGADO.Items.Count - 1
				total = total + list_ARTISTA_AGREGADO.Items(i).SubItems(1).Text
			Next
			txtTOTAL_ARTISTA.Text = total
 
		Next
 
	End If
 
End Sub

Estaba pensando que cada vez que seleccione un Artista del combobox, el boton AGREGAR deberia contener el codigo sql para insertar el artista en la base de datos, tomando tambien, el ID_EVENTO que se mostrara en el GroupoBox de mas arriba, previo ingreso del evento obviamente.
El tema es que despues si quiero eliminar el artista ingresado de la base de datos, de qué manera hacerlo mas facil?? Porque si selecciono el artista desde el listview, no entiendo cómo obtener el ID de éste para proceder a su eliminacion.

Adjunto una captura que contiene parte de la interfaz que tengo.


Captura
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 Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Insertar datos Listview a BD SQL Server

Publicado por Diego (190 intervenciones) el 19/08/2016 23:23:11
Disculpa por no haber respondido antes. Por lo que veo llenas el listview con los valores de un combobox y al costo del artista lo tomas de un textbox. Pues bien, me da a pensar que la clave está en como llenas el combo ese que tiene los nombres de los artistas.

Vuelvo a insistir, si utilizas un datatable, sería mucho mas simple.
Un saludo y +bytes.
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 Erick

Insertar datos Listview a BD SQL Server

Publicado por Erick (8 intervenciones) el 20/08/2016 00:24:22
Hola Diego. Agradezco tu tiempo.
Mira, el problema era que llenana de mala manera el combobox. Dentro de ese llamado no tomaba el ID, por lo tanto, no lo enviaba tampoco al Listview, solo el nombre y el valor. El codigo que utilice para el llenado del combobox lo cambie por otro que utilice en otros Forms, y funciono. Modifique el Listview para que mostrara el ID y añadi al lado dd este un checkbox para su posterior eliminacion.
Ahora funcionando todo de manera excelente.
Saludos Diego. Una vez mas, gracias por tu tiempo. Un abrazo.
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