Grabar EditBox en SQL Server

481 views
Skip to first unread message

Ysmael

unread,
Jun 16, 2011, 2:33:43 AM6/16/11
to Comunidad de Visual Foxpro en Español
Buenas noches a todos:

Aprovecho este foro para pedir una orientacion con respecto a un valor
que tengo en un EditBox, el cual se ingresa texto con saltos de lineas
(enter) y al momento de Grabar este valor en un tabla que esta en un
servidor SQL Server 2005 , el programa me genera un error. El campo es
de tipo vchar.
Si en el EditBox le ingreso una linea de datos sin ningun salto de
linea (tecla ENTER) ... el programa SI hace la grabacion... Me he
dado cuenta que el error es por que se ingresa "saltos de lineas".

Como puedo hacer para que me permita hacer la Grabacion en el SQL.
- tengo que cambiar el tipo de dato en el campo...???
- existe otra forma... de manejar este tipo de campo... antes de
Grabar en el SQL...??


De antemano Gracias.. por su tiempo... y sus comentarios.

Walter R. Ojeda Valiente

unread,
Jun 16, 2011, 2:52:56 AM6/16/11
to publice...@googlegroups.com
¿Antes de grabar el campo no has probado quitarle los saltos de línea con la función STRTRAN()?

Algo como:

MiCampo = STRTRAN(MiCampo, CHR(10), "")
MiCampo = STRTRAN(MiCampo, CHR(13), "")

Aunque desde luego sería preferible usar constantes declaradas en lugar de los números 10 (LINEFEED) y 13 (ENTER_KEY)

Saludos.

Walter.




> Date: Wed, 15 Jun 2011 23:33:43 -0700
> Subject: [vfp] Grabar EditBox en SQL Server
> From: yche...@gmail.com
> To: publice...@googlegroups.com

PabloRoca

unread,
Jun 16, 2011, 3:52:11 AM6/16/11
to Comunidad de Visual Foxpro en Español
Yesmael,

A ver ...

SQL Server te debe manejar sin ningún problema los ENTER, por lo que
yo no cambiaría mucho en el código Fox. Un VARCHAR es perfectamente
válido para eso.

¿Que error exactamente te da?
¿Que utilizas para grabar en SQL Server¿ ODBC?? otra cosa .. que
versión? Revisa si ese driver tiene bloqueado caracteres especiales
¿La tabla de SQL Server? Que idioma o configuración tiene?

Sabrás que en Windows el avance de linea es un CHAR(13) y un CHR(10) a
continuación .. revisa si mandas exactamente eso.
Haz una prueba .. intenta grabar en vez de CHR(13) y CHR(10) un \r\n a
ver si va con eso

texto = STRTRAN(texto,CHR(13),"\r")
texto = STRTRAN(texto,CHR(10),"\n")

El problema está en el lado de SQL Server o en el driver.

Saludos,

Pablo Roca
Sysop de PortalFox
España

On 16 jun, 08:52, "Walter R. Ojeda Valiente" <w...@hotmail.com> wrote:
> ¿Antes de grabar el campo no has probado quitarle los saltos de línea con la función STRTRAN()?
>
> Algo como:
>
> MiCampo = STRTRAN(MiCampo, CHR(10), "")
>
> MiCampo = STRTRAN(MiCampo, CHR(13), "")
>
> Aunque desde luego sería preferible usar constantes declaradas en lugar de los números 10 (LINEFEED) y 13 (ENTER_KEY)
>
> Saludos.
>
> Walter.
>
>
>
> > Date: Wed, 15 Jun 2011 23:33:43 -0700
> > Subject: [vfp] Grabar EditBox en SQL Server
> > From: ychem...@gmail.com

Javier Brumatti

unread,
Jun 16, 2011, 8:00:58 AM6/16/11
to publice...@googlegroups.com
El campo en el sql server deberia ser de tipo text .. no varchar

--
Este mensaje ha sido analizado en busca
de virus y otros contenidos peligrosos,
y se considera que está limpio.

Lewis López

unread,
Jun 16, 2011, 9:58:38 AM6/16/11
to publice...@googlegroups.com
PASA QUE QUE EL EDITBOX TRABAJA CON CAMPOS MEMO QUE SI LE PERMITEN LAS TABULACIONES O ESPACIOS.
DEBERIS PROBAR CAMBIANDOLO POR UN TEXTBOX QUE SI TRABAJA VCHAR O CAMBIAR EL CAMPO DE TU TABLA

SOLUCIONES PC & REDES
Desarrollo de Software, diseños Arquitectónicos, venta, reparación y mantenimiento de Computadores.
Lewis Oswaldo López Gómez .
Teg. En obras Civiles.
Analista y Programador de sistemas.
Cel: 311 665 0342 - 301 457 08 22




Date: Thu, 16 Jun 2011 09:00:58 -0300
From: jbru...@amr.org.ar
To: publice...@googlegroups.com
Subject: Re: [vfp] Grabar EditBox en SQL Server

Ysmael

unread,
Jun 16, 2011, 3:49:42 PM6/16/11
to Comunidad de Visual Foxpro en Español
Gracias a todos por su tiempo y sus comentarios.

Sobre mi problema... les explico a mas detalle:
- Se necesitan ingresar TEXTO . el cual puede ser 1...2... o mas
lineas... y entre cada linea tiene que haber un "salto de
linea" (chr(13)), para eso a mi parecer la clase EDITBOX se ajusta al
requerimiento.
- Si lo hago con la clase TEXTO solo puedo ingresar 1 linea de Texto,
salvo que añada varios controles de texto, pero como les comento en
ocaciones puedo ingresar uno o hasta mas textos.. y para eso
tendria limitado el ingreso.
- Al momento de grabar UNA sola linea... sin ningun avance de
linea... la grabacion se realiza bien... en el servidor SQL Server
2005.
- El mensaje de errior que muestra dice: "EL COMANDO CONTIENE UNA
FRASE O PALABRA CLAVE NO RECONOCIDA", viendo la variable donde se
guarda el valor del EditBox, el contenido contiene dos rayitas
verticales en negrita, algo asi como por ejemplo: "Ordenar linea de
fabrica||Verificar personal||Sanitizar mesa",
donde asumo que las rayitas verticales son el retorno de linea mas el
CHR(10).
- Estoy trabajando con Visual FoxPro 9.0 SP1, y la conexion al SQL lo
hago con el ODBC.. y revisando veo... el driver veo que tiene marcado
la opcion: "Realizar conversion de los datos de caracteres"... lo
quite ... y volvi a probar... y tampoco resulto.
- Para la grabacion en el SQL, lo hago directamente con el comando sql
INSERT y el idioma de la Base de Datos esta en "Español
(alfabetizacion internacional)" y la Intercalacion =
"Modern_Spanish_CS_AS"
- La Tabla que esta dentro de la BD la propiedad Intercalacion dice:
"SQL_Latin1_General_CP850_CI_AS"
- La Version del SQL Server 2005 es : 9.00.2047.00
- Si le quito los caracteres CHR(13) y CHR(10) luego tengo que
presentarlo nuevamente en el EditBox para su mantenimiento... como
haria para retorno esos caracteres en las posiciones iniciales...


Muchas gracias por el apoyo...!!

Ysmael Chempen Balcazar
Yobel SCM
Lima - Perú

Alfonso Arias Lemas

unread,
Jun 16, 2011, 6:15:57 PM6/16/11
to publice...@googlegroups.com
Si te es posible muda el tipo de campo de la base de datos SQL a NVARCHAR, esto te permite guardar testos unicode y por ende caracteres especiales, de hecho yo tengo bases de datos con tablas que guardan archivos de textos completo y nunca tuve problemas.
Saludos,
   Alfonso


De: Javier Brumatti <jbru...@amr.org.ar>
Para: publice...@googlegroups.com
Enviado: jue,16 junio, 2011 11:00
Asunto: Re: [vfp] Grabar EditBox en SQL Server

Kalen Storgen

unread,
Aug 25, 2015, 2:14:28 PM8/25/15
to Comunidad de Visual Foxpro en Español, yche...@gmail.com
Yo te entendi claramente

y esta es la solucion

&& almacenamos el contenido del editbox, no importa las lineas que tenga en una variable
VAR_COMENTARIO=ALLTRIM(THISFORM.EDIT1.VALUE) 


&& reemplazamos los saltos de linea y los retornos de carro con este codigo dentro de la variable creada
VAR_COMENTARIO = STRTRAN(VAR_COMENTARIO,CHR(13),'"+CHR(13)+"')
VAR_COMENTARIO = STRTRAN(VAR_COMENTARIO,CHR(10),'"+CHR(10)+"')


luego actualizas con un update
ejemplo

NEX_a=SQLEXEC(GGHANDLE,"UPDATE CABALMACEN SET COMENTARIO='&VAR_COMENTARIO.' where  NUMERO='&VAR_NUMERO.'")


espero que sea de utilidad a alguien aunque sea muy tarde


Victor Espina

unread,
Aug 25, 2015, 3:28:50 PM8/25/15
to Comunidad de Visual Foxpro en Español, yche...@gmail.com
Creo que realmente tu error viene por otro lado. Tal como dice Pablo, no hay ningun problema en grabar CRLFs dentro de un campo VARCHAR, NVARCHAR o TEXT.  Por otro lado, la forma correcta de grabar CUALQUIER VALOR en una fuente de datos ODBC (sea SQL Server, MySql, Oracle, Firebird, PostgreSQL, etc), usando SPT es:

PRIVATE cVar,cClave
cVar
= THISFORM.edtDireccion.Value  
cClave
= THISFORM.txtCodigo.Value


SQLEXEC
(nConnHandle, "UPDATE tabla SET columna = ?cVar WHERE columna = ?cClave")




Soluciones como:

SQLEXEC(nConnHandle, "UPDATE tabla SET columna = '" + cVar + "'")
SQLEXEC
(nConnHanlde, "UPDATE tabla SET columna = '&cVar'")



no son recomendables y pueden generar errores si el valor de cVar contiene caracteres como comillas, etc.


Victor Espina

Fidel Charny

unread,
Aug 25, 2015, 6:49:01 PM8/25/15
to Comunidad de Visual Foxpro en Español
Esto viene del 2011. O estoy mal con las fechas?
Reply all
Reply to author
Forward
0 new messages