Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/09/2008, 16:40
PoluxMTZ
 
Fecha de Ingreso: septiembre-2008
Mensajes: 5
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Insertar campo memo en foxpro con asp

man

Que tal, saludos a todos.

Bueno sobre la forma de meter mas de 255 caracteres a un campo Memo, en el caso de hacerlo desde Visual Basic, es de la siguiente forma:

Hay que concatenar la cadena de los primeros 255 caracteres y despues el resto de la cadena es decir.

si CadenaX = 300 caracteres

hay que meterlos asi.....

CampoMemo = 254 caracteres + 46 caracteres.

Para que me entiendan voy a hacer un ejemplo con SQL

INSERT INTO Tabla (Nombre, Observ) VALUES ('Juan', '[cadenaX]')

El chiste es separar [cadenaX] asi:

INSERT INTO Tabla (Nombre, Observ) VALUES ('Juan', 'left(cadenax,254)'+'right(cadenax,46)')

fijense que hay una concatenacion '+' despues de los 254 caracteres dentro de un mismo campo. Pues esa es la que sirve para meter la cadena completa.
Les pondre un ejemplo de un codigo y observen:


Private sub Insertar ()
Com.CommandText = "INSERT INTO DATOS (NOMBRE,OBSERV) VALUES ('" & UCase(Trim(txt_Nombre.Text)) & "','" & QuitaCarac(UCase(Trim(txt_Observ.Text))) & "')"
Set RS = Com.Execute
End Sub


Ahora una rutina para preparar la cadena y dejarla lista para insertar es la sig:

Private Function QuitaCarac(Cadena As String) As String
'QUITA LOS RETORNOS DE CARRO PARA ALMACENAR EN CAMPO, PREPARA UNA CADENA DE MAS DE 254 CARACTERES PARA INSERTAR A CAMPO MEMO
Dim X As Integer
Dim Cont As Integer
Dim Texto As String
Dim Car As String
Dim N As Integer
Con = Len(Cadena)
Texto = ""
X = 1
N = 0
Do
N = N + 1
If N >= 254 Then
N = 0
Car = "' + '"
Texto = Texto + Car
End If
Car = Mid(Cadena, X, 1)
If Car = Chr(10) Then
Car = Chr(13)
ElseIf Car = "'" Or Car = "+" Then
GoTo 1
End If
Texto = Texto + Car
1 X = X + 1
Loop Until X > Con
QuitaCarac = Texto
End Function

Esta funcion lo que hara sera separar en bloques de 254 caracteres la cadena
CadenaNueva= Bloque254 '+' Bloque254 '+' ... '+' BloqueRestante

Espero que les sirva de algo, o que les ayude a resolver algunas dudas.

Ojala que ahora alguien pueda averiguar por que al usar el comando UPDATE, siguiendo el mismo procedimiento, solo deja actualizar 508 caracteres y mas de 508 se bloquea la aplicación sin mostrar un aviso de error ni nada.

Saludos