FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Bloquear celdas en DBGid
Hola a todos:
Me encuentro haciendo una BD (Uso delphi 7, componentes ADO, y SQL Server). En el servidor SQL tengo la BD y esta contiene una tabla llamada Estimulacion. En esta tabla hay muchos campos que el usuario no tiene que llenar ya que funcionan a traves de formulas. Ej: Introdusco: Campo1=2 Campo2=3 y automaticamente Campo3=Campo1+Campo2. Ahora bien, resulta que yo tengo un DBGRID que esta vinculado a esa tabla y poe DBGrid introdusco los datos. Como puedo bloquear esas celdas para que el usuario no pueda escribir en ellas? Como hago para que cuando yo escriba en el campo 1 y 2 automaticamnte el campo3 realice la formula pertinente? Espero me ayuden en esta tarea. Por ahora es todo. Gracias por adelantado.
__________________
Cuando las cosas van mal, recuerda que aún pueden ir peor |
#2
|
||||
|
||||
Puedes poner de solo lectura bien sea los campos que quieres o las columnas en el dbgrid. Para lo primero debes agregar los campos persistentes mediante el editor de campos del dataset asociado (accedes desde el menú contextual del componente). Para las columnas, también debes agregarlas explícitamente (doble click sobre el dbgrid). En ambos casos, campos o columnas, tienes la propiedad ReadOnly que evitará que se puedan modificar esos datos.
// Saludos |
#3
|
||||
|
||||
Hola roman:
Gracias por contestar, ya hice lo que me dijiste con respecto a bloquear las celdas. Ahora, como hago para que segun voy introduciendo datos los campos bloqueados realicen su formula?
__________________
Cuando las cosas van mal, recuerda que aún pueden ir peor |
#4
|
||||
|
||||
Aquí yo primero me cuestionaría el porqué guardar un campo calculado en la base de datos. Es decir, si el valor de un campo puede ser calculado a partir de otros campos, entonces ¿para qué guardarlo si siempre se puede recalcular?
Delphi ofrece soporte para campos calculados que puedes añadir a un dataset y en los cuales haces el cálculo correspondiente, mismo que se muestra como cualquier otro campo aunque realmente no exista en la tabla física. Vamos a ejemplificar suponiendo que tienes campos campo1 y campo2 de tipo entero en tu tabla y que quieres mostrar un campo resultado con la suma de ambos campos, pero que tal campo no existe en tu tabla. En el editor de campos del dataset añades todos los campos y luego escoges la opción New field: En las propiedades del nuevo campo escribes el nombre que desees darle y dejas seleccionada la opción Calculated: Finalmente, en el evento OnCalcFields del dataset pones:
Con esto, tu dbgrid mostrará el campo Resultado como si fuera otro campo de tu tabla y su valor se calculará en automático conforme coloques valores a los otros dos campos. ----------------------------------- Ahora bien; si por cualquier razón debes guardar el campo como parte de tu tabla, entonces tienes que hacer los cálculos tú mismo. Para empezar, no pongas el campo Resultado como ReadOnly porque entonces no te dejará modificarlo de ninguna manera. Usa mejor la columna del dbgrid para hacerlo de sólo lectura. Asigna un mismo evento OnChange a los otros campos y coloca ahí el código de la fórmula (suma en este ejemplo):
// Saludos |
#5
|
||||
|
||||
Gracias, ya me resultó.
__________________
Cuando las cosas van mal, recuerda que aún pueden ir peor |
#6
|
||||
|
||||
O sea, me lanzo toda una explicación y no me dices siquiera cuál fue la opción que tomaste.
Na, es broma. // Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Celdas de un DBgrid | jzk | OOP | 6 | 14-12-2004 14:13:31 |
Stringrid y sus celdas .... | elbilla | Varios | 0 | 04-10-2004 18:40:15 |
Celdas en DBGrids | karocs | Conexión con bases de datos | 1 | 31-08-2004 13:24:13 |
bloquear celdas en un stringgrid | ciscu | Gráficos | 1 | 18-12-2003 18:34:50 |
bloquear celdas en un stringgrid | ciscu | Varios | 1 | 13-12-2003 04:41:54 |
|