Autor Tema: Metodo Delete-Update en recordset temporal - MSHFlexgrid  (Leído 3469 veces)

0 Usuarios y 1 Visitante están viendo este tema.

lucius

  • Gigabyte
  • ****
  • Mensajes: 263
  • Reputación: +6/-5
    • Ver Perfil
Metodo Delete-Update en recordset temporal - MSHFlexgrid
« en: Julio 14, 2012, 11:42:48 pm »
Hola. Creo una tabla/recordset temporal osea todo en memoria y mediante un boton voy agregando registros a este recordset con metodo rs.addnew y rs.delete hasta ahi todo bien(Utilizo un datagrid).

Ahora aplicar el rs.delete previamente debo seleccionar el item del Datagrid(Si no lo hago me manda error pero se soluciona seleccioando una fila).

El gran problema esta en que quiero utilizar un MSHFlexgrid ya tengo todo listo pero logicamente el rs.delete no me funciona y me tira error ya que no estoy seleccionando nada ya que el grid herarquico solo muestra los registros y no tiene una conexion directa.

Como puedo aplicar un sentencia sql DELETE o UPDATE directamente a mi especie de recordset o tabla temporal o que debo hacer, intente buscando con el metodo .find pero hize bolas.

NOTA: el codigo actual todabia funciona por que utilizo el datagrid y si lo quito logicamente estaria tirando un rs.delete al aire.

Código: [Seleccionar]
Dim rsTemp As New Recordset

Sub TablaTemporal2()
    rsTemp.CursorType = adOpenStatic
    rsTemp.Fields.Append "IDn", adVarChar, 6, adFldIsNullable
    rsTemp.Fields.Append "Nombre", adVarChar, 35, adFldIsNullable
    rsTemp.Fields.Append "Marca", adVarChar, 35, adFldIsNullable
    rsTemp.Open
    Set DataGrid2.DataSource = rsTemp
    Call Seteo_Grid_Herarquico(MSHFlexgrid1)
End Sub

Private Sub Form_Load()

Call TablaTemporal2

End Sub

Sub Seteo_Grid_Herarquico(Grid As MSHFlexGrid)
Dim i As Long
With Grid
    Set .DataSource = Nothing
    .Rows = 2
    '.Clear
    For i = 0 To .Cols - 1
        .TextMatrix(1, i) = "" '<-- limpiar a mano la primera fila del flexgrid
    Next
End With

If rsTemp.RecordCount > 0 Then
   Set Grid.DataSource = rsTemp
End If
Grid.FormatString = "ID   |NOMBRE   |MARCA"
End Sub

Private Sub btnAgregar_Click()
    rsTemp.AddNew
    rsTemp.Fields(0) = Trim(txtIDn)
    rsTemp.Fields(1) = Trim(txtNombre)
    rsTemp.Fields(2) = Trim(txtMarca)
    rsTemp.Update
    Call Seteo_Grid_Herarquico(MSHFlexgrid1)
End Sub

Private Sub btnDelete_Click()
rsTemp.Delete
Call Seteo_Grid_Herarquico(MSHFlexgrid1)
End Sub

« última modificación: Julio 14, 2012, 11:44:35 pm por lucius »

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Metodo Delete-Update en recordset temporal - MSHFlexgrid
« Respuesta #1 en: Julio 15, 2012, 12:07:57 am »
antes de borrar un registro de un recordset temporal , tenes que posicionarte en el registro que queres borrar, por ejemplo haciendo un .Find o un .Filter

el .Find encuentra el registro segun la condicion, por ejemplo si queres borrar el registro seleccionado de la grilla, primero cada registro debe tener un ID unico, este ID debe estar en alguna columna, ya sea visible o oculta, pero debe estar, y seria algo asi:

Código: (vb) [Seleccionar]
rsTemporal.MoveFirst
rsTemporal.Find ("idproducto ='" & flexgrid.TextMatrix(flexgrid.Row, 1) & "'")
If Not rsTemporal.EOF Then
     rsTemporal.Delete
     rsTemporal.Update
     Call ActualizarFlexgrid ' aca llamas a la funcion que carga el flexgrid, asi se actualiza la grilla
End If

saludos.

lucius

  • Gigabyte
  • ****
  • Mensajes: 263
  • Reputación: +6/-5
    • Ver Perfil
Re:Metodo Delete-Update en recordset temporal - MSHFlexgrid
« Respuesta #2 en: Julio 16, 2012, 09:41:09 pm »
Gracias neo es lo que estaba buscando, ah tambien espero el abm con clases de tu otro post, espero no tome muchos años jeje, saludos