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

Problema al concatenar una cadena en access

Estas en el tema de Problema al concatenar una cadena en access en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/04/2011, 04:23
 
Fecha de Ingreso: marzo-2007
Mensajes: 127
Antigüedad: 17 años, 8 meses
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.
  #2 (permalink)  
Antiguo 08/04/2011, 05:54
 
Fecha de Ingreso: marzo-2007
Mensajes: 127
Antigüedad: 17 años, 8 meses
Puntos: 2
Respuesta: Problema al concatenar una cadena en access

Más información:

Si depués de añadir a MiSelect la cadena "')" hago un

MsgBox Right(MiSelect, 2)

lo que se me muestra en la ventanita es ')

pero si hago el msgbox de MiSelect, no me muestra esos caracteres últimos.

¿A qué es grandioso y todo un reto?

Saludos.
  #3 (permalink)  
Antiguo 08/04/2011, 06:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 127
Antigüedad: 17 años, 8 meses
Puntos: 2
Respuesta: Problema al concatenar una cadena en access

Y más información:

He abierto la ventana de inspeciones y cuando compruebo el valor de MiSelect, el valor que tiene es el siguiente:

"INSERT INTO Documentos VALUES (1,'C:\Documents and Settings\Alcala01\Desktop\preparacion de select.txt"

¿Qué indica ese cuadradito que viene al final del todo?. Es como si fuera algún caracter extraño que se incorpore al hacer clic en Aceptar del cuadro de diálogo o algo así. ¿Se puede quitar?.

Saludos.
  #4 (permalink)  
Antiguo 08/04/2011, 09:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 127
Antigüedad: 17 años, 8 meses
Puntos: 2
Respuesta: Problema al concatenar una cadena en access

Bueno bueno, yo sigo con lo mío y voy consiguiendo cositas. Explico un poco mejor lo que quiero hacer:

Quiero poner un botón en un formulario que busque en una tabla un determinado registro en el que un determinado campo es un vínculo a un archivo (puede ser de word, excell, txt o lo que sea). Si el registro existe, al hacer clic en el botón se debe de abrir el archivo del vínculo, y si no exite, se abre el cuadro de diálogo para que se seleccione el archivo y añadir un registro a la tabla con un vínculo al archivo seleccionado en el campo correspondiente.
La segunda parte está conseguida, pero la primera no se cómo hacerla, es decir, que se abra automáticamente el fichero que viene en el campo que tiene el vínculo.

Les dejo el código que he obtenido (y adaptado un poco) de la ayuda de access.

IMPORTANTE: para que funcione todo lo referente al FileDialog se debe activar en Herramientas / referencias del Visual Basic la opción "Microsoft office 12.0 object library" (en access 2007), lo que me lleva a hacer otra pregunta: ¿se debe activar esta opción en todos los access de todos los equipos donde se vaya a usar la base de datos?.

Gracias de nuevo y espero sus respuestas a las dos preguntitas que he hecho.

-------------------------------------------------------------------------
Dim fd As Variant
Dim dbsMiBaseDatos As DAO.Database
Dim rstMiReg As DAO.Recordset
Dim MiSelect As Variant
Dim mypath As String

'Declare a variable to contain the path
'of each selected item. Even though the path is aString,
'the variable must be a Variant because For Each...Next
'routines only work with Variants and Objects.
Dim vrtSelectedItem As Variant


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

MiSelect = "SELECT * FROM Documentos WHERE Documentos.Id=1"

Set rstMiReg = dbsMiBaseDatos.OpenRecordset(MiSelect, dbOpenDynaset)

If Not rstMiReg.EOF Then
MsgBox "hola" 'AQUI QUIERO LAS INSTRUCCIONES PARA ABRIR EL FICHERO DEL CAMPO CON EL VINCULO
Else
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd 'Use a With...End With block to reference the FileDialog object.
.AllowMultiSelect = False

'Use the Show method to display the File Picker dialog box and return the user's action.
'The user pressed the button.
If .Show = -1 Then

'Step through each string in the FileDialogSelectedItems collection.
For Each vrtSelectedItem In .SelectedItems

'vrtSelectedItem is aString that contains the path of each selected item.
'You can use any file I/O functions that you want to work with this path.
'This example displays the path in a message box.
'MsgBox "The path is: " & vrtSelectedItem
MiSelect = "INSERT INTO Documentos VALUES (1,'" & vrtSelectedItem
MiSelect = MiSelect & "')"
DoCmd.RunSQL MiSelect

Next vrtSelectedItem
'The user pressed Cancel.
Else
MsgBox "Accion cancelada", , "cancelado"
End If
End With

End If

Set rstMiReg = Nothing

dbsMiBaseDatos.Close
Set dbsMiBaseDatos = Nothing

'Set the object variable to Nothing.
Set fd = Nothing

-------------------------------------------------------------------------
  #5 (permalink)  
Antiguo 11/04/2011, 03:37
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Problema al concatenar una cadena en access

Mira este ejmplo, seguro que sacas de él algo:

http://elmundomagicodeltaribo.blogsp...carpeta-y.html

Un saludo

Etiquetas: access, concatenar, bases-de-datos, cadenas
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 14:14.