Problemas con la longitud de un string SQL

Por medio de un formulario recojo los datos para añadir un registro a una base de datos. El registro lo añado con una sentenia en SQL con los datos de los campos del formulario. Cuando voy añadiedo datos a la cadena SQL y esta está próxima a los 255 caracteres trunca al llegar a 255 pero en la siguiente asignación si incrementa el valor de la cadena pero con la perdida de los datos que trunco. ¿Cuál es la posible solución?
Otro problema es la escritura y actualización en la DB de los datos pues en una consulta posterior no aparecen y ´si después de cerrar la base de datos.
Gracias.
SQL = "INSERT INTO [EMPRESAS] (EMPRESA, REPRESENTANTE, [DNI REPRESENTANTE], DOMICILIO, LOCALIDAD, PROVINCIA, [COD POSTAL], CIF, TELF1, FAX)" 
A = Len(SQL) 
SQL = SQL & "VALUES('" & UCase([Form_EMPRESAS].Empresa) & "','" & UCase(REPRESENTANTE) & "','" 
A = Len(SQL) 
SQL = SQL & UCase([DNI REPRESENTANTE]) & "','" & UCase(DOMICILIO) 
A = Len(SQL) 
SQL = SQL & "','" & UCase(Localidad) & "','" & UCase(PROVINCIA) 
A = Len(SQL) 
SQL = SQL & "','" & UCase([COD POSTAL]) & "','" & UCase(CIF) & "','" & UCase(TELF1) & "','" & UCase(Fax) & "')" 
A = Len(SQL) 
BDD. Execute SQL

1 respuesta

Respuesta
1
Imagino que tienes definida la variable SQL como string, estos tienen una capacidad de 2.000 millones de caracteres, por lo que no es ese el problema.
Comprueba el contenido del SQL justo antes de que trunque, me da que el problema puede estar en el contenido del campo que estás concatenando en ese momento, para comprobar el contenido prueba:
MsgBox "|" & SQL & "|"
La expresión "SQL" la compruebo paso a paso con la opción de evaluar expresiones y compruebo el valor de "A" y todo es correcto, trunca entorno a los 255 caracteres. A modo de parche provisional asigne a SQL 400 " ", y a continuación le voy añadiendo los valores de los distintos campos, al final le quito los caracteres de la izquierda y así me ha funcionado, no da problemas de truncado, pero no deja de ser una chapuza.
¿Hay alguna variable o algún valor de configuración o de entorno que pueda afectar a la longitud predeterminada de las cadenas?
Qué raro, he probado el siguiente código y no da problemas, al final del bucle For la cadena contiene 100000 caracteres.
Private Sub prue()
   Dim pru As String
   Dim i As Single
   pru = ""
   For i = 1 To 100000
      pru = pru & "x"
   Next i
   MsgBox Len(pru)
End Sub
Cual puede ser la causa para que trunque las cadenas. Gracias.
Pues lo único que se me ocurre es lo que te he comentado, que el contenido de las variables que vas concatenando tenga algo raro, igual puede influir que la función UCase también devuelva algo raro según dicho contenido, prueba sin UCase.
No se me ocurre ninguna otra razón.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas