Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] parámetro de cadena demasiado largo

Estas en el tema de parámetro de cadena demasiado largo en el foro de Bases de Datos General en Foros del Web. Hola a todos: Siento no haber conectado antes pero no me ha sido posible. He visto que tengo un nuevo mensaje en la pregunta que ...
  #1 (permalink)  
Antiguo 17/09/2013, 04:44
 
Fecha de Ingreso: agosto-2013
Mensajes: 9
Antigüedad: 11 años, 2 meses
Puntos: 0
parámetro de cadena demasiado largo

Hola a todos: Siento no haber conectado antes pero no me ha sido posible. He visto que tengo un nuevo mensaje en la pregunta que planteé, pero no sé muy bien cómo tengo que hacer para verlo. En cualquier caso, creo que ya pude resolverlo aunque no sé como indicar que está solucionado...
Me enfrento ahora con otro problema:
En un formulario llamado "productos_que_faltan" tengo tres cuadros de texto basados en una tabla llamada "clientes" cuya estructura es:
campo Idcliente - Campo clave, autonumérico, indexado sin duplicados
campo Nombreyapellidos - tipo texto
campo dirección - tipo texto

y un cuadro combinado basado en otra tabla llamada "Productos"
La estructura de la tabla es:
campo codigoproducto - Campo clave, autonumérico, indexado sin duplicados
campo Idcliente - tipo número
campo nombreproducto - tipo texto
campo descripción - tipo memo (en este campo se describen las propiedades del
producto, ya que el nombre no es lo suficientemente claro. En
ocasiones este campo ocupa más de 255 caracteres)

Al cambiar la selección del cuadro combinado, se ejecuta una consulta para poder obtener los datos del campo memo (ya que en el cuadro combinado no aparecen) y esos datos los paso a otro cuadro de texto del mismo formulario llamado producto1.

He colocado también un botón de comando de nombre "Enviar Carta" el cual, al hacer click, abre una plantilla en Word con la siguiente estructura:

encabezado con el logotipo y el nombre de la empresa.
detalle

#Nombre y apellidos#
#Dirección#

"Sentimos comunicarle que, por motivos ajenos a nuestra voluntad, no nos es posible servirle los siguientes productos:" (esto es un texto fijo)

#PRODUCTO1#

La idea es que, al pulsar el botón de comando "enviar carta", abra la plantilla de nombre "Noproductos" y sustituya el texto que va entre ## por el valor correspondiente del formulario. Encontré buscando en internet un código que os expongo a continuación y que funciona bien, salvo cuando el campo descripción tiene más de 255 caracteres. Entonces me aparece el mensaje de error "el parámetro de la cadena es demasiado largo". Solo cuelgo la parte del código referida a #PRODUCTO1# que es la que me da el error.
Código vb:
Ver original
  1. Private sub enviarcarta()
  2.  
  3.  Dim Word As New Word.Application
  4.  Dim Noproductos As Word.Document
  5.  Dim myRange as Range
  6.  
  7. Word.Visible = True
  8. Set Noproductos=Word.Documents.Open(Filename:="C:\Noproductos.docx", ReadOnly:=False
  9. Set myRange=Word.ActiveDocument.Content
  10.  
  11. With myRange.Find
  12. .ClearFormatting
  13. .Replacement.ClearFormatting
  14. .Text = #PRODUCTO1#
  15. .Replacement.Text = Producto1     'aquí es donde me da el error (producto1 es el
  16.                                                       nombre del cuadro de texto del formulario)
  17. .Execute Replace:=wdReplaceAll
  18. End With
  19. End Sub
