Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2011, 04:23
pumi
 
Fecha de Ingreso: marzo-2007
Mensajes: 127
Antigüedad: 17 años, 1 mes
Puntos: 2
Problema al concatenar una cadena en access

Hola de nuevo a todos los gurus de por aquí:

En primer lugar les indico el enlace de un foro de donde he conseguido un código para abrir cuadros de diálogo para seleccionear un archivo, ya que si el código original es de otro, pues de otro es, a ver.....

http://www.lawebdelprogramador.com/n..._archivos.html

He reconvertido parte de este cógigo del siguiente modo:

--------------------------------------------------
Private Sub Comando0_Click()

Dim El_Archivo As OPENFILENAME
Dim dbsMiBaseDatos As DAO.Database
Dim rstMiReg As DAO.Recordset
Dim MiSelect As String

DoCmd.SetWarnings False

With El_Archivo
.Tamaño_JJJT = Len(El_Archivo)
.Ins_JJJT = 1
.Filtro_JJJT = tltFiltro
.Fila_JJJT = Space$(254)
.MFila_JJJT = 255
.LTitulo_JJJT = Space$(254)
.MTitulo_JJJT = 255
.Disco_JJJT = Directorio
.Titulo_JJJT = "Busque la Base de Datos"
.JJJT_flags = 0
'.Ext_JJJT = word
End With


Set dbsMiBaseDatos = CurrentDb 'Asignamos la base de datos actual a la variable dbsMiBaseDAtos

'Instrucciones para escoger el máximo valor de ANALISIS_CABECERAS.CodCabeceraAnalisis en el que Tipo sea "LISTA"
MiSelect = "SELECT * FROM Documentos WHERE Documentos.Id=1"

Set rstMiReg = dbsMiBaseDatos.OpenRecordset(MiSelect, dbOpenDynaset)
'rstMiReg.MoveFirst
If Not rstMiReg.EOF Then
MsgBox "hola"
Else 'Abrimos el cuadro de diálogo pasándole a GetOpenFileName la estructura anterior
If JJJT_Dialog(El_Archivo) Then
MiSelect = "INSERT INTO Documentos VALUES (1,'" & Trim$(El_Archivo.Fila_JJJT)
MiSelect = MiSelect & "')"
MsgBox MiSelect
DoCmd.RunSQL MiSelect
Ctr = Trim$(El_Archivo.Fila_JJJT)
Else
MsgBox "Cancelado", , "Dialog"
End If
End If
Set rstMiReg = Nothing

dbsMiBaseDatos.Close
Set dbsMiBaseDatos = Nothing

End Sub

--------------------------------------------------

La idea es añadir en una tabla un vínculo al archivo que se selecciona en el cuadro de diálogo. El código tal cual lo he cogido de la dirección que les he puesto funciona correctamente, pero a mí me ha surgido un problema tonto que no tengo pelo... a corregir.
Cuando añado a MiSelect de inserción de datos en la tabla la comilla simple con el paréntesis de cierre, éste no aparece en el msgbox MiSelect, por lo que la intrucción de insertado en la tabla falla. Pero sin embargo, si compruebo las longitudes de MiSelect antes y después de añadir esa comilla simple y el paréntesis de cierre, pues esa longitud de la cadena varía en dos unidades.

No se por qué me varía la longitud de MiSelect pero no me tiene en cuenta todo el texto.

Espero haberme explicado y que me den la respuesta.

Gracias por aguantar el rollete.