Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Añadir una fila a un datagrid

Estas en el tema de Añadir una fila a un datagrid en el foro de Visual Basic clásico en Foros del Web. Cargo los registros de una tabla en un datagrid con un recordset y quiero agregarle mas filas al datagrid mediante otro recordset pero este es ...
  #1 (permalink)  
Antiguo 30/08/2008, 21:49
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Añadir una fila a un datagrid

  • Cargo los registros de una tabla en un datagrid con un recordset y quiero agregarle mas filas al datagrid mediante otro recordset pero este es temporal, es decir existen 2 recordset
  • Con el command1 cargo los registros del tabla al datagrid1 y quiero que con el command2 se agrege una o mas filas con otro recordset pero en la grilla deben mantenerse los registros de l primero.

En resumen como le sumo los datos del RsTemporal al RsDetalle algo asi
cargo la grilla asi :
Set DataGrid1.DataSource = rsDetalle
y quiero agregarle filas a la grilla con este otro recordset :
Set DataGrid1.DataSource = RsTemporal

De todos modos dejo el codigo:

Código:
Dim RsTemporal As New Recordset
Dim rsDetalle As New Recordset

Sub ActivaTemporal()
    'Creando recordset temporal
    RsTemporal.CursorType = adOpenStatic
    RsTemporal.Fields.Append "CodProd", adVarChar, 4, adFldIsNullable
    RsTemporal.Fields.Append "NomProd", adVarChar, 250, adFldIsNullable
    RsTemporal.Fields.Append "PrecioVenta", adDouble, 10.2, adFldIsNullable
    RsTemporal.Open
    'Cargamos el datagrid
    Set DataGrid1.DataSource = RsTemporal
End Sub

Sub GrabaTemporal()
  RsTemporal.AddNew
  RsTemporal.Fields(0) = Text1.Text
  RsTemporal.Fields(1) = Text2.Text
  RsTemporal.Fields(2) = Text3.Text
  RsTemporal.Update
End Sub

Private Sub Form_Load()
ActivaTemporal
End Sub

Private Sub Command1_Click()
  'Cargamos la grilla con la tabla detalle
   Set rsDetalle = New Recordset
   rsDetalle.Open "SELECT * FROM Detalle", dbConex, adOpenStatic, adLockOptimistic
   Set DataGrid1.DataSource = rsDetalle
End Sub

Private Sub Command2_Click()
  GrabaTemporal
End Sub 

Última edición por franko1809; 30/08/2008 a las 22:12
  #2 (permalink)  
Antiguo 31/08/2008, 01:44
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Añadir una fila a un datagrid

Eso no lo puedes hacer con un DataGrid, tendría que ser con otro control como FlexGrid o ListView.

Si tiene que ser con un DataGrid, tendrías que unir ambas tablas en una sola, p.e.

1º Copiar la Tabla Detalle a una tabla temporal

"INSERT INTO Temporal SELECT Detalle.* FROM Detalle"

2º Añadir 3 nuevos campos a la tabla Temporal

"ALTER TABLE Temporal ADD COLUMN CodProd VARCHAR(4)"
.... igual para los otros dos campos

3º Abrir un recordset a la tabla Temporal para insertar los valores mediante el método AddNew o insertarlos directamente en la tabla con una instrucción INSERT INTO

y 4º Mostrar el resultado en el control DataGrid

Pero como digo al principio, es mas sencillo con cualquier otro control de los indicados.

  #3 (permalink)  
Antiguo 31/08/2008, 12:11
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Añadir una fila a un datagrid

ummh, no entiendo del todo, pero te explico mejor, solo existe una tabla llamada detalle con 3 campos(CodProd,NomProd,PrecioVenta), estos datos los carga al grid mediante el rsDetalle.
El rsTemporal tiene los mismos campos pero es creado en tiempo de ejecucion para poder añadirle mas filas ala tabla detalle, el codigo lo he reducido para q capten la idea, bueno por otro lado voy a averiguar sobre
"INSERT INTO Temporal SELECT Detalle.* FROM Detalle"
"ALTER TABLE Temporal ADD COLUMN CodProd VARCHAR(4)"

Por que nunca habia hecho algo asi?, si tienes algo mas q agregar para ayudarme

saludos y gracias por tu tiempo
  #4 (permalink)  
Antiguo 23/04/2013, 10:33
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Añadir una fila a un datagrid

Bueno aqui la solucion q utilize

Código vb:
Ver original
  1. Dim RsTemporal As New Recordset
  2. Dim rsDetalle As New Recordset
  3.  
  4. Sub ActivaTemporal()
  5.     'Creando recordset temporal
  6.    RsTemporal.CursorType = adOpenStatic
  7.     RsTemporal.Fields.Append "CodProd", adVarChar, 4, adFldIsNullable
  8.     RsTemporal.Fields.Append "NomProd", adVarChar, 250, adFldIsNullable
  9.     RsTemporal.Fields.Append "PrecioVenta", adDouble, 10.2, adFldIsNullable
  10.     RsTemporal.Open
  11.     'Cargamos el datagrid
  12.    Set DataGrid1.DataSource = RsTemporal
  13. End Sub
  14.  
  15. Sub GrabaTemporal()
  16.   RsTemporal.AddNew
  17.   RsTemporal.Fields(0) = Text1.Text
  18.   RsTemporal.Fields(1) = Text2.Text
  19.   RsTemporal.Fields(2) = Text3.Text
  20.   RsTemporal.Update
  21. End Sub
  22.  
  23. Private Sub Form_Load()
  24. ActivaTemporal
  25. End Sub
  26.  
  27. Private Sub Command1_Click()
  28.    '123456: Aqui le aplicas un WHERE con el ID de tu tabla maestro para que no te filtre toda la tabla.
  29.   rsDetalle.Open "SELECT codprod,nomprod,precioventa FROM Detalle", dbConex, adOpenStatic, adLockOptimistic
  30.  
  31.   'Añadimos los datos del rsDetalle al rsTemporal
  32.  Do While Not rsDetalle.EOF
  33.      RsTemporal.AddNew
  34.      RsTemporal.Fields("CodProd") = rsDetalle.Fields("CodProd")
  35.      RsTemporal.Fields("NomProd") = rsDetalle.Fields("NomProd")
  36.      RsTemporal.Fields("PrecioVenta") = rsDetalle.Fields("PrecioVenta")
  37.      RsTemporal.Update
  38.      rsDetalle.MoveNext
  39.   Loop
  40.  
  41.    
  42. End Sub
  43.  
  44. Private Sub Command2_Click()
  45. 'Los registros que se ingresen con este sub se guardan en el rstemporal por lo
  46. 'tanto la tabla detalle queda intacta, al final si quieres lo vuelves a recorrer e ingresar los nuevos registros.
  47. GrabaTemporal
  48. End Sub
__________________
123.http://bunker.host22.com

Última edición por franko1809; 23/04/2013 a las 16:12
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 05:24.