Informe access no muestra todos el texto de un campo
Tengo un informe que se lanza desde un formulario previamente filtrado todo funciona correctamente, pero me di cuenta que tengo un campo descripción (Texto largo) y no muestra en el informe todo lo que se ha registrado en ese campo solo muestra parte de ello.
He probado cambiando las propiedades del campo de autoextensible en si y también insertando un subinforme sobre dicho campo y no consigo que me muestre todo el texto, por si tiene importancia el formulario de donde procede es un formulario continuo y los campos en el informe están dentro del detalle. Lo que muestra este informe son todos aquellos registros que cumplían los requisitos del filtro, y se van mostrando unos seguidos de otros.
Os pido ayuda porque me resulta raro ya que tengo un informe que lanzo desde un formulario filtrado por el id para imprimir solo ese registro activo y aqui si que me muestra todo lo que este en el campo descripción.
1 Respuesta
Kike: Si tienes una consulta para el informe, creo que no te mostrará más de 250 caraceres aproximadamente.
Mira de hacer el informe directamente sobre la Tabla y creo que te los mostrará todos.
Mis saludos >> Jacinto
Muchas gracias Jacinto lo he comprobado y justo 253 como máximo me entran, lo tengo sobre una consulta porque tengo unos datos que están en otra tabla y asociados mediante un id en común en esa tabla me faltan unos datos.
Tu crees que si creo el formulario sobre la tabla directamente, y en el informe añado un subinforme basándome en el id en cuestión me funcionaria?.
Un saludo
Como bien dices tenia el formulario basado en una consulta en la cual aprovechaba para filtrar los resultados entre dos fecha mediante un formulario previo, este es el código que tenía en el campo fecha de la consulta:
>=[Formularios]![FConsultas]![txtDesde] Y <=[Formularios]![FConsultas]![txtHasta]
Ahora bien como le paso los parámetros desde el propio Formulario? en el cmd del formualrio que usaba para insertar las fechas tengo este codigo:
Private Sub cmdAbreFFiltros_Click() Dim vFD As Variant, vFH As Variant vFD = Nz(Me.txtDesde.Value, 0) vFH = Nz(Me.txtHasta.Value, 0) If vFD = 0 Then MsgBox "No ha indicado la fecha inicial", vbInformation, "SIN FECHA" Exit Sub End If If vFH = 0 Then MsgBox "No ha indicado la fecha final", vbInformation, "SIN FECHA" Exit Sub End If DoCmd.OpenForm "FFiltroFechas1" DoCmd.Close acForm, "FInicio" With Forms!FFiltroFechas1 .txtDesdeF.Value = vFD .txtHastaF.Value = vFH End With End Sub
Como puedo solucionar esto para ver si de esta forma, puedo solucionar lo del campo descripcion?
Espero que me puedas ayudar porque abrir el formulario filtrado por codigo sin la consulta no se como hacerlo.
Gracias de antemano
Un saludo
Kike: Como no sé si solo lo vas a utilizar al abrir el Formulario o más vece, te pongo el código y lo pones en un Botón o donde lo necesitas.
Dim FiltroFechas As string
FiltroFechas = "FechaEntrega BETWEEN #" & Format(Nz(Me.DesdeFecha, #1/1/1900#), "mm/dd/yyyy") & _
"# AND #" & Format(Nz(Me.HastaFecha, #12/31/9999#), "mm/dd/yyyy") & "#"
If FiltroFechas <> "" Then
Me.Filter = FiltroFechas
Me.FilterOn = True
Else
Me.FilterOn = False
End If
Y si quieres quitar el filtro, en otro botón
Me.Filter = ""
Me.FilterOn = False
Espero no tengas dificultades. Mis saludos >> Jacinto
Kike: Aunque se me ha olvidado comentarte que tienes que sustituir.
FechaEntrega, DesdeFecha y HastaFecha por los nombres que tu tengas me imagino que así lo has entendido y abundando:
FechaEntrega >> será el Nombre del Campo de tu tabla y DesdeFecha y HastaFecha son los Nombres de Tus cuadros de Texto en el Formulario. Saludos >> Jacinto
Buenas noches, y gracias de antemano como siempre. He solucionado el problema simplemente cambiando el origen del informe y basándolo sobre la tabla directamente y aplicándole el filtro del formulario y aunque este basado en la consulta me funciona correctamente.
Pero por aprender algo nuevo he intentado realizar lo que me dijiste, primero basar el formulario sobre la tabla directamente y luego acoplar el código que me pasaste junto con el que yo tenia.
Private Sub cmdAbreFFiltros_Click() Dim FiltroFechas As String Dim vFD As Variant, vFH As Variant vFD = Nz(Me.txtDesde.Value, 0) vFH = Nz(Me.txtHasta.Value, 0) FiltroFechas = "Fecha BETWEEN #" & Format(Nz(Me.txtDesde, #1/1/1900#), "mm/dd/yyyy") & _ "# AND #" & Format(Nz(Me.txtHasta, #12/31/9999#), "mm/dd/yyyy") & "#" If vFD = 0 Then MsgBox "No ha indicado la fecha inicial", vbInformation, "SIN FECHA" Exit Sub End If If vFH = 0 Then MsgBox "No ha indicado la fecha final", vbInformation, "SIN FECHA" Exit Sub End If If FiltroFechas <> "" Then Me.Filter = FiltroFechas Me.FilterOn = True DoCmd.OpenForm "FFiltroFechas1" With Forms!FFiltroFechas1 .txtDesdeF.Value = vFD .txtHastaF.Value = vFH End With Else Me.FilterOn = False End If
Ya que en el formulario que abre tengo dos campos txtDesde y txtHasta y coge los valores del formulario que uso para filtrar que es lo único que me funciona.
El campo por el que tengo que filtrar se llama Fecha y los campos del Formulario que uso para ello se llaman txtDesde y txtHasta, me he dado cuenta que no indico la Tabla (TDatos) en la cual están los datos a Filtrar y sobre el cual base ya el formulario.
Para que te hagas una pequeña idea:
Formulario FConsultas tiene dos campos txtDesde y txtHasta y un cmd en el cual puse el código que puse arriba y es el cual me debería de abrir el formulario FFiltroFechas1 el cual ya lo base en la tabla TDatos y en el cual están los campos con las fechas filtradas además de otro tipo de campos más para filtrar.
Un saludo
Kike: En lo que me citas estás duplicando instrucciones sin ninguna necesidad.
Ignoro la utilidad de dos Formularios, ya que los filtros a mi modo de ver deberían de estar todos en el Formulario final.
En cuanto al citar la Tabla, ya lo haces de Forma implicita en >>
FiltroFechas = "Fecha...
Y una Observación. El tener un Campo llamado Fecha puede causarte algún problema, por ser Fecha() una palabra reservada de Access.
Ya me contarás. Saludos >> Jacinto
Buenas noches Jacinto estoy trabajando en este problema que creía haber solucionado pero no es así todavía. He seguido su consejo y he basado el formulario directamente sobre la tabla y estoy intentando acoplar el código del filtro que tengo en el formulario junto con el de las fechas que me pasaste por separado funcionan correctamente pero claro si filtro las fechas y luego uso los otros campos pues de las fechas ya no hace caso, este es el código de los filtros que tengo dentro del icono de filtro:
Private Sub cmdFiltrar_Click() Dim vAccion As String Dim vMenor As String Dim vFamilia As String Dim vLargo As Integer Dim miFiltro As String vAccion = Nz(Me.cboAccion.Value, "") vMenor = Nz(Me.cboMenor.Value, "") vFamilia = Nz(Me.cboFamilia.Value, "") miFiltro = "" If vFechas <> "" Then miFiltro = miFiltro & " AND [Fecha]=#" & Format(vFecha, "mm/dd/yyyy") & "#" End If If vAccion <> "" Then miFiltro = "AND [Accion]='" & vAccion & "'" End If If vMenor <> "" Then miFiltro = miFiltro & "AND [Menor]='" & vMenor & "'" End If If vFamilia <> "" Then miFiltro = miFiltro & "AND [Familia]='" & vFamilia & "'" End If vLargo = Len(miFiltro) If vLargo > 0 Then miFiltro = Right(miFiltro, vLargo - 4) End If Me.Filter = miFiltro Me.FilterOn = True
Y esta una imagen para que te hagas una idea
Pues bien he intentado mezclar ambos códigos el que tu me pasaste (que lo puse en el cmd que se ve y funciona correctamente) y el otro código para que sume todos los filtros primero filtrar entre fechas y luego ir filtrando según necesite pero siempre dentro de ese rango de Fechas.
Private Sub cmdFiltrar_Click() Dim vFechas As String Dim vAccion As String Dim vMenor As String Dim vFamilia As String Dim vLargo As Integer Dim miFiltro As String vAccion = Nz(Me.cboAccion.Value, "") vMenor = Nz(Me.cboMenor.Value, "") vFamilia = Nz(Me.cboFamilia.Value, "") vFechas = "Fecha BETWEEN #" & Format(Nz(Me.txtDesdeF, #1/1/1900#), "mm/dd/yyyy") & _ "# AND #" & Format(Nz(Me.txtHastaF, #12/31/9999#), "mm/dd/yyyy") & "#" miFiltro = "" If vFechas <> "" Then miFiltro = miFiltro & " AND [Fecha]=#" & Format(vFecha, "mm/dd/yyyy") & "#" End If If vAccion <> "" Then miFiltro = "AND [Accion]='" & vAccion & "'" End If If vMenor <> "" Then miFiltro = miFiltro & "AND [Menor]='" & vMenor & "'" End If If vFamilia <> "" Then miFiltro = miFiltro & "AND [Familia]='" & vFamilia & "'" End If vLargo = Len(miFiltro) If vLargo > 0 Then miFiltro = Right(miFiltro, vLargo - 4) End If Me.Filter = miFiltro Me.FilterOn = True End Sub
y si no uso las fechas funciona correctamente pero cada vez que las uso me da este error:
y me marca linea de Me.Filter=miFiltro
Espero que me pueda ayudar a solucionarlo.
Un saludo
En el código hay un error que corregí en esta línea:
If vFechas <> "" Then miFiltro = miFiltro & " AND [Fecha]=#" & Format(vFechas, "mm/dd/yyyy") & "#" End If
Pero me da el mismo error
Kike: No veo de donde sale esa parte de la línea
miFiltro = miFiltro & " AND [Fecha]=#" & Format(vFechas, "mm/dd/yyyy") & "#"
pon ésto:
miFiltro = MiFiltro & vFechas
Saludos >> Jacinto
Lo he probado he dejado el código así como me dices:
Private Sub cmdFiltrar_Click() Dim vFechas As String Dim vAccion As String Dim vMenor As String Dim vFamilia As String Dim vLargo As Integer Dim miFiltro As String vAccion = Nz(Me.cboAccion.Value, "") vMenor = Nz(Me.cboMenor.Value, "") vFamilia = Nz(Me.cboFamilia.Value, "") vFechas = "Fecha BETWEEN #" & Format(Nz(Me.txtDesdeF, #1/1/1900#), "mm/dd/yyyy") & _ "# AND #" & Format(Nz(Me.txtHastaF, #12/31/9999#), "mm/dd/yyyy") & "#" miFiltro = "" If vFechas <> "" Then miFiltro = miFiltro & vFechas End If If vAccion <> "" Then miFiltro = "AND [Accion]='" & vAccion & "'" End If If vMenor <> "" Then miFiltro = miFiltro & "AND [Menor]='" & vMenor & "'" End If If vFamilia <> "" Then miFiltro = miFiltro & "AND [Familia]='" & vFamilia & "'" End If vLargo = Len(miFiltro) If vLargo > 0 Then miFiltro = Right(miFiltro, vLargo - 4) End If Me.Filter = miFiltro Me.FilterOn = True End Sub
y pongo dos fechas y me sale este imputbox con la letra a:
Si sabes de otra solución para resolver esto estoy dispuesto a cambiarlo de la otra forma al tenerlo en una consulta solo me daba en el formulario los resultados de esa tabla entre esas dos fechas y luego allí aplicaba los filtros.
Como te dije ayer creía haberlo solucionado dejando así pero el informe basandolo en la tabla directamente (para que me escribiera todo el campo texto largo) pasándole el filtro a la hora de abrirlo con este código:
Private Sub cmdImprimir_Click() DoCmd.OpenReport "InfFiltroFechas", acViewPreview, , Me.Filter End Sub
Pero me di cuenta que me filtraba los resultados pero no me respetaba el rango de fechas, por eso intente adaptarlo de esta forma y con este nuevo codigo pero veo que no es tan sencillo.
Gracias por ayudarme de verdad te lo agradezco mucho.
Kike: Justo iba a cerrar el Pc y he visto tu mensaje.
Mañana me haré un resument y le dedico un rato. Te comentaré.
Mis saludos >> Jacinto
Kike: Después de revisar el historial de la pregunta, creo que lo mejor es que veas y apliques si quieres, el código completo de Filtrado, confección de una Tabla temporal etc., hasta la salida de un informe.
Tengo dos ejemplos, muy parecidos que puedes ver en:
http://www.mediafire.com/download/31xj4jpn6r48yq7/BDIngSocial_00.rar
y éste otro
http://www.mediafire.com/download/j2tnbpvxs61inpz/BDIngSocial_02.rar
Además si lo quieres utilizar, hay una forma de ordenar, Filtro alfabético...
Mira en los controles ocultos, porque hay Combos vacíos que puedes utilizar haciendolos visibles. A partir de ahí y sobre el código, si tienes dudas las podemos comentar.
Mis saludos >> Jacinto
Buenas tardes Jacinto:
He estado echando un ojo a tus ejemplos y me parecen interesantes pero he visto que el filtro de las fechas funciona independientemente de los demás. Los otros filtros si son sumatorios pero las fechas ya no cuentan al usarlo y yo lo que quería es que si contaran es decir filtrar entre dos fechas y que luego los filtros que hay se apliquen dentro de ese rango de fechas.
Te paso un ejemplo de la bd con el formulario en concreto y el informe para que le eches un vistazo y veas lo que intento explicarte.
el FConsultas es como lo tenia yo en un principio le paso mediante un formulario las fechas a la consulta y esta abre el formulario filtrado, luego aquí yo usaba los demás filtros y siempre se regían entre los rangos de fechas marcados, pero me encontré con el problema de que no me escribía más de 250 caracteres en un campo por lo que base el informe directamente sobre la tabla y le pase el filtro y me lo escribe todos los caracteres en el campo deseado pero me pasa el filtro que yo haga si pero sin respetar el rango de Fechas que haya marcado es decir me saca todos los registro que coincidan con el filtro sin respetar el rango de fechas.
Te añadí luego el formulario FFiltroFechas_Modificando que es el que use para intentar aplicar el codigo que miramos ayer pero no consigo que me funcione.
Te dejo el enlace para ver si hice algo mal en el codigo y veas como se comporta la bd que igual es más simple de lo que parece.
https://mega.nz/#!1hskFILJ!4htex01yk59-CMhDuU2KtC2d6VmsRkoddxm6pmhb-Uo
Muchas gracias por todo de verdad con estos ejemplos sacare gran partido para mis conocimientos.
Kike: Al final, en lugar de ir repasando y probando errores, he preferido hacerte el filtro completo y así te sirve de base para otros casos que puedas necesitar.
Lo he probado con unos cuantos valores y me
Lo primero Muchísimas Gracias de verdad seguro que me servirá para el futuro y intentare comprender como se hace para no tener estos problemas más adelante.
Me lo podrías mandar? Creo que se te olvido el enlace
Kike: Mis disculpas, porque justo te contesté para ponerte el enlace y no te lo hepuesto.
http://www.mediafire.com/download/3ul2211no530sj0/BaseKikeFiltro.rar
Mis saludos >> Jacinto
¡Gracias! y mil gracias he estado ojeando el codigo y es mas complejo que el que tenía. Funciona Correctamente y el informe también. Voy a detenerme mañana en el codigo más detenidamente e intentare crear algo yo distinto para intentar comprender el funcionamiento del mismo. Si te parece bien podríamos tener esta respuesta abierta un dar de días como mucho por si me surgen dudas sobre el código?
Por curiosidad el filtro que yo estaba usando encadenarlo con las fechas como quería sería posible o sería más complejo que de esta forma, aunque ya se que cada cosa se puede realizar de muchas formas.
De nuevo muchas gracias y una cosa más aprendida.
Un saludo
Kike: No te preocupe el repreguntar.
El método que estabas utilizando es muy válido, pero dado que tengo bastante facilidad con el que te he enviado y se trataba que de momento salieras he preferido hacertelo con el que yo utilizo.
Ahora con más calma me miraré la causa por la que no funcionaba el que me has enviado. Lo corregiré y ya sea en éste hilo o en alguno que vea tuyo te haré mención y te facilitaré el enlace pero será dentro de unos días porque voy un poco justo de tiempo.
Mis saludos >> Jacinto
Muchas gracias, por ser tan amable intentare familiarizarme también con este método para ampliar conocimientos.
gracias por intentar encontrar el error en ese método cuando tengas tiempo para tener más posibilidades y conocimientos sobre filtros
Saludos
Kike: Ya que parece que tú estás bastante acostumbrado al tipo Original de Filtro que me enviaste, te pongo el enlace con el problema que tenías solucionado.
Quería mejorarte un poco más el diseño de tu BD, pero por cuestiones de tiempo no he seguido profundizando en el análisis. Mira, porque algo he modificado.
http://www.mediafire.com/download/w3gtxtakxe5gyx0/BaseKikeSusFiltros.rar
Mis saludos >> Jacinto
¡Gracias! ¿Me podrías dar un mail donde preguntarte otra cosa? Mándame un mail al mio [email protected] si lo prefieres.
Muchas gracias le echo un ojo para ver los cambios.
- Compartir respuesta
En una tabla POR que cree con un campo memo tuve el mismo problema al crear un informe basado en una consulta A, el campo solo mostraba 255 caracteres. Tuve que crear una consulta de creación de tabla Y, pero al crear la tabla Y seguía mostrando el campo memo con 255 caracteres, tuve que hacer otra consulta B con la tabla origen POR y la nueva tabla Y relacionada con un campo id común a ambas tablas (no al campo memo). Luego en el informe como dato de origen puse a la consulta B y como dato del campo memo a la de la tabla de origen X. La consulta de creación de tabla lo ejecutaba antes de mostrar el informe. - Héctor Ramírez