Lo cierto es que no sé como solucionar este problema, ya digo que, el código funciona bien si el texto que debo introducir es menor de 255 caracteres. Agradezco desde ya cualquier orientación o ayuda pues no sé por donde seguir y se me hecha el tiempo encima (tengo que haberlo solucionado en esta semana

Última edición por gnzsoloyo; 17/09/2013 a las 08:14
  #2 (permalink)  
Antiguo 17/09/2013, 06:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: parámetro de cadena demasiado largo

Algunas preguntas previas:
- ¿Estás trabajando con VB.Net, o con otra cosa?
- ¿Qué usas de BBDD?
- ¿Lo que quieres resolver es el formulario? ¿Con qué está hecho ese form?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/09/2013, 06:45
 
Fecha de Ingreso: agosto-2013
Mensajes: 9
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: parámetro de cadena demasiado largo

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Algunas preguntas previas:
- ¿Estás trabajando con VB.Net, o con otra cosa?
- ¿Qué usas de BBDD?
- ¿Lo que quieres resolver es el formulario? ¿Con qué está hecho ese form?
Hola gnz
Utilizo VBA en una Base de datos de Access 2007 y lo que quiero es poder imprimir una carta desde el formulario que está creado en access pero para el diseño de la carta querría utilizar Word 2007. El formulario lo creé en vista diseño seleccionando formulario en blanco y me funciona todo bien salvo el pequeño detalle de la cadena demasiado larga (dichosa cadena...) En fin, no sé si he sabido responder a tus preguntas, si no es así, por favor ten paciencia conmigo, soy bastante novato en estas lides (bueno, creo que se nota bastante ¿no?
Muchas gracias por tu atención
  #4 (permalink)  
Antiguo 17/09/2013, 08:00
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: parámetro de cadena demasiado largo

No conozco los tipos de datos en access, pero investiga cual tipo de dato es el que te admite mas de 255 caracteres de longitud.

saludos,
libras
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 18/09/2013, 00:49
 
Fecha de Ingreso: agosto-2013
Mensajes: 9
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: parámetro de cadena demasiado largo

Cita:
Iniciado por Libras Ver Mensaje
No conozco los tipos de datos en access, pero investiga cual tipo de dato es el que te admite mas de 255 caracteres de longitud.

saludos,
libras
Hola libras, el tipo de dato que admite más de 255 caracteres es el que corresponde a tipo de campo "memo", en el formulario no tengo problemas, lo coge bien. El problema es que luego no me lo pasa a word... (Acabaré más loco de lo que ya estaba)

Muchas gracias por tu atención
  #6 (permalink)  
Antiguo 18/09/2013, 04:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: parámetro de cadena demasiado largo

Según entiendo, el problema puede darse porque no estás accediendo al texto de la plantillas, el cuerpo en sí, sino a la descripcion del documento.
Ese tipo de atributo siempre está limitado, al igual que los nombres de las hojas de un Excel.
Asegúrate de estar invocando a la propiedad correcta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 18/09/2013, 05:27
 
Fecha de Ingreso: agosto-2013
Mensajes: 9
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: parámetro de cadena demasiado largo

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Según entiendo, el problema puede darse porque no estás accediendo al texto de la plantillas, el cuerpo en sí, sino a la descripcion del documento.
Ese tipo de atributo siempre está limitado, al igual que los nombres de las hojas de un Excel.
Asegúrate de estar invocando a la propiedad correcta.
Hola gnz. Gracias una vez más por tu atención. Perdona mi ignorancia, pero no entiendo lo que me quieres decir... ¿Cómo debería hacer para acceder al texto de las plantillas?
Gracias, aunque no tenga la solución al problema, resulta muy gratificante comprobar que otras personas se molestan en intentar ayudarme.
  #8 (permalink)  
Antiguo 18/09/2013, 05:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: parámetro de cadena demasiado largo

No domino la estructura de los objetos Word.Application, pero desde el momento en que estás programado esa rutina en VBA, en realidad estás accediendo a una librería específica, la misma (si no me equivoco) a la que accedes cuando programas en VB.Net.
Ahora bien, cada objeto tiene propiedades y métodos, y una de esas tantas propiedades es la descripcion del documento, mientras que otra es el contenido. Y a mi entender estás accediendo al texto de la descripcion, no al texto del contenido.
¿Se entiende?
Esto es más dominio de programación .Net que de BBDD, por lo que sería mejor que acudieras a ese foro.

En cualquier caso, también se puede resolver con Google. Prueba esto: http://www.xtremevbtalk.com/showthread.php?t=238453
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 18/09/2013, 11:23
 
Fecha de Ingreso: agosto-2013
Mensajes: 9
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: parámetro de cadena demasiado largo

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No domino la estructura de los objetos Word.Application, pero desde el momento en que estás programado esa rutina en VBA, en realidad estás accediendo a una librería específica, la misma (si no me equivoco) a la que accedes cuando programas en VB.Net.
Ahora bien, cada objeto tiene propiedades y métodos, y una de esas tantas propiedades es la descripcion del documento, mientras que otra es el contenido. Y a mi entender estás accediendo al texto de la descripcion, no al texto del contenido.
¿Se entiende?
Esto es más dominio de programación .Net que de BBDD, por lo que sería mejor que acudieras a ese foro.

En cualquier caso, también se puede resolver con Google. Prueba esto: [url]http://www.xtremevbtalk.com/showthread.php?t=238453[/url]
Gracias gnz. Voy a probar y te cuento... ¡A ver si hay suerte!
  #10 (permalink)  
Antiguo 18/09/2013, 11:41
 
Fecha de Ingreso: agosto-2013
Mensajes: 9
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: parámetro de cadena demasiado largo

¡Por fin! ¡Funciona perfectamente! He probado con el código que aparece en el link que me has dado y... Sí, ahora sí. Muchísimas gracias por tu ayuda. Seguiré visitando (y preguntando, a ver si voy aprendiendo algo) el foro regularmente y, si en alguna ocasión veo que puedo ayudar (cosa difícil con lo poco que sé, pero... nunca se sabe) pues lo intentaré. De momento cuelgo el código que aparecía en el link por si a alguien le puede ser útil tal y como queda al añadirlo al que ya expuse:
Código vb:
Ver original
  1. Private sub enviarcarta()
  2.  
  3.  Dim Word As New Word.Application
  4.  Dim Noproductos As Word.Document
  5.  Dim myRange as Range
  6.  
  7. Word.Visible = True
  8. Set Noproductos=Word.Documents.Open(Filename:="C:\Noproductos.docx", ReadOnly:=False
  9. Set myrange = word.ActiveDocument.Content
  10.   With myrange.Find
  11.   .ClearFormatting
  12.   .Text = "#PRODUCTO1#"
  13.   .Forward = True
  14.   .Wrap = wdFindContinue
  15.   Do While .Execute
  16.    myrange.Text = Producto1
  17.   Loop
  18.   End With

Última edición por gnzsoloyo; 18/09/2013 a las 13:16

Etiquetas: cadena, demasiado, largo, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:18.