Combinar access y Word
Estoy trabajando en una base de datos en access que estaba en access 2.0. La base se encarga de elaborar los exámenes para estudiantes a distancia. Logre recuperar gran parte de la base de datos al pasarla a 2000 pero el programa original esta en VB y los fuentes se perdieron así que tengo que reprogramar todo de nuevo. Lo único que no pude salvar son las preguntas solo las tengo en documentos word. Cada documento word tiene 3 o 4 preguntas organizadas por todpico. En el formulario se seleccionan varios módulos y la cantidad de preguntas que se quiere de los mismos, entonces va a las preguntas de los módulos y de manera aleatoria escoge una pregunta. ¿Mi pregunta en cuestión es como puedo manipular estas preguntas que están en word dentro de mi BD? Algunas de ellas tienen imágenes.
1 Respuesta
Respuesta de santosd
1
1
santosd, Licenciado En Informática con una maestría en Gerencia de la...
Yo te recomiendo que lleve todas las preguntas a tablas access, las cuales puedes organizar por tópicos, los campos serían; numero y Pregunta. Luego puedes crear una tabla general donde tenga cada uno de los tópicos con los campos; número y TipoDeTopico. Desde un formulario Puedes seleccionar aleatoriamente el tópico del cual se quiere preguntar mediante la función NúmAleat(Número) esta función la utilizas en la tabla general para seleccionar un tópico aleatorio, luego con ese nombre de tópico abres la tabla de este tópico y dentro de de esa tabla vuelves a aplicar la función para escoger una pregunta.
Muchas gracias.
De hecho ya tengo la base de datos de esa forma es decir por tópicos. Lo que pasa es que no se en que forma poner los datos en la Base de datos. Por ejemplo, muchas de las preguntas están en una hoja de calculo de excel, otras, las que tienen gráficos están en Word, por bancos. Entonces que me aconsejarías por ejemplo en la tabla de las preguntas por tópicos ( que actualmente tiene un campo log binary que debió el original cuerpo de la pregunta)pongo la pregunta, Ok eso podría hacerlo. Mi problema aparece a la hora de generar el reporte del examen. Por ejemplo, supongamos que mi usuario me pide tres preguntas de tipo descripción de los módulos 1, 2 y 3, 7 y 4 de tipo esquema, en ese orden.
Supongamos que ya tengo las preguntas, entonces a la hora de imprimirlas en un gran desastre, no salen bien, salen todas corridas.
¿Qué me sugerirías que las guardara como objetos ole de word y a la hora de generar el reporte buscara la manera de combinarlas?
Bueno no si entiendes lo que te quiero preguntar, en realidad mi principal problema es el reporte.
Muchas gracias, en cualquier modo tu anterior respuesta me fue muy útil pues nunca había trabajado con números aleatorios.
Miles de gracias por tu tiempo
De hecho ya tengo la base de datos de esa forma es decir por tópicos. Lo que pasa es que no se en que forma poner los datos en la Base de datos. Por ejemplo, muchas de las preguntas están en una hoja de calculo de excel, otras, las que tienen gráficos están en Word, por bancos. Entonces que me aconsejarías por ejemplo en la tabla de las preguntas por tópicos ( que actualmente tiene un campo log binary que debió el original cuerpo de la pregunta)pongo la pregunta, Ok eso podría hacerlo. Mi problema aparece a la hora de generar el reporte del examen. Por ejemplo, supongamos que mi usuario me pide tres preguntas de tipo descripción de los módulos 1, 2 y 3, 7 y 4 de tipo esquema, en ese orden.
Supongamos que ya tengo las preguntas, entonces a la hora de imprimirlas en un gran desastre, no salen bien, salen todas corridas.
¿Qué me sugerirías que las guardara como objetos ole de word y a la hora de generar el reporte buscara la manera de combinarlas?
Bueno no si entiendes lo que te quiero preguntar, en realidad mi principal problema es el reporte.
Muchas gracias, en cualquier modo tu anterior respuesta me fue muy útil pues nunca había trabajado con números aleatorios.
Miles de gracias por tu tiempo
Bien tengo una base de datos la cual tiene en un campo la preguntas en un campo texto y en el otro campo tipo Ole tiene los gráficos. No todas las preguntas tienen gráficos. El programa escoge el numero de preguntas solicitadas por el usuario y las pone en una tabla que se borra cada vez que el usuario quiere generar un nuevo examen. Mi problema surge a la hora de imprimir el gráfico. En el reporte tengo los campos del texto de la pregunta y el del gráfico, al haber preguntas que no tienen gráfico me queda un espacio vacío y el reporte no que da bien. ¿Qué puedo hacer?
Gracias de antemano
Trinitri
Gracias de antemano
Trinitri
Disculpe la tardanza, la solución es colocar un evento en el reporte, en el área de detalle, donde pregunte si el gráfico contiene datos nulos...
if grafico=null then
grafico.PictureTiling = false
end if
if grafico=null then
grafico.PictureTiling = false
end if
En access puedes utilizar tres objetos para incrustar imágenes de tres formas, para ello utilizas el cuadro de herramientas. Yo te recomiendo la primera, "imagen", seleccionando este objeto creas un rectángulo del tamaño que quieres la imagen, luego seleccionas la imagen que vas a colocar allí, si la imagen es más grande que el cuadro no se verá completa, entonces la selecciona con botón derecho y vas a las propiedades y selecciona formato, y en "modo de cambiar el tamaño" colocas extendida o zoom según te parezca, de esa maneras puedes jugar con los tamaños de las imágenes... ¿ok?
Muchas gracias esto funciona perfectamente, un millón de gracias, pero en cualquier forma tengo otro problemilla al generar el reporte con access y es que no puedo usar las propiedades can shrink and can grow con los objetos ole. Al tener objetos de diferentes dimensiones no puedo ajustar el tamaño de los mismos a el objeto, solo si hiciera un zoom y el objeto no se muestra con claridad en los casos en que estos son un poco más grandes. Que me aconsejas. He buscado en varios sitios y nadie tiene la solución para esto. No se si usando crystal reports combinado con access pueda lograr el resultado que quiero. ¿Alguna sugerencia?
Saludos
Alina
Saludos
Alina
De echo cambie la estructura de mi base de datos pues lo de los objetos no me dio resultado, y en lugar de almacenar la preguntas almacene los path de los documentos word que contienen cada una de las misma, y he aquí mi problema.
Mi problema es el siguiente, tengo una base de datos en access que se encarga de elaborar exámenes según la elección del usuario.En dicha base de datos tengo una tabla en la cual guardo ya las preguntas que conformaran parte del examen que se va a imprimir después de procesar el pedido del usuario, ahí esta el numero de la pregunta, los puntos que vale la pregunta y el path del documento word que contiene el texto de la pregunta, algo así:
NoPreg Puntos Path
1 15 c:\WordDoc\Preg3245.doc
2 6 c:\WordDoc\Preg2424.doc
Mi pregunta es como yo puedo crear un documento word en el cual pueda combinar los campos y el texto de la pregunta para imprimir el examen. El formato de salida debe quedar de la siguiente forma:
(15) 1. (texto de la pregunta)
(6) 2. ( texto de la pregunta)
Gracias
Mi problema es el siguiente, tengo una base de datos en access que se encarga de elaborar exámenes según la elección del usuario.En dicha base de datos tengo una tabla en la cual guardo ya las preguntas que conformaran parte del examen que se va a imprimir después de procesar el pedido del usuario, ahí esta el numero de la pregunta, los puntos que vale la pregunta y el path del documento word que contiene el texto de la pregunta, algo así:
NoPreg Puntos Path
1 15 c:\WordDoc\Preg3245.doc
2 6 c:\WordDoc\Preg2424.doc
Mi pregunta es como yo puedo crear un documento word en el cual pueda combinar los campos y el texto de la pregunta para imprimir el examen. El formato de salida debe quedar de la siguiente forma:
(15) 1. (texto de la pregunta)
(6) 2. ( texto de la pregunta)
Gracias
Muchas gracias por tu respuesta, Estoy rezando porque me funcione pero por la pinta me parece que si. Imagina, tengo que terminar este trabajo para la próxima semana. Lo implementare hoy en la noche.
Una vez más un millón de gracias
Solo una preguntica, en mi caso como tendría que insertar también los campos, ¿me aconsejas que combine mail merge co esto que me mandas de add documento?
No se probare hoy a ver que dudas me surgen
saludos
Trinitri
Una vez más un millón de gracias
Solo una preguntica, en mi caso como tendría que insertar también los campos, ¿me aconsejas que combine mail merge co esto que me mandas de add documento?
No se probare hoy a ver que dudas me surgen
saludos
Trinitri
Primero tienes que marcar el punto donde quieras colocar la información en Word. Para ello entras en el documento y en el sitio donde quieres que access escriba colocas el cursor seleccionas Insertar->marcador en el menú y agregas el nombre que quieras en mi ejemplo "MemoToLine", luego vas a access y en el entorno de código visual vas a activar en el menú de herramientas la siguiente referencia"Microsoft 10.0 Object Library" esto es para que te active la librería de comandos que vas a ejecutar desde access. Anexo te envío un código de ejemplo que vas a pegar en un evento click de algún objeto de un formulario:
c:\....: es donde tienes tu archivo word
Employees :Es la tabla
EmployeeName: es un campo de la tabla employees.
Si quieres escribir dos campos o trs seria EmployeeeName & " " & Direction.
' Abrir un memo en Word e insertar texto - utilizado por el comando del menú.
Dim rstEmployees As New ADODB.Recordset
Dim appword As New Word.Application
' Abrir un grupo de registros basado en la consulta EmployeesWithOpenIssues.
rstEmployees.Open "EmployeesWithOpenIssues", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
' Si nadie tiene temas abiertos, mostrar un mensaje y salir.
If rstEmployees.RecordCount = 0 Then
DisplayMessage "TNo existen temas abiertos."
Exit Function
End If
With appword
.Documents.Add "c:\Documents and Settings\Jose\Mis documentos\Access\MacrosVisual\ch14Memo.doc"
.ActiveDocument.ShowSpellingErrors = False
.Selection.GoTo wdGoToBookmark, Name:="MemoToLine"
.Visible = True
End With
'Poner los nombres en el documento word
Do Until rstEmployees.EOF
Appword. Selection. TypeText rstEmployees!EmployeeName & " "
RstEmployees. MoveNext
Loop
c:\....: es donde tienes tu archivo word
Employees :Es la tabla
EmployeeName: es un campo de la tabla employees.
Si quieres escribir dos campos o trs seria EmployeeeName & " " & Direction.
' Abrir un memo en Word e insertar texto - utilizado por el comando del menú.
Dim rstEmployees As New ADODB.Recordset
Dim appword As New Word.Application
' Abrir un grupo de registros basado en la consulta EmployeesWithOpenIssues.
rstEmployees.Open "EmployeesWithOpenIssues", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
' Si nadie tiene temas abiertos, mostrar un mensaje y salir.
If rstEmployees.RecordCount = 0 Then
DisplayMessage "TNo existen temas abiertos."
Exit Function
End If
With appword
.Documents.Add "c:\Documents and Settings\Jose\Mis documentos\Access\MacrosVisual\ch14Memo.doc"
.ActiveDocument.ShowSpellingErrors = False
.Selection.GoTo wdGoToBookmark, Name:="MemoToLine"
.Visible = True
End With
'Poner los nombres en el documento word
Do Until rstEmployees.EOF
Appword. Selection. TypeText rstEmployees!EmployeeName & " "
RstEmployees. MoveNext
Loop
En el ejemplo que te envío los campos se insertan en el ultimo párrafo, en mi ejemplo se iserta solamente un campo que es employeeName si deseas insertar más de uno sería colocando el & debes tener en cuanta de colocar un " " entre campo y campo para que no te queden pegados
Do Until rstEmployees.EOF
appword.Selection.TypeText rstEmployees!EmployeeName & " "& rstEmployees!EmployeeDirection
rstEmployees.MoveNext
Loop
Do Until rstEmployees.EOF
appword.Selection.TypeText rstEmployees!EmployeeName & " "& rstEmployees!EmployeeDirection
rstEmployees.MoveNext
Loop
Muchas gracias por todo. Finalmente halle la respuesta. De hecho tenia que insertar campos de una tabla pero también partes de un documento word del cual confromaba el path con el numero de la pregunta y una ruta de una carpeta fija en la cual están todas las preguntas. Tus aclaraciones me sirvieron de muco pues había algunos campos de la tabla de agregar. Lo que hice fue más o menos lo siguiente. Use el insertfile. Debajo te escribo el código, claro al principio abrí el nuevo documento word y le inserte el logo y todo lo demás, esta es solo la parte donde inserto los campos. Tu ayuda me fue muy útil, muchas gracias por tu tiempo.
Saludos
Alina
Do Until SelTab.EOF
MyName = "C:\WordDoc\" & SelTab![QuCode_qu] & ".doc"
With Selection
.InsertBefore ("(" & SelTab![mark] & ") " & SelTab![NoQuestion] & ". ")
.MoveDown
.InsertFile FileName:=MyName, ConfirmConversions:=False
.InsertParagraphAfter
.Collapse Direction:=wdCollapseEnd
End With
SelTab.MoveNext
Loop
SelTab.Close
End Function
Saludos
Alina
Do Until SelTab.EOF
MyName = "C:\WordDoc\" & SelTab![QuCode_qu] & ".doc"
With Selection
.InsertBefore ("(" & SelTab![mark] & ") " & SelTab![NoQuestion] & ". ")
.MoveDown
.InsertFile FileName:=MyName, ConfirmConversions:=False
.InsertParagraphAfter
.Collapse Direction:=wdCollapseEnd
End With
SelTab.MoveNext
Loop
SelTab.Close
End Function
- Compartir respuesta
- Anónimo
ahora mismo