FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
DBGrid
Tengo problemas con un DBGrid.
Lo que intento hacer es que mediante un DBGrid, el cual esta relacionado a un Query inserto nuevos registros en una tabla, hasta aquí todo esta bien, pero cuando intenté realizar pruebas me di cuenta que el dbgrid permite agregar cuantos registros deseé..... Tengo de dos opciones: 1. Permitir que el usuario solo agregue un registro, pero entonces ¿cómo bloqueo el DBgrid para que solo inserte un registro?. 2. Permitir que el usuario ingrese cuantos registros deseé, pero entonces como es que detectaría que se a presionado la tecla de dirección (Down), porque al hacer esto le tengo que mandar 2 valores que el usuario desconoce y no pueden ser nulos. Espero me halla dado a entender y que alguien me pueda ayudar. |
#2
|
||||
|
||||
Tal como lo veo, estas enfocando mal la escopeta.
El asunto no tiene que ver con el dbGrid, sino con el DataSet asociado. Te darás cuenta si ves los eventos del query (y su ayuda): OnNewRecord, BeforeInsert, AfterInsert. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
Perdon Jachguate, pero no me sale.
Lo que pasa es que si lo hago en OnNewRecord me pone el mismo valor en cada nuevo registro y no debe ser así, cada registro debe tener sus propios valores. Intenté en el evento OnKeyPress, es decir que me detectará si presionaba la tecla de dirección(down) me apareciera una ventana con un mensaje X, pero no me queda...la pregunta del millon es ¿Delphi detectá el código ascci de las teclas de dirección?, porque de ser afirmativa la respuesta indica que no escribi el código correcto. |
#4
|
||||
|
||||
Cita:
Lo que quiero decir con esto, es que te pone el mismo valor en cada registro porque vos estas programandolo de ese modo... si queres un valor diferente en cada registro, pues es tu tarea que así suceda... al final de cuentas, vos sos el programador... ¿no? Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#5
|
||||
|
||||
Hay 2 temas distintos.
Para controlar los valores "por defecto", ya lo ha dicho el compañero jachguate. Para controlar el número de inserciones: Podrías utilizar una variable global de la ventana usada a modo de contador. En el evento AfterPost, incrementas esa variable. En el evento OnNewRecord, miras el valor de esa variable, y si es mayor a uno, cancelas la edición:
Espero haya entendido tu pregunta. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
||||
|
||||
Cita:
Otra cosa... si el comportamiento por defecto cuando ocurre una excepción es mostrar un mensaje... ¿por qué no simplemente elevar una excepción?
Comento también que en el evento AfterPost ya no hay forma de saber si se estaba insertando o editando un registro... a menos que se conserve ese valor en una variable. Lo comento porque el mencionado evento se dispara tanto si se insertaba como si se modificaba un registro. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#7
|
|||
|
|||
Tengo el evento onNewRecord, en este hago una consulta a la tabla y traigo el ultimo valor de este, por lo que pongo como clave principal el resultado del query mas 1
Cita:
pero sólo al primer registro y si el usuario presionaba el tabulador o la tecla de dirección (down) me agregaba más lineas obvimente con los campos vacios, por lo que opte por bloquear el DBGrid....intenté en el evento onKeyDown y si funciona pero me bloquea el dataset y solo me deja agregar un registro. Cita:
|
#8
|
||||
|
||||
Hola
No entiendo. Si lo que se quiere es que el usuario coloque unos datos, por ejemplo en un edit y este, esta vacío, por que no estipular un simple mensaje diciendo que este tiene que contener datos?, lo mismo se puede hacer con cualquier otro componente, para que complicarse con la base de datos, datasets u otros?. No se. Saludos |
#9
|
|||
|
|||
ok. mire tengo un formulario que muestra todas las marcas de los automoviles que hay en la empresa, este formulario también contiene un DBgrid con todos los modelos de esa marca, es decir... marca Chevrolet y el DBgrid contiene los modelos Corvette, Malibu, Astra, Chevy, etc.
Mi intención es que el usuario escriba directamente sobre el DBGrid, si presiona el boton 'Nuevo' entonces ingresa una linea con el ID del modelo y el ID de la marca, el usuario sólo tiene que escribir el modelo pero, si el usuario presionaba el Tabulador o la Tecla de Dirección se agregaba una lina más pero ya con todos los campos vacios. El problema es que me permite agregar un registro solo una vez porque después me muestra el error 'El dataset no esta en modo Edit o Insert'. |
#10
|
||||
|
||||
Hola
Bueno no se la razón, pero me parece mas cómodo usar un edit para pasar o actualizar los datos. De todos modos, viendo tu explicación, me parece mas correcta la explicación de jachguate , por el uso del dataset o del componente de enlace, puede ser el table o el query, da igual. Algo asi: Por otro lado, si te da error después de actualizar, osea que solo te permite una actualización, es por que o cierras la tabla o la sentencia esta duplicada o no la vuelves a colocar en edición. Revisa el código, si es posible mejor lo pones por aqui, para verlo. Saludos |
#11
|
||||
|
||||
Hola
La comprobación podes abreviarla así:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#12
|
|||
|
|||
No lo hago con un edit porque simplemente me pidieron que todo se manejara desde un DBgrid, estoy de acuerdo que todo sería más sencillo, pero no me queda otro remedio.
Es muy tonto, lo que hacia es que cuando editaba o agregaba un registro cambiaba los estados de las columnas (ID_MODELO e ID_MARCA) del DBGrid en modo de solo lectura: Cita:
Cita:
Cita:
Alguién me puede decir que hacia mal? |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Pasar lineas de in dbgrid a otro dbgrid | look | OOP | 3 | 21-09-2007 23:16:29 |
PickList DBGrid (Pregunta acerca de los DBGRID) | lazarous | Varios | 1 | 10-01-2006 09:53:12 |
Como extraer datos de un DBgrid a otro DBgrid | mickey | Conexión con bases de datos | 13 | 29-01-2004 05:05:30 |
|