Foros del Web » Programación para mayores de 30 ;) » .NET »

Pasar de Datagridview a Sql

Estas en el tema de Pasar de Datagridview a Sql en el foro de .NET en Foros del Web. Tengo cargado un datagrid con un archivo de excel le voy a realizar unos cambios y quiero despues guardar ese datagrid completo que tiene como ...
  #1 (permalink)  
Antiguo 21/02/2012, 08:35
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Pasar de Datagridview a Sql

Tengo cargado un datagrid con un archivo de excel le voy a realizar unos cambios y quiero despues guardar ese datagrid completo que tiene como 120 registros a una base de datos en sql 2008 y una tabla predeterminada
  #2 (permalink)  
Antiguo 21/02/2012, 09:32
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 5 meses
Puntos: 49
Respuesta: Pasar de Datagridview a Sql

Que tal valderramalex, concretamente donde radica tu duda, en la conexion a la BD??, en la ejecución del INSERT??, en el proceso para recorrer las filas del Grid??, explícate un poco mas....



Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #3 (permalink)  
Antiguo 21/02/2012, 10:19
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Pasar de Datagridview a Sql

Te copio lo dicho en el post antiguo.
Cita:
Hola valderramalex eso lo haces recorriendo filas con un for each. Ahora siempre deben ser específicos, en que lenguaje estas trabajando?. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 21/02/2012, 10:31
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

Que pena con ustedes, la verdad quiero aprender como hacer todo el procedimiento ya que solo tengo el codigo para cargar el excel al datagrid he buscado ejemplos pero no he encontrado uno concreto, he visto varios post que dicen que es mejor con un tableadapter, y otras cosas pero no se cual en si utilizar entonces creo que seria empezar desde la conexion, el proceso de leer las filas y el insert a la tabla
muchas gracias por su paciencia estoy trabajando en visual basic 2010
  #5 (permalink)  
Antiguo 21/02/2012, 10:58
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Pasar de Datagridview a Sql

Cita:
Iniciado por valderramalex Ver Mensaje
Que pena con ustedes, la verdad quiero aprender como hacer todo el procedimiento ya que solo tengo el codigo para cargar el excel al datagrid he buscado ejemplos pero no he encontrado uno concreto...
Hola valderramalex, ¿que pena por nosotros?.... Mejor haré que no leí esa parte... Al momento que se va a ayudar nose sabe el nivel de conocimientos que tiene la persona, por ello debes especificarnos toda la info necesaria para entenderte mejor. Como por ejemplo que estas recien empezando en este mundo de .NET y que no has trabajado con conecciones a BD para orientarte mejor. Siempre decir con qué lenguaje trabajas por que te podemos dar codigo de c# cuando en realidad necesitas vb.
Ahora te doy las ideas para que con ello puedas ver la luz a tu problema :
Código vb:
Ver original
  1. Using cnn = New SqlConnection("[Tu cadena de conexion]")
  2.    
  3.      cnn.Open()
  4.    
  5.      Dim sql As String = "INSERT INTO TUTABLA (campo1, campo2,campo3) VALUES (@campo1, @campo2,@campo3)"
  6.    
  7.      For Each fila As DataGridViewRow In DataGridview1.Rows
  8.          
  9.              Using command As New SqlCommand(sql, cnn)
  10.  
  11.                  command.Parameters.AddWithValue("@campo1", fila.Cells(0).Value)
  12.                  command.Parameters.AddWithValue("@campo2", fila.Cells(1).Value)
  13.                  command.Parameters.AddWithValue("@campo3", fila.Cells(2).Value)
  14.                  
  15.                  command.ExecuteNonQuery()
  16.                  
  17.              End Using
  18.          
  19.      Next
  20.  End Using

Para ver la cadena de conexion a SQL: http://www.connectionstrings.com/sql-server-2008

Si tienes mas dudas nos la comentas. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #6 (permalink)  
Antiguo 21/02/2012, 11:06
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

muchas gracias por su ayuda, este foto me ha ayudado muchisimo y espero poder ayudarlos tambien, tengo algunas dudas, 1 - para utilizar esa cadena de conexion utilizo el dataset que se crea cuando se da un nuevo origen de datos?, 2- el valor que dice @campo1 es el titulo de la columna en el datagrid o puede quedar en blanco.
Muchas gracias por la ayuda
  #7 (permalink)  
Antiguo 21/02/2012, 11:24
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Pasar de Datagridview a Sql

la cadena de conexion seria algo asi :
Data Source=TUPC\SQLEXPRESS;Initial Catalog=TUBASEDEDATOS;User Id=USUARIO;Password=PASSWORD;
Los @campo1 son el alias que tu le puedes poner y cambiar para diferenciarlos de los demas, por ejemplo tienes una tabla así :
Cita:
USUARIO
============
id
nombre
apellidos
lo que haces es :
"INSERT INTO USUARIO (id, nombre,apellidos) VALUES (@campoId, @campoNombre,@campoApellidos)"
Y en esta parte :
command.Parameters.AddWithValue("@campoId", fila.Cells(0).Value)
command.Parameters.AddWithValue("@campoNombre", fila.Cells(1).Value)
command.Parameters.AddWithValue("@Apellidos", fila.Cells(2).Value)


Y esta otra : fila.Cells(2).Value es donde le pasas el valor de la columna a extraer que puede ser un numero que es el índice o así
fila.Cells("ID").Value en la que le pasas el nombre de la columna del Datagrid.
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #8 (permalink)  
Antiguo 21/02/2012, 12:04
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

ya implemente el codigo que me pasaste Aquaventus ahora me sale un error que dice: palabra clave no admitida:'[data source'. y la otra pregunta es: el codigo me que pasaste es para implementar en un boton cierto?????
  #9 (permalink)  
Antiguo 21/02/2012, 12:08
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Pasar de Datagridview a Sql

Claro si gustas lo puedes implementar en el boton, en la cadena de conexion no le pongas los [ ], eso lo puse solo para resaltar. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #10 (permalink)  
Antiguo 21/02/2012, 13:06
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

Que pena molestarlos tanto, pero ahora me sale un error que dice: error de inicio de sesion de SARTRO\juan.valderrama a que se debera eso, si con este mismo usuario ingreso al sql.
  #11 (permalink)  
Antiguo 21/02/2012, 13:08
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Pasar de Datagridview a Sql

lo que tienes puesto es el datasource... lo que quedaria en la cadena de conexion asi :
Data Source=SARTRO\juan.valderrama;Initial Catalog=TUBASEDEDATOS;User Id=USUARIO;Password=PASSWORD;
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #12 (permalink)  
Antiguo 21/02/2012, 13:20
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

si igualito pero me sale ese error

Data Source=GL203\SQLEXPRESS;Initial Catalog=Asamblea;User Id=sartro\juan.Valderrama;Password=sartro"

asi tengo el codigo
  #13 (permalink)  
Antiguo 21/02/2012, 13:23
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Pasar de Datagridview a Sql

que raro la verdad nunca eh visto un user "sartro\juan.Valderrama" intenta con solo 1 de los 2 porque no puede tener \
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #14 (permalink)  
Antiguo 21/02/2012, 13:39
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

solucione ese error cambiando la ruta de conexion por esta:
Data Source=GL203\SQLEXPRESS;Initial Catalog=Asamblea;Integrated Security=True
  #15 (permalink)  
Antiguo 21/02/2012, 13:40
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

me sale un error ahora con los nombres de las columnas, este es el codigo :
Imports System.Data.OleDb
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Dim dt As New DataTable

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim openFD As New OpenFileDialog()
With openFD
.Title = "Seleccionar archivos"
.Filter = "Todos los archivos (*.xls)|*.xls"
.Multiselect = False
.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocume nts
If .ShowDialog = Windows.Forms.DialogResult.OK Then
TextBox1.Text = .FileName
End If
End With
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
Dim strconn As String
strconn = "Provider=Microsoft.Jet.Oledb.4.0; data source= " + TextBox1.Text + ";Extended properties=""Excel 8.0;hdr=yes;imex=1"""
Dim mconn As New OleDbConnection(strconn)
Dim ad As New OleDbDataAdapter("Select * from [" & TextBox2.Text & "$]", mconn)
mconn.Open()
ad.Fill(dt)
mconn.Close()
Me.DataGridView1.DataSource = dt
Catch ex As OleDbException
MessageBox.Show(ex.Message)
End Try
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
With DataGridView1
.Columns(3).Visible = False
.Columns(4).Visible = False
End With
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Try
Using cnn = New SqlConnection("Data Source=GL203\SQLEXPRESS;Initial Catalog=Asamblea;Integrated Security=True")
cnn.Open()
Dim sql As String = "INSERT INTO Asamblea (ID, PORCENTAJE,FECHA_INGRESO,FECHA_SALIDA,HORA_ENTRADA ,HORA_SALIDA,ESTADO) VALUES (ID,PORCENTAJE,FECHA_INGRESO,FECHA_SALIDA,HORA_ENT RADA,HORA_SALIDA,ESTADO)"
For Each fila As DataGridViewRow In DataGridView1.Rows
Using command As New SqlCommand(sql, cnn)
command.Parameters.AddWithValue("ID", fila.Cells(0).Value)
command.Parameters.AddWithValue("PORCENTAJE", fila.Cells(1).Value)
command.Parameters.AddWithValue("FECHA_ENTRADA", fila.Cells(2).Value)
command.Parameters.AddWithValue("FECHA_SALIDA", fila.Cells(3).Value)
command.Parameters.AddWithValue("HORA_ENTRADA", fila.Cells(4).Value)
command.Parameters.AddWithValue("HORA_SALIDA", fila.Cells(5).Value)
command.Parameters.AddWithValue("ESTADO", fila.Cells(6).Value)
command.ExecuteNonQuery()
End Using
Next
End Using
Catch ex As Exception
MsgBox(ex.Message.ToString)
MsgBox("no se pudo cargar a la base de datos")
End Try
End Sub
End Class
  #16 (permalink)  
Antiguo 21/02/2012, 13:54
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Pasar de Datagridview a Sql

te olvidaste poner los @, mira bien el code que te pase
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #17 (permalink)  
Antiguo 21/02/2012, 14:27
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

Muchas gracias caballero, ya me esta funcionando bien.
tengo un interrogante: cuando cargo el excel al datagrid en la columna id hay valores que tienen de inicio un 0 y esos no los carga al datagrid que error puede haber ahy.
  #18 (permalink)  
Antiguo 21/02/2012, 14:35
 
Fecha de Ingreso: febrero-2012
Ubicación: bogota
Mensajes: 104
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pasar de Datagridview a Sql

este es el codigo funcionando por si alguien lo necesita:

Imports System.Data.OleDb
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Dim dt As New DataTable

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim openFD As New OpenFileDialog()
With openFD
.Title = "Seleccionar archivos"
.Filter = "Todos los archivos (*.xls)|*.xls"
.Multiselect = False
.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocume nts
If .ShowDialog = Windows.Forms.DialogResult.OK Then
TextBox1.Text = .FileName
End If
End With
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
Dim strconn As String
strconn = "Provider=Microsoft.Jet.Oledb.4.0; data source= " + TextBox1.Text + ";Extended properties=""Excel 8.0;hdr=yes;imex=1"""
Dim mconn As New OleDbConnection(strconn)
Dim ad As New OleDbDataAdapter("Select * from [" & TextBox2.Text & "$]", mconn)
mconn.Open()
ad.Fill(dt)
mconn.Close()
Me.DataGridView1.DataSource = dt
Catch ex As OleDbException
MessageBox.Show(ex.Message)
End Try
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Try
Using cnn = New SqlConnection("su conexion a la base de datos")
cnn.Open()
Dim sql As String = "INSERT INTO nombre de tabla (ID, PORCENTAJE,FECHA_INGRESO,FECHA_SALIDA,HORA_ENTRADA ,HORA_SALIDA,ESTADO) VALUES (@ID,@PORCENTAJE,@FECHA_INGRESO,@FECHA_SALIDA,@HOR A_ENTRADA,@HORA_SALIDA,@ESTADO)"
For Each fila As DataGridViewRow In DataGridView1.Rows
Using command As New SqlCommand(sql, cnn)
command.Parameters.AddWithValue("@ID", fila.Cells(0).Value)
command.Parameters.AddWithValue("@PORCENTAJE", fila.Cells(1).Value)
command.Parameters.AddWithValue("@FECHA_INGRESO", fila.Cells(2).Value)
command.Parameters.AddWithValue("@FECHA_SALIDA", fila.Cells(3).Value)
command.Parameters.AddWithValue("@HORA_ENTRADA", fila.Cells(4).Value)
command.Parameters.AddWithValue("@HORA_SALIDA", fila.Cells(5).Value)
command.Parameters.AddWithValue("@ESTADO", fila.Cells(6).Value)
command.ExecuteNonQuery()
End Using
Next
End Using
Catch ex As Exception
MsgBox(ex.Message.ToString)
MsgBox("no se pudo cargar a la base de datos")
End Try
End Sub
End Class

tienen que agregarle:

2 textbox
1 datagridview
4 botones
  #19 (permalink)  
Antiguo 21/02/2012, 14:38
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Pasar de Datagridview a Sql

Excelente que lo hayas resuelto!. Ahora con respecto a la carga del excel al grid no creo poder ayudarte, no eh tenido experiencia con carga de excels. Espero que los demas puedan ayudarte con ese inconveniente. De igual manera cualquier duda que tengas nos lo comentas aqui en el foro. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Etiquetas: datagridview, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:16.