Principales respuestas
MshFlexGrid

Pregunta
-
Hola a todos una consulta tengo un formulario donde ingreso items a una grilla la cual tiene un titulo se lo pongo en el load pero cuando carga me carga el titulo y un registro vacío. ¿Como puedo hacer para que me cargue solo el titulo y no el registro vacío les muestro el código:
With flex
.Clear
Encabezado = "<Código|<Nombre|<Descripción|<Obs|>Precio|>Cantidad|>Total"
.FormatString = Encabezado
.Row = 0
.ColWidth(0) = 700
.ColWidth(1) = 1200
.ColWidth(2) = 2000
.ColWidth(3) = 2000
.ColWidth(4) = 900
.ColWidth(5) = 900
.ColWidth(6) = 900
End With
Pedro Avila
- Editado Pedro Ávila miércoles, 20 de junio de 2012 16:54 faltaba datos
Respuestas
-
Hola
Hay alguna columna de la grilla que siempre tiene que tener datos, por ejemplo el campo código si hay datos en una fila la columna código estará siempre llena, en ese caso lo único que tienes que hacer es comprobar que la columna código de la primera fila si esta llena o vacía
- Editado ToniAG miércoles, 20 de junio de 2012 22:13
- Marcado como respuesta Pedro Ávila miércoles, 20 de junio de 2012 22:24
-
Private Sub btnEliminar_Click() Dim tPagar As Double Dim I As Integer With flex ' la tabla esta vacia, salimos sin hacer nada If .TextMatrix(1, 1) = "" Then Exit Sub ' No hay ningula fila seleccionada salimos If .Row < 1 Then Exit Sub If .Rows = 2 Then .Rows = .Rows + 1 Lleno = False End If .RemoveItem (.Row) 'RESTAR(VUELVO A SUMAR) ' la tabla esta vacia, volvemos a velificar una vez eliminado si la tabla esta vacia If .TextMatrix(1, 1) = "" Then txtTotalPagar.Text = "" Exit Sub End If For I = 1 To .Rows - 1 tPagar = tPagar + .TextMatrix(I, 6) Next txtTotalPagar.Text = Format(tPagar, "#,##0.00") '<= asi es correcto End With End Sub
- Marcado como respuesta Pedro Ávila jueves, 21 de junio de 2012 0:00
Todas las respuestas
-
-
-
Creo que no se puede, si estableces una fila fija, como mínimo tiene que haber una fila vacía o llena.
Podrías hacer lo siguiente, cuando tengas una sola fila y esta vacía ocultarla, dándole una altura de 0 (cero)
MSHFlexGrid1.RowHeight(1) = 0
y cuando agregues datos estableces la altura a la fila
- Editado ToniAG miércoles, 20 de junio de 2012 18:12
-
Hola toni, lo que quiero hace es validar la grilla entonces como haría para saber que la grilla esta vacía ya sea un registro vacío pero para validar si esta vacío que no guarde todo los datos que esta en el form
If flex.Row = 0 Then
MsgBox "No puede registrar si no hay items", vbInformation, App.Title
Exit Sub
End If
Esta no me sirve pq? hay ya un registro vacío pero hay como decir que si esta vacía la primera fila que no guarde
Pedro Avila
- Editado Pedro Ávila miércoles, 20 de junio de 2012 22:07 faltaba datos
-
Hola
Hay alguna columna de la grilla que siempre tiene que tener datos, por ejemplo el campo código si hay datos en una fila la columna código estará siempre llena, en ese caso lo único que tienes que hacer es comprobar que la columna código de la primera fila si esta llena o vacía
- Editado ToniAG miércoles, 20 de junio de 2012 22:13
- Marcado como respuesta Pedro Ávila miércoles, 20 de junio de 2012 22:24
-
If flex.TextMatrix(1, 1) = "" Then
MsgBox "No puede registrar si no hay items", vbInformation, App.Title
Exit Sub
End IfGracias Toni
Pedro Avila
- Editado Pedro Ávila miércoles, 20 de junio de 2012 22:25 faltaba
-
Toni una consulta cuando elimino me da error cuando la fila esta vacía pq? sumaria y no hay datos pq el registro esta vacío pero lo soluciono con esto If .TextMatrix(1, 1) = "" Then Exit Sub
Private Sub btnEliminar_Click()
Dim tPagar As Double
Dim I As Integer
With flex
If .Rows = 2 Then
.Rows = .Rows + 1
Lleno = False
End If
If .Row > 0 Then .RemoveItem (.Row)
'RESTAR(VUELVO A SUMAR)
If .TextMatrix(1, 1) = "" Then Exit Sub =>PARA QUE NO SUME SI ESTA VACIO CUANDO ELIMINO pero en la segunda vez que apreto eliminar si lo borra donde ubicaria este linea de codigo para que borre en la primera vez que apreto eliminar
For I = 1 To .Rows - 1
tPagar = tPagar + .TextMatrix(I, 6)
Next
txtTotalPagar.Text = tPagar
txtTotalPagar.Text = Format(tPagar, "##,###,###0.00")
End With
End Sub
Pedro Avila
-
Hola
Private Sub btnEliminar_Click() Dim tPagar As Double Dim I As Integer With flex ' la tabla esta vacia, salimos sin hacer nada If .TextMatrix(1, 1) = "" Then Exit Sub
' No hay ningula fila seleccionada salimos
If .Row < 1 Then Exit subIf .Rows = 2 Then .Rows = .Rows + 1 Lleno = False End If .RemoveItem(.Row) 'RESTAR(VUELVO A SUMAR) For I = 1 To .Rows - 1 tPagar = tPagar + .TextMatrix(I, 6) Next 'txtTotalPagar.Text = tPagar '<= esta linea la puede eliminar, la tienes abajo txtTotalPagar.Text = Format(tPagar, "#,##0.00") '<= asi es correcto End With End Sub
- Editado ToniAG miércoles, 20 de junio de 2012 23:28
-
Private Sub btnEliminar_Click()
Dim tPagar As Double
Dim I As Integer
With flex
If .TextMatrix(1, 1) = "" Then Exit Sub
If .Rows = 2 Then
.Rows = .Rows + 1
Lleno = False
End If
If .Row > 0 Then .RemoveItem (.Row)
'RESTAR(VUELVO A SUMAR)
For I = 1 To .Rows - 1
tPagar = tPagar + .TextMatrix(I, 6) ==> ERROR cuando elimino un registro pq? suma y no hay nada por eso ponía( If .TextMatrix(1, 1) = "" Then Exit Sub) antes del FOR
Next
txtTotalPagar.Text = Format(tPagar, "##,###,###0.00")
End With
End SubEse error es cuando ingreso datos en el primer registro cuando lo elimino alli el problema pero cuando esta vacío y lo elimino no hay problema
Pedro Avila
- Editado Pedro Ávila miércoles, 20 de junio de 2012 23:32 faltaba datos
-
Hola
Private Sub btnEliminar_Click() Dim tPagar As Double Dim I As Integer With flex ' la tabla esta vacia, salimos sin hacer nada If .TextMatrix(1, 1) = "" Then Exit Sub
' No hay ningula fila seleccionada salimos
If .Row < 1 Then Exit subIf .Rows = 2 Then .Rows = .Rows + 1 Lleno = False End If .RemoveItem(.Row) 'RESTAR(VUELVO A SUMAR) For I = 1 To .Rows - 1 tPagar = tPagar + .TextMatrix(I, 6) Next 'txtTotalPagar.Text = tPagar '<= esta linea la puede eliminar, la tienes abajo txtTotalPagar.Text = Format(tPagar, "#,##0.00") '<= asi es correcto End With End Sub
no se si el causante es esta linea If .Row > 0 Then .RemoveItem (.Row)
prueba como lo e montado
-
Sigue saliendo el error en el mismo sitio
Private Sub btnEliminar_Click()
Dim tPagar As Double
Dim I As Integer
With flex
If .TextMatrix(1, 1) = "" Then Exit Sub
If .Row < 1 Then Exit Sub
If .Rows = 2 Then
.Rows = .Rows + 1
Lleno = False
End If
.RemoveItem (.Row)
'RESTAR(VUELVO A SUMAR)
For I = 1 To .Rows - 1
tPagar = tPagar + .TextMatrix(I, 6) ==> ERROR NO COINCIDEN LOS TIPOS
Next
txtTotalPagar.Text = Format(tPagar, "#,##0.00")
End With
End Sub
Pedro Avila
-
Private Sub btnEliminar_Click() Dim tPagar As Double Dim I As Integer With flex ' la tabla esta vacia, salimos sin hacer nada If .TextMatrix(1, 1) = "" Then Exit Sub ' No hay ningula fila seleccionada salimos If .Row < 1 Then Exit Sub If .Rows = 2 Then .Rows = .Rows + 1 Lleno = False End If .RemoveItem (.Row) 'RESTAR(VUELVO A SUMAR) ' la tabla esta vacia, volvemos a velificar una vez eliminado si la tabla esta vacia If .TextMatrix(1, 1) = "" Then txtTotalPagar.Text = "" Exit Sub End If For I = 1 To .Rows - 1 tPagar = tPagar + .TextMatrix(I, 6) Next txtTotalPagar.Text = Format(tPagar, "#,##0.00") '<= asi es correcto End With End Sub
- Marcado como respuesta Pedro Ávila jueves, 21 de junio de 2012 0:00
-
-
Por el error de no coincide los tipos puedes hacer esto
' la cadena te la convierte en numero, si la cadena es un texto o esta vacia te devolvera 0
tPagar = tPagar + Val(.TextMatrix(I, 6))Nota La función Val sólo reconoce el punto
(.) como separador decimal válido. Cuando se utilizan separadores
decimales diferentes, como en aplicaciones internacionales, debe utilizar
CDbl para convertir una cadena a un número.
- Editado ToniAG miércoles, 20 de junio de 2012 23:57
-
Private Sub btnEliminar_Click()
Dim tPagar As Double
Dim I As Integer
With flex
If .TextMatrix(1, 1) = "" Then Exit Sub
If .Row < 1 Then Exit Sub
If .Rows = 2 Then
.Rows = .Rows + 1
Lleno = False
End If
.RemoveItem (.Row)
'RESTAR(VUELVO A SUMAR)
If .TextMatrix(1, 1) = "" Then ==> todo esta exelente pq? si elimino ya no debe ir al FOR debe salir y con esto esta bien te iba a decir que deberiamos de salir si ya elimino
txtTotalPagar.Text = "" ==> Esto te lo iba a decir pero no te lo dije para no confundirte me leistes la mente
Exit Sub
End If
For I = 1 To .Rows - 1
tPagar = tPagar + .TextMatrix(I, 6)
Next
txtTotalPagar.Text = Format(tPagar, "#,##0.00")
End With
End SubGracias totales
Pedro Avila
-
-
Toni estoy desarrollando un sistema para recepcionar equipos de informatica(impresoras, cpu, laptop, etc) para un servicio tecnico ellos tienen su sistema que se encarga de las ventas y todo yo solo estoy haciendo para registrar los equipos que vienen a soporte técnico me gustaría mandarte la db que la tengo en access ya que es algo pequeño y el código para poder consultarte algunas ideas y dudas que tengo en mente
En el sistema recepcionan el equipo y se pone si es para formatear, garantía o cualquier averia que presente y costo por la compostura ya que el pago lo hacen con el sistema que ellos manejan solo aqui cuando imprima ellos se fijan cuanto se esta cobrando por dicha compostura.
NOTA: puedes enviarme tu correo
Pedro Avila
- Editado Pedro Ávila jueves, 21 de junio de 2012 0:25 faltaba datos
-
-
Es que mi consulta es sobre db, si me defiendo en db la modelo con Erwin o PowerDesigner si no que tengo una duda en unas tablas(Entidades)
Gracias por tu apoyo
Pedro Avila
- Editado Pedro Ávila jueves, 21 de junio de 2012 0:34 faltaba datos
-
Private Sub btnEliminar_Click() Dim tPagar As Double Dim I As Integer With flex ' la tabla esta vacia, salimos sin hacer nada If .TextMatrix(1, 1) = "" Then Exit Sub ' No hay ningula fila seleccionada salimos If .Row < 1 Then Exit Sub If .Rows = 2 Then .Rows = .Rows + 1 Lleno = False End If .RemoveItem (.Row) 'RESTAR(VUELVO A SUMAR) ' la tabla esta vacia, volvemos a velificar una vez eliminado si la tabla esta vacia If .TextMatrix(1, 1) = "" Then txtTotalPagar.Text = "" Exit Sub End If For I = 1 To .Rows - 1 tPagar = tPagar + .TextMatrix(I, 6) Next txtTotalPagar.Text = Format(tPagar, "#,##0.00") '<= asi es correcto End With End Sub
HOLA QUE TAL... TENGO UNA FALLA EN MI PROGRAMACION HACERCA DEL FLEXGRID ESPERO ME AYUDEN
TENGO UN FLEXGRID QUE EN LA COLUMNA 7 ESTA EL CAMPO SUBTOTAL....
For j = 1 To MSHFlexGrid1.Rows - 1
subtot = subtot + CDbl(MSHFlexGrid1.TextMatrix(j, 7))'subtot = subtot + Format$(MSHFlexGrid1.TextMatrix(j, 7),"##0.00")
Next j
txtcancelado = subtot ...
al momentos de sumar,si es que tengo un producto de 2.35 me devuelve 235 en el textbox... intente hacer todas las pruebas posible y nada creo que al momento de sumar elimina el punto o coma y le muestra en entero.. y no se como hacer... pero antes probe con este codigo si me devuelve los numeros decimales
txtcancelado = MSHFlexGrid1.TextMatrix(j, 7)
cuando hago esto si me muestra el numero real si es 2.35 me muestra 2.35.... por eso digo que al momento de sumar es donde lo hace 235 ...espero su ayuda gracias