** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - ERROR AL CREAR UNA TABLA
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoERROR AL CREAR UNA TABLA

 Responder Responder
Autor
Mensaje
solbete Ver desplegable
Habitual
Habitual


Unido: 25/Febrero/2017
Localización: Palma
Estado: Sin conexión
Puntos: 55
Enlace directo a este mensaje Tema: ERROR AL CREAR UNA TABLA
    Enviado: 27/Enero/2019 a las 20:59
Hola amigos, 

Llevo unos dias intentando cambiar el formato de un campo del tipo multivalor, pero al ejecutar el botón me da un error "13 no coinciden los tipos". Os cuento:

Mi BD se compone de varios campos, de los cuales hay unos cuantos que son multivalor, por lo que en ellos se pueden elegir mas de un valor. He creado una consulta (llamémosla CONSULTA1) asociada a una tabla que tiene estos campos multivalores y otros que no lo son. La creación de una nueva tabla la creo así:

CurrentDb.Execute "CREATE TABLE " & nomTabla & "([REFERENCIA] Text,[ID] Text,[TIPO_REGISTRO] Text,[DLG] Text,  [Nº_REF] Text,[ESTABLECIMIENTO] Text,[SAP] Text,[TIPO_TARIFA] Text, [TEMPORADA] Text, [OBSERVACIONES_DLG] Text,[REGISTRADO_EL] Text,[REGISTRADO_POR] Text,[TÉCNICO_DCC] Text, [INICIO_CARGA] Text, [ESTADO] Text, [FINALIZADO_EL] Text,[OBSERVACIONES_DCC] Text,[INICIO_REVISIÓN] Text, [FIN_REVISIÓN] Text, [REVISADO_POR] Text, [PAUSADO_EL] Text,[PAUSADO_CHM] Text)"

El campo "TIPO_TARIFA" es uno de los que son multivalor, que como veis en la nueva tabla que se crea la he definido como TEXTO: ...[TIPO_TARIFA] Text... al igual que el resto de campos. Todos serán textos recogidos de una consulta (CONSULTA1)

Luego tengo un conficional if...then que si se cumple actúa así (VER INSTRUCCION DE ABAJO)
Separa registros basándose en un campo con textos separados por barras.

Como veis indico rst("TIPO_TARIFA") que como indiqué es multivalor. Pero da error. Creo que al definir en la instrucción de arriba que en la nueva tabla creada sea texto ([TIPO_TARIFA] Text), no coinciden los tipos y por ello da el error. Mi pregunta: ¿Como puedo convertir los campos multivalor en textos con la información completa para que deje de ser multivalor? Por ejemplo, tengo este campo con valores PEQUE;GRAN;MEDIA. En la consulta se visualiza tal cual con opción de elegir varios valores. ¿Como puedo hacer que en una consulta se visualicen lo mismo pero como si fuera un texto? He probado cambiando en las propiedades de ese campo en la consulta la opcion de BUSQUEDA a cuadro de texto. Pero no funciona. Supongo que necesito una función que haga la conversión antes de aplicar esta instrucción:


CurrentDb.Execute "INSERT INTO CentroOperacionesDCC19([REFERENCIA],[ID],[TIPO_REGISTRO],[DLG],[Nº_REF],[ESTABLECIMIENTO],[SAP],[TIPO_TARIFA],[TEMPORADA],[OBSERVACIONES_DLG],[REGISTRADO_EL],[REGISTRADO_POR],[TÉCNICO_DCC],[INICIO_CARGA],[ESTADO], [FINALIZADO_EL],[OBSERVACIONES_DCC],[INICIO_REVISIÓN],[FIN_REVISIÓN],[REVISADO_POR],[PAUSADO_EL],[PAUSADO_CHM]) VALUES ('" & _
Split(rst("REFERENCIA"), "/")(i) & "','" & rst("ID") & "','" & rst("TIPO_REGISTRO") & "','" & rst("DLG") & "','" & rst("Nº_REF") & "','" & _
rst("ESTABLECIMIENTO") & "','" & rst("SAP") & "','" & rst("TIPO_TARIFA") & "','" & rst("TEMPORADA") & "','" & rst("OBSERVACIONES_DLG") & "','" & _
rst("REGISTRADO_EL") & "','" & rst("REGISTRADO_POR") & "','" & rst("TÉCNICO_DCC") & "','" & rst("INICIO_CARGA") & "','" & rst("ESTADO") & "','" & _
Nz(rst("FINALIZADO_EL"), vbNullString) & "','" & rst("OBSERVACIONES_DCC") & "','" & rst("INICIO_REVISIÓN") & "','" & _
Nz(rst("FIN_REVISIÓN"), vbNullString) & "','" & rst("REVISADO_POR") & "','" & rst("PAUSADO_EL") & "','" & rst("PAUSADO_CHM") & "')"


