Os envío mis 2 preguntas: 1º Me gustaría saber como puedo poner en un formulario, que me hace de panel de control, un botón que me realice automáticamente una copia de seguridad de la bd. Y saber si es posible que periódicamente, te avise un mensaje al entrar en la bd que ya es hora de realizar la copia de seguridad. 2º ¿Cómo puedo enviar los registros que me salen de resultado de un filtro por formulario a un Informe?
¿Cómo andamos de Visual basic?. Tendría que saber si tienes o no dividida la base de datos (en datos y aplicación), para el tema de las copias de seguridad. No obstante te explico como se hace. Tendrás que cambiar los nombres de los archivos. 1º Crea un botón de comando y en el procedimiento 'al hacer clic' añade lo siguiente: (yo supongo que no la tienes en red) si es así me lo dices y te explico como hacerlo) Dim ArchOrigen, ArchDestino Visible = False 'Oculta formulario Seguridad ArchOrigen = "C:\CARPETA\BASE.mdb" 'Nombre del archivo de origen. ArchDestino = "C:\CARPETA\BASE(Segur).mdb" ' Se copia el archivo de origen en el archivo de destino. FileCopy ArchOrigen, ArchDestino DoCmd. Close acForm, "FORMULARIO" Beep MsgBox "Finalizada copia de Seguridad.", vbInformation, "Copia Seguridad" Donde CARPETA es la ruta donde se encuentra la base que querermos copiar Donde BASE es el nombre de la base de datos. Done BASE(Segur) es el nombre que le daremos a la copia de seguridad. (En principio yo la he colocado en la misma ruta CARPETA, pero lógicamente puedes colocarla donde quieras). Donde FORMULARIO será el formulario desde donde haces la copia. NOTA: tres cuestiones a tener en cuenta. La primera es que si tienes la base dividida y los datos divididos por años, deberás crear un formulario con un campo independiente donde se introduzca el año del que deseas hacer la copia. Habrá que añadir un 'bucle' que compruebe el año que está cargado si se desea y que copia por años. La segunda: si deseas realizar la copia de seguridad en otro soporte, deberás tener en cuenta que el envío a "A", fallará si supera el tamaño de la unidad, y si es a "D", (cd rom grabable), tan sólo funcionará con Windows XP, ya que es el único sistema operativo que lleva incorporado un sistema directo de copias de CD's. La tercera y última, si tienes la base en red, necesitarás la ruta donde se encuentran los datos. Para ello existirá una tabla donde se guarde el router que se cargó al principio y de ahí se tomarán para realizar la copia, aunque el módulo cambia un poco. Cualquier duda a tu disposición. La segunda cuestión que planteabas en principio, y tal como la entiendo, no debe suponer ningún problema. Crea un informe que se alimente de la misma consulta que el formulario, aplicando el mismo filtro a dicha consulta. Si lo imprimes desde el formulario en cuestión, en la consulta los filtros se referirán a los datos seleccionados en el formulario en el momento de activar el botón de imprimir el informe. Cualquier nueva duda, a tu disposición. ¿OK?
La primera pregunta me ha quedado totalmente solucionada, muchas gracias ha sido una explicación muy clara. Con respecto a la segunda te cuento un poco mejor que es lo que quiero hacer, tengo un formulario que tira de una tabla con datos de fotografías y lo uso para hacer filtros por formulario opción que me da Access y que no tira de ninguna consulta. Pues bien me gustaría poder mandar el resultado de ese filtrado a un informe. Lo más cercano que he podido realizar es el imprimir el registro que esta activo, pero ¿y si el filtro me da 8 resultados? ¿Cómo hago para enviarlos todos al informe? ¿De dónde le digo al informe que tire? Muchas Gracias de nuevo por tu interés. Por cierto de VB, estoy regular, pero le pongo mucho empeño y voy aprendiendo...;-)
Me gustaría saber como estableces el filtrado. Si es a través de un dbcombo, o simplemente añades un filtro en el mismo formulario. El formulario debe 'tirar' de una consulta y no de la tabla. ¿Por qué? Preguntarás. Cuando Access carga tu formulario tiene que cargar todos los datos que existen en la tabla, con todos sus campos, mientras que si lo hace a través de una consulta, tan sólo utilizará los campos que necesites, con lo que será más rápido a medida que tengas mayor cantidad de datos. Por tanto, el mismo filtrado utilizado en el formulario (que si me dices cual es te digo como se coloca en la consulta), será el utilizado para el informe, que estará basado en la misma consulta. Por ejemplo si tenemos un campo en el formulario llamado POR y en la consulta decimos en el campo o apartado 'Donde' que es =Forms![NombredelFormulario]![X], cuando coloquemos el dato que sea o eligamos en el formulario este, nos realizará el filtrado. En la consulta (que será la misma) para el informe, cuando eligamos en el formulario el dato que sea para el filtrado, realizará el mismo filtrado que en el formulario y mostrará los mismos datos. No se si te queda claro. Si no es así a tu disposición. ¿OK?
Entiendo lo que me dices, pero la cosa es que el usuario de la base de dato no tiene claras las consultas que necesita por ello pensé que lo mejor era hacer un filtro por formulario, para que cada vez que realice una búsqueda la haga por los campos que él quiera. Y yo ahorrarme el hacer "1000" combinaciones distintas de consultas. De ahí que el formulario tire directamente de la tabla y que tenga este problema a la hora de hacer el informe del resultado del filtro. Muchas gracias de nuevo...:-)
No entiendo. Daría igual por el numero de datos que filtre. Sólo haría falta saber por cuantos campos filtra en el formulario. No se si me explico. Contesta please.