Pregunta: | 191 - MODIFICAR EL CONTENIDO DE UNA COLUMNA DE UN DBGRID |
Autor: | Arquimedes |
Estoy programando con Visual Basic 4.0 y tengo un problema a la hora de modificar en tiempo de ejecución el contenido de una columna de un DBGrid. Lo he intentado en varios eventos (BeforeInsert, BeforeUpdate, etc.) pero en todos los casos me da el error 438: El objeto no soporta esa propiedad o método. ¿Es que no se puede modificar por código una columna del DBGrid?. La documentación dice que si, pero yo no lo he conseguido. En cambio, si que puedo acceder a ella para imprimirla desde la ventana de debug |
Respuesta: | VICTOR HUGO PEREZ APONTE |
Hay varias GRID, posiblemente a la Grid que tu te referes es a MSFLEXGRID, o su prima MSHFLEXGRID, estas grid son solamente para lectura, nunca podras modificar, eliminar o agregar registros directamente sobre ella.
Existe otra GRID, la cual puedes realizar cualquier tipo de operacion de actualizacion y esa grid es DATAGRID, yo la estoy utilizando precisamente por eso, porque puedo actualizar los registros atraves de ella. En los codigos fuentes de la web del programador, busca minusiosamente unos programas echos con DATAGRID, Y OBSERVA EL CODIGO FUENTE PARA QUE LA PUEDAS TRABAJAR |
Respuesta: | Marcelo Sanhueza |
EN realidad el modificar un dato o registro de dbgrid, es poco usual, cuando quieras usar grillas ocupa el msflexgrid que es mucho mejor y pedes manejar las columnas con:
MSFLEXGRID.COL= 1 ' hace mencion a el numero de la coumna que quieres modificar y las filas MSFLEXGRID.ROW= 1 hace mencion al numero de la fila que quieres modificar |
Respuesta: | Alex Abreu |
Bueno cada vez que yo quiero actualizar un dbgrid para ver los datos devueltos por la condicion lo que hago es:
mibasededatos.refresh dbgrid1.resfresh |
Respuesta: | Elisa Basanta |
Si el objeto contiene datos de más de una tabla no te deja actualizarlo. Yo tengo muy poca experiencia en VB y me da el mismo error con un control llamado vaSpread.
Lo único que he visto es que si el objeto contiene datos de una sola tabla, si me deja actualizarlo. Set v_dynaset = v_base_datos.dbCreateDynaset(Obtener_Sql(33), ORADYN_ORAMODE) v_dynaset.dbmovefirst For i = 1 To vaSpread1.MaxRows vaSpread1.Row = i vaSpread1.Col = 6 (modificada si/no) If vaSpread1.Value = True Then vaSpread1.Col = 4 v_dynaset1.dbEdit v_dynaset1("codigo").Value = vaSpread1.Value 'mete nuevo codigo v_dynaset1.dbUpdate End If Next i No es la mejor solución pero es la única que yo he visto hasta ahora. |
Respuesta: | Obelix |
Este segmento de codigo lo tengo insertado en un evento Activate de un form, y funciona perfectamente, echale un vistazo!. datPrimaryRS es un control data insertado en el formulario y al cual está asociado el dbgrid nombres es un recordset que apunta a una base de datos cobol.While Not datPrimaryRS.Recordset.EOF
|
Respuesta: | Fernando Berenguer Doméne |
Yo estuve intentándolo unos dos meses, haciéndole mil y una pruebas. Si te funciona con el ejemplo que te ha pasado el colega Obelix no busques más. Yo tuve que pasarme a Visual Basic 5.0. Al parecer la versión 4 salió con el control DBGrid sin posibilidad de modificar los datos que había en las celdas, desde código. O al menos eso me dijeron a mí. |