Si me podéis ayudar, os lo agradecería muchísima. Saludos
Arriba
jilo Ver desplegable
Colaborador
Colaborador


Unido: 19/Diciembre/2004
Localización: TAFALLA
Estado: Sin conexión
Puntos: 872
Enlace directo a este mensaje Enviado: 28/Enero/2019 a las 19:27
prueba asi
 ......Cstr(rst("TIPO_TARIFA")).....
Espero te sirva !!!!!!
Iñaki
Arriba
solbete Ver desplegable
Habitual
Habitual


Unido: 25/Febrero/2017
Localización: Palma
Estado: Sin conexión
Puntos: 55
Enlace directo a este mensaje Enviado: 28/Enero/2019 a las 20:22
Gracias @Jilo,
Sale un error: error 3001 en tiempo de ejecución "Argumento no válido"
He probado también rst(CStr("TIPO_TARIFA")), y lo mismo. Creo que esta formula no la acepta los campos multivalor. Qué difícil 

Quizá exista otra manera, cambiando en  la instrucción siguiente, en el apartado de [TIPO_TARIFA] Text por otro que no sea Text, es decir, creando la tabla con datos multivalor

CurrentDb.Execute "CREATE TABLE " & nomTabla & "([REFERENCIA] Text,[ID] Text,[TIPO_REGISTRO] Text,[DLG] Text,  [Nº_REF] Text,[ESTABLECIMIENTO] Text,[SAP] Text,[TIPO_TARIFA] Text, [TEMPORADA] Text, [OBSERVACIONES_DLG] Text,[REGISTRADO_EL] Text,[REGISTRADO_POR] Text,[TÉCNICO_DCC] Text, [INICIO_CARGA] Text, [ESTADO] Text, [FINALIZADO_EL] Text,[OBSERVACIONES_DCC] Text,[INICIO_REVISIÓN] Text, [FIN_REVISIÓN] Text, [REVISADO_POR] Text, [PAUSADO_EL] Text,[PAUSADO_CHM] Text)"



A ver si nos puede ayudar alguien con esto que me trae loquito. Gracias 




Editado por solbete - 28/Enero/2019 a las 20:25
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11051
Enlace directo a este mensaje Enviado: 28/Enero/2019 a las 20:32
Además de esperar a ver si aparece alguien que sea capaz de echarte un cable ...

Yo no uso BAJO NINGÚN CONCEPTO los campos multivalor, bueno y otros colegas que conozco tampoco, son un tremendo dolor de muelas. 

Plantéate redefinir la BD, cuál sería su coste. A la hora de sopesar los tiempos no sólo pienses en este problema sino en los que tendrás en el futuro.

Una posible solución es cambiar el campo multivalor por uno tipo TEXTO o MEMO en la que guardes los distintos valores que vayas a tener separados por (;) o (|) ...
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
solbete Ver desplegable
Habitual
Habitual


Unido: 25/Febrero/2017
Localización: Palma
Estado: Sin conexión
Puntos: 55
Enlace directo a este mensaje Enviado: 28/Enero/2019 a las 20:44
Hola,

Si, ya veo que son problemáticos y en el futuro puede, como dices lo tendré aún más. El problema es que la tabla principal debe estar vinculada a una lista de sharepoint donde los datos son multivalor y al descargarse se descargan igualmente. Si pudiera hacer que se descarguen estos campos multivalor en tipo texto o memo manteniendo la estructura del valor es decir, todas las opciones elegidas desde la lista sharepoint tipo OPCION A;OPCION B, seria lo suyo. 

Gracias por el interés. 
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11051
Enlace directo a este mensaje Enviado: 28/Enero/2019 a las 22:15
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
solbete Ver desplegable
Habitual
Habitual


Unido: 25/Febrero/2017
Localización: Palma
Estado: Sin conexión
Puntos: 55
Enlace directo a este mensaje Enviado: 29/Enero/2019 a las 22:11
Muy buen ejemplo, de hecho utilizaré parte de este para mi BD, pero no me sirve para lo que quiero. Necesito convertir multivalores en texto / valores únicos con todas las opciones elegidas en los campos multivalor. Cada día lo veo más complicado, por lo que veo. 

Gracias por la ayuda
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5166
Enlace directo a este mensaje Enviado: 29/Enero/2019 a las 22:20
Hola!

Mírate este hilo, en el hay un ejemplo de crear tablas con campo multivalor.

http://www.rogersaccesslibrary.com/forum/query-a2k10-multivaluefields_topic575.html

Editado por mounir - 29/Enero/2019 a las 22:20
Un Saludo.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5166
Enlace directo a este mensaje Enviado: 29/Enero/2019 a las 23:53
Hola!

Este código te pasa Campo Multivalor a Texto, adáptalo a tus necesidades:

Private Sub Comando2_Click()

Dim rs As DAO.Recordset

Dim rsMV As DAO.Recordset

Dim strOut As String

Dim lngLen As Long

Dim strResult As String

Dim strSQL As String

strSQL = "SELECT [NombreCampoMV] FROM [NombreTabla]"

Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenDynaset)

Do While Not rs.EOF

        Set rsMV = rs(0).Value

        Do While Not rsMV.EOF

            If Not IsNull(rsMV(0)) Then

            strOut = strOut & rsMV(0) & ", "

            End If

            rsMV.MoveNext

        Loop
       
        strOut = strOut & vbCrLf
            
        Set rsMV = Nothing

    rs.MoveNext

Loop

lngLen = Len(strOut) - 2

If lngLen > 0 Then

    strResult = Left(strOut, lngLen)

    NombreTextBox = strResult

End If

Set rs = Nothing

Set rsMV = Nothing

End Sub


Editado por mounir - 29/Enero/2019 a las 23:53
Un Saludo.
Arriba
solbete Ver desplegable
Habitual
Habitual


Unido: 25/Febrero/2017
Localización: Palma
Estado: Sin conexión
Puntos: 55
Enlace directo a este mensaje Enviado: 30/Enero/2019 a las 12:44
Que bueno, voy a probar. Se me ocurre otra cosa desde mis pocos conocimientos. Realmente necesito que la tabla vinculada o importada de una lista de sharepoint se convierta todos los campos en texto.
Entiendo es ahí donde entra en acción el codigo de mounir. Como tengo mas de un campo multivalor tendré que añadir mas de uno a
strSQL = "SELECT [NombreCampoMV] FROM [NombreTabla]"
Qué lio, jejeje

Editado por solbete - 30/Enero/2019 a las 12:45
Arriba
solbete Ver desplegable
Habitual
Habitual


Unido: 25/Febrero/2017
Localización: Palma
Estado: Sin conexión
Puntos: 55
Enlace directo a este mensaje Enviado: 31/Enero/2019 a las 12:18
Hola, no me funciona. Sale el mismo error. Al adaptarlo a mi código y aplicarlo el campo multivalor lo considera valor vacio. He creado una funcion con este codigo y aplicado a una consulta y nada. Lo veo complicado. Sigo probando mas opciones. A lo mejor, es imposible hacerlo, no se si access tiene esta opción de conversión de multivalores. Si a alguien se le ocurre algo, agradezco su ayuda. Si no es posible, deberia cambiar mi BD
Gracias a los que me han dado su valiosa aportación.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5166
Enlace directo a este mensaje Enviado: 31/Enero/2019 a las 13:13
Hola!

El código que te he posteado funciona perfectamnete.

Te dejo otro enlace de Neckkito que hace lo mismo y con ejemplo

http://neckkito.xyz/nck/index.php/ejemplos/16-controles/125-campos-multivalor
Un Saludo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable