Estoy realizando una base de datos de música importando la información
desde los metadatos de los archivos de sonido a través de un archivo de texto
que realizo con un programa.
El problema que me gustaría resolver es que en el campo [Artistas] me
pueden aparecer varios intérpretes (o ninguno) separados por la cadena " / "
y quisiera repetir el registro tantas veces como intérpretes hubiera, y que
en cada registro aparezca un único interprete en ese campo.
Hasta ahora lo único que he conseguido mediante una consulta de anexión
es aislar el primer intérprete de la siguiente manera:
IIf(Nz([Artistas],"")="","",IIf(InStr(Nz([Artistas],"")," / ")=0,Nz
([Artistas],""),Left(Nz([Artistas],""),InStr(Nz([Artistas],"")," / ")-1)))
No sé si habré enfocado bien la posible solución, pero no sé indicarle
a la consulta que separe [Artistas] en tantos intérpretes como contenga y que
anexione a la tabla tantos registros como intérpretes haya en el campo
[Artistas], conteniendo cada registro un único intérprete.
Muchas gracias por vuestro tiempo.
--
--
**
Colabora con el grupo, contesta a este mensaje y dinos si te sirvió o no la
respuesta dada.
Muchas gracias.
Salu2
Ju@nK [MVP Access]
http://juank.mvps.org
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank
http://juankc.spaces.live.com/
http://juank.mvps.org/
www.juank.tk
www.mvp-access.com
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
Nota: El contenido de este mensaje, así como el código
fuente que pueda ir incluido en el mismo, se proporciona
«COMO ESTÁ», sin garantías de ninguna clase, y no otorga
derecho alguno. Usted asume cualquier riesgo al poner en
práctica, utilizar o ejecutar la sugerencia del presente mensaje.
**
"Rafa" <mef...@feles.net> escribió en el mensaje
news:Xns9A7C6DAB720...@207.46.248.16...
> Con split obtienes una matriz con los artistas separados, solamente tienes
> que recorrerla y listo
>
Muchas gracias por tu respuesta.
La verdad es que no tengo muchos conocimientos. Estoy buscando con la ayuda
de Access pero no sé cómo hacerlo. ¿Sería mucha molestia si pusieras un
ejemplo?
Gracias de nuevo.
dim sMatriz() 'Declaro una matriz vacía, y sin dimensionar.
dim i as long 'Para recorrer la matriz
sMatriz=split(sCadena,";")
for i=0 to UBound(sCadena)
debug.ptin sMatriz(i)
next
Salu2
--
José Mª Fueyo
[MS MVP Access]
Hola José María.
Uso Access 2007.
Supongo que el código que indicas es para ponerlo en un módulo VBA. Pero, ¿
cómo hago referencia a él desde una consulta, o cómo puedo trasladar los
valores que devuelve a una tabla? (Perdón por mi desconocimiento).
Muchas gracias por tu interés.
--
--
**
Colabora con el grupo, contesta a este mensaje y dinos si te sirvió o no la
respuesta dada.
Muchas gracias.
Salu2
Ju@nK [MVP Access]
http://juank.mvps.org
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank
http://juankc.spaces.live.com/
http://juank.mvps.org/
www.juank.tk
www.mvp-access.com
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
Nota: El contenido de este mensaje, así como el código
fuente que pueda ir incluido en el mismo, se proporciona
«COMO ESTÁ», sin garantías de ninguna clase, y no otorga
derecho alguno. Usted asume cualquier riesgo al poner en
práctica, utilizar o ejecutar la sugerencia del presente mensaje.
**
"Rafa" <mef...@feles.net> escribió en el mensaje
news:Xns9A7D5DE112F...@207.46.248.16...
> Esto no vas a poder hacerlo desde una consulta ya que el nº de artistas es
> variable, tendrás que hacerlo en el método de carga de registros a la base
> de datos tal como te explicó Chema cambiando el ; por / que es tu carácter
> separador
>
Hola Ju@nk.
Uf, creo que esto es demasiado complicado para mí. He estado mirando en la
ayuda de Acces sobre los objetos Recordset, que supongo que es lo que hay que
manejar, y se me escapa de las manos.
Muchas gracias por vuestras respuestas y saludos.
He adaptado la misma idea en Access para resolver varias consultas
parecidas a la tuya.
Un clásico de este foro : En primer lugar, necesitas una tabla
auxiliar, llamada 'Nums', con un único campo Entero Largo llamdo
'Num'. Este campo debe estar indexado y sin duplicados.
Una vez creada la tabla auxiliar Nums, insertas valores : desde 0
hasta por ejemplo 1000.
... y vamos a por la consulta final. Supongamos que la tabla que
manejas se llama tbl_musica y tiene los siguientes campos : Campo1,
Campo2, CampoN, Artista.
La consulta seria esta :
SELECT Campo1, Campo2, CampoN,
Mid(Artista,Num+1,Abs(InStr(Num+1,Artista & "/","/")-
Num-1))
FROM Numeros, tbl_musica
WHERE Num<=Len(Artista) And (Mid(Artista,IIf(Num=0,1,Num),1)="/" Or
Num=0);
En este caso, como caracter delimitador he empleado el carácter / ,
sin espacios, veo que en tu caso sí que empleas espacios a ambos
lados. Aunque parezca una tonteria no es nada sencillo modificar esta
sql, así que te recomiendo que elimines dichos espacios de la tabla.
Adios, un saludo.
Andaba yo últimamente pensando recopilar ejemplos al respecto, pero no
encuentro un criterio de búsqueda para que Google me encuentre todos los
casos. Sin embargo, que yo sepa, en los foros de Access que visito, es una
solución que hemos usado sobre todo tú, yo y Julián, o sea que con pedíros a
vosotros los vuestros, sólo tendría que encontrar los míos. De pas ¿Sabes de
alguna página que recopile ejemplos de uso de esta tabla?
--
Saludos
José Bengoechea Ibaceta [MS-MVP Access]
http://jbengoechea.com/
http://jbchea.net
"Raipon" <raimo...@hotmail.com> escribió en el mensaje de noticias
news:3a6ed10a-ff18-4ea4...@t12g2000prg.googlegroups.com...
Otia, pues yo lo de meter tablas sin relacionar en una consulta, lo de la
tabla auxiliar de números consecutivos, y la mezcla de ambas cosas la uso
para muchas cosas (es mi mercromina particular) pero salvo el ejemplo de mi
Web ahora mismo no sabría mencionar ningún otro.
Digo esto para ahorrarte la faena de medirme mis ejemplos, jejejeje, Ahora
bien, sabiendo de tu interés lo tendré en mente y si me encuentro alguno y
sobre todo los futuros ejemplos te los haré llegar.
SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/
"Chea" <fo...@bengoecheaESTONO.net> escribió en el mensaje
news:C12031DE-C102-4255...@microsoft.com...
¡¡¡¡¡ Por fin llueve !!!!!
--
Saludos
José Bengoechea Ibaceta [MS-MVP Access]
http://jbengoechea.com/
http://jbchea.net
"Raipon" <raimo...@hotmail.com> escribió en el mensaje de noticias
news:eb732041-0b5b-4fde...@a5g2000prg.googlegroups.com...
--
--
**
Colabora con el grupo, contesta a este mensaje y dinos si te sirvió o no la
respuesta dada.
Muchas gracias.
Salu2
Ju@nK [MVP Access]
http://juank.mvps.org
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank
http://juankc.spaces.live.com/
http://juank.mvps.org/
www.juank.tk
www.mvp-access.com
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
Nota: El contenido de este mensaje, así como el código
fuente que pueda ir incluido en el mismo, se proporciona
«COMO ESTÁ», sin garantías de ninguna clase, y no otorga
derecho alguno. Usted asume cualquier riesgo al poner en
práctica, utilizar o ejecutar la sugerencia del presente mensaje.
**
"Chea" <fo...@bengoecheaESTONO.net> escribió en el mensaje
news:C12031DE-C102-4255...@microsoft.com...
Muchas gracias por tu respuesta. Lo he estado probando y a priori funciona
como quiero (va un poco lento porque la consulta resultante saca casi
60.000 registros, pero eso no es problema).
Saludos.