Dbgrid y access

Buenas ifuvaldes, espero que te encuentres bien, tan bien, que no tengas problema en ayudarme.
Mis dudas son, simplemente 2:
1)Tengo dos columnas de un dbgrid (ligado a una bd)que son fechas ¿Cómo le doy un formato fijo (como el de un maskedbox)de fecha cuando (antes que)la persona incluye información en ellas?
2)Dentro de la tabla(en access)tengo una llave foránea de identificación y dentro del form (visual basic) tengo el dbgrid conectado a esa tabla con la información también que se refiere a esa identificación, pero lo malo es que por cada fila, que quiera insertar, tengo que volver a digitar el numero de identificación, no existe alguna forma, por código, de que yo pueda poner esa identificación en un txt y a la hora de que ella inserta la información a la base de datos, ¿tome la llave de ese txt?
Algo así como funciona del dbcombo con la propiedad bound y boundtext.
fiuuu... Que trabajo pero tal vez me puedas ayudar en algo, y si tal vez no sabes, al menos respóndeme que no para no quedarme con la duda de si viste o no el mensaje,
Gracias y espero que no sea algo muy difícil.

1 Respuesta

Respuesta
1
1) Supongo que te refieres a que este dbGrid tiene AllowAddnew como true y por lo tanto permite añadir registros a la tabla. En la página de propiedades, en la solapa de columnas, tienes la propiedad NumberFormat que a pesar de su nombre actúa también para fechas, y puedes escoger un formato de fecha corta, o fecha larga, etc. Aún así el formato actúa una vez que el usuario ha tecleado el dato. Si como me dices pretendes que antes de que el usuario escriba se vea una máscara estoy casi seguro de que no se puede. Y lo estoy porque no se si sabes que Apex hace una versión mejorada del Dbgrid que se llama TrueDbgrid (el nombre lo dice todo). Pues bien en el TrueDbgrid, justamente en esta página de propiedades, hay un dato más que se llama Edit Mask que hace exactamente lo que tu quieres.
2.- Creo que lo que quieres se puede hacer utilizando el Evento "OnAddNew" del Dbgrid. Si aquí pones que se rellene un dato de la tabla con el contenido del TextBox, cada vez que se cree un registro se rellenará automáticamente ese campo.
Pues vamos por buen camino, es decir, nos estamos entendiendo muy bien.
Ahora solo quiero que me aclarez lo siguiente:
1)¿No tenies alguna idea de como puedo ponerle formato de fecha a la columna utilizando beforecolupdate?
2)Este truedbgrid ¿dónde se puede conseguir? ¿Es gratuito? ¿Cómo lo instalo? ¿Se usa igual que el dbgrid de visual basic?
3)En cuanto a la pregunta Nº2, vieras que si lo pongo en addnew, me da algunos otros problemas como si es la primera línea, pues el addnew no se ejecuta y lo otro creo que es error de programación de este servidor, cualquier comentario o dirección serán bien recibidas... ahh! Por cierto, gracias por tu respuesta anterior.
Luis.
A continuación te escribo mi mensaje original y tu respuesta en caso de que te "hallas perdido de algo"
Buenas ifuvaldes, espero que te encuentres bien, tan bien, que no tengas problema en ayudarme.
Mis dudas son, simplemente 2:
1)Tengo dos columnas de un dbgrid (ligado a una bd)que son fechas ¿Cómo le doy un formato fijo (como el de un maskedbox)de fecha cuando (antes que)la persona incluye información en ellas?
2)Dentro de la tabla(en access)tengo una llave foránea de identificación y dentro del form (visual basic) tengo el dbgrid conectado a esa tabla con la información también que se refiere a esa identificación, pero lo malo es que por cada fila, que quiera insertar, tengo que volver a digitar el numero de identificación, no existe alguna forma, por código, de que yo pueda poner esa identificación en un txt y a la hora de que ella inserta la información a la base de datos, ¿tome la llave de ese txt?
Algo así como funciona del dbcombo con la propiedad bound y boundtext.
fiuuu... que trabajo pero tal vez me puedas ayudar en algo, y si tal vez no sabes, al menos respóndeme que no para no quedarme con la duda de si viste o no el mensaje,
Gracias y espero que no sea algo muy difícil.
Respuesta:
1) Supongo que te refieres a que este dbGrid tiene AllowAddnew como true y por lo tanto permite añadir registros a la tabla. En la página de propiedades, en la solapa de columnas, tienes la propiedad NumberFormat que a pesar de su nombre actúa también para fechas, y puedes escoger un formato de fecha corta, o fecha larga, etc. Aún así el formato actúa una vez que el usuario ha tecleado el dato. Si como me dices pretendes que antes de que el usuario escriba se vea una máscara estoy casi seguro de que no se puede. Y lo estoy porque no se si sabes que Apex hace una versión mejorada del Dbgrid que se llama TrueDbgrid (el nombre lo dice todo). Pues bien en el TrueDbgrid, justamente en esta página de propiedades, hay un dato más que se llama Edit Mask que hace exactamente lo que tu quieres
Vamos por partes:
1) El BeforeColUpdate se produce después de que el usuario ha actualizado el contenido de una celda, y este contenido y antes de llevarlo a la base de datos. Es apropiado para poner una validación del dato, pero si lo que quieres es una máscara que aparezca antes de que el usuario teclee, el BeforeColUpdate no te sirve.
2) EL TRUE DBGRID se vende en tiendas de software y en Internet. La Web del fabricante es:
http://www.componentone.com/
Si te dedicas seriamente a este negocio, te lo recomiendo. Yo es prácticamente el único control que utilizo fuera del standard de Visual Basic.
Es completamente compatible con el dbgrid estándar de Visual. Esto es: todo lo que funciona en DBgrid, funciona exactamente igual en TDBGrid. De hecho se vendía (no se si si continúa siendo así) un "upgrade" que te actualiza el DBGrid a TDBGrid.
3) No tengo muy claro cual es tu problema. Yo siempre que he tenido que poner un dato por defecto en los registros nuevos generados desde un Dbgrid, he puesto los valores en el evento AddNew y me ha funcionado incluso para el primer registro. Y eso tanto si es un dato por defecto que luego dejo cambiar, como si solo lo muestro en el grid pero sin dejar cambiarlo, o como si ni siquiera lo muestro.
Mirate a ver si cuando se crea el primer registro todavía no tienes asignado el valor para el dato, o algo así.
Suerte :-)
MuCHAS GRACIAS, la respuestas estuvieron geniales, aunque tal vez faltó darme un ejemplo en el addnew como para ver en que podría haberme equivocado en mi programación, sus respuestas fueron directas al punto y sin rodeos, me comento lo que sabia y no lo que no, y de hecho lo que sabe es lo que yo necesitaba
Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas