Contar repeticiones dentro de un texto

04/05/2010 - 18:21 por madman | Informe spam
Hola,

estoy intentando realizar una consulta para que me cuente repeticiones
dentro de un texto y no lo consigo, please, a ver si alguien me puede ayudar.

el tema es que tengo 2 tablas, en la tabla A, solo tiene un campo X con una
serie de keywords y en la tabla B, en uno de sus campos, en el campo Y
aparecen esos keywords pero dentro de un texto. Necesito que la query
identifique el número de veces que los keywords (tablaA, campoX) se repiten
dentro del texo del campo Y (tablaB) y que en una nueva columna en la tabla A
aparezca el número de repeticiones.

muchas gracias por anticipado porque a mi se me escapa...!!

Preguntas similare

Leer las respuestas

#1 Raipon
04/05/2010 - 18:44 | Informe spam
Hola, crea una función en un módulo estandart. Aparentemente no
necesitas relacionar ambas tablas, así que en principio, el único
parámetro que debe recibir la función seria el texto para analizar
(campo Y de tablaB).

Dentro de la función, debes cargar en un recordset todos los valores
de la tabla A, y para cada uno de ellos, comprueba el número de
repeticiones en el texto. ¿ como ? ... por ejemplo usando la función
split :

Dim Matriz() As String

Matriz() = Split(Texto, Keyword)

Repeticiones = Ubound(Matriz()) - 1

... deberias por tanto, para cada llamada a la función, recorrer todos
los valores del recordset, realizar el cálculo anterior y acumular el
resultado. Al finalizar el bucle asignas el acumulado como resultado
de la función.

Adios, un saludo.
Respuesta Responder a este mensaje
#2 Ju
04/05/2010 - 22:51 | Informe spam
Como lo quieres en una consulta puedes meter la función de Raipon junta, ej.

select ubound(split(b.[Texto],a.[Keyword]))-1 as veces, [Keyword], [Texto]
...

**
Salu2/Regards
[MVP Access] 2006/10
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"Raipon" escribió en el mensaje
news:
Hola, crea una función en un módulo estandart. Aparentemente no
necesitas relacionar ambas tablas, así que en principio, el único
parámetro que debe recibir la función seria el texto para analizar
(campo Y de tablaB).

Dentro de la función, debes cargar en un recordset todos los valores
de la tabla A, y para cada uno de ellos, comprueba el número de
repeticiones en el texto. ¿ como ? ... por ejemplo usando la función
split :

Dim Matriz() As String

Matriz() = Split(Texto, Keyword)

Repeticiones = Ubound(Matriz()) - 1

... deberias por tanto, para cada llamada a la función, recorrer todos
los valores del recordset, realizar el cálculo anterior y acumular el
resultado. Al finalizar el bucle asignas el acumulado como resultado
de la función.

Adios, un saludo.
Respuesta Responder a este mensaje
#3 madman
05/05/2010 - 08:36 | Informe spam
Muchas gracias por contestar a los dos!! gracias!!

de momento lo estoy intentando hacer según comenta ya que mis
conocimientos de access son un poco limitados en el momento que se complica
la cosa, aparte de que hacía tiempo que no tenía que utilizarlo.

Estoy poniendo la siguiente expresión pero me da el siguiente mensaje de
error y seguro que será super sencillo pero...el mensaje: "la función
"ubound" no está definida en la expresión".

y la select que estoy haciendo es:

SELECT ubound(split(BBDD_Movil.[Post],Keywords.KEYWORDS))-1 AS veces,
[KEYWORDS], [Post];

¿Qué estoy haciendo mal?

muchas gracias de nuevo por vuestra ayuda!!

"" wrote:

Como lo quieres en una consulta puedes meter la función de Raipon junta, ej.

select ubound(split(b.[Texto],a.[Keyword]))-1 as veces, [Keyword], [Texto]


**
Salu2/Regards
[MVP Access] 2006/10
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"Raipon" escribió en el mensaje
news:
Hola, crea una función en un módulo estandart. Aparentemente no
necesitas relacionar ambas tablas, así que en principio, el único
parámetro que debe recibir la función seria el texto para analizar
(campo Y de tablaB).

Dentro de la función, debes cargar en un recordset todos los valores
de la tabla A, y para cada uno de ellos, comprueba el número de
repeticiones en el texto. ¿ como ? ... por ejemplo usando la función
split :

Dim Matriz() As String

Matriz() = Split(Texto, Keyword)

Repeticiones = Ubound(Matriz()) - 1

deberias por tanto, para cada llamada a la función, recorrer todos
los valores del recordset, realizar el cálculo anterior y acumular el
resultado. Al finalizar el bucle asignas el acumulado como resultado
de la función.

Adios, un saludo.


.

Respuesta Responder a este mensaje
#4 Ju
05/05/2010 - 15:53 | Informe spam
Ubound es una funcion que te da el numero de registros que tiene una matriz,
puede fallar en una consulta si no existe la palabra y no se forma la
matriz.

**
Salu2/Regards
[MVP Access] 2006/10
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"madman" escribió en el mensaje
news:
Muchas gracias por contestar a los dos!! gracias!!

de momento lo estoy intentando hacer según comenta ya que mis
conocimientos de access son un poco limitados en el momento que se
complica
la cosa, aparte de que hacía tiempo que no tenía que utilizarlo.

Estoy poniendo la siguiente expresión pero me da el siguiente mensaje de
error y seguro que será super sencillo pero...el mensaje: "la función
"ubound" no está definida en la expresión".

y la select que estoy haciendo es:

SELECT ubound(split(BBDD_Movil.[Post],Keywords.KEYWORDS))-1 AS veces,
[KEYWORDS], [Post];

¿Qué estoy haciendo mal?

muchas gracias de nuevo por vuestra ayuda!!

"" wrote:

Como lo quieres en una consulta puedes meter la función de Raipon junta,
ej.

select ubound(split(b.[Texto],a.[Keyword]))-1 as veces, [Keyword],
[Texto]


**
Salu2/Regards
[MVP Access] 2006/10
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"Raipon" escribió en el mensaje
news:
Hola, crea una función en un módulo estandart. Aparentemente no
necesitas relacionar ambas tablas, así que en principio, el único
parámetro que debe recibir la función seria el texto para analizar
(campo Y de tablaB).

Dentro de la función, debes cargar en un recordset todos los valores
de la tabla A, y para cada uno de ellos, comprueba el número de
repeticiones en el texto. ¿ como ? ... por ejemplo usando la función
split :

Dim Matriz() As String

Matriz() = Split(Texto, Keyword)

Repeticiones = Ubound(Matriz()) - 1

deberias por tanto, para cada llamada a la función, recorrer todos
los valores del recordset, realizar el cálculo anterior y acumular el
resultado. Al finalizar el bucle asignas el acumulado como resultado
de la función.

Adios, un saludo.


.

Respuesta Responder a este mensaje
#5 madman
06/05/2010 - 14:06 | Informe spam
puf, pues no me aclaro, porque debería de encontrar esos valores. Es verdad
que los keywords no se encontrarán en todos los registros del campo de Texto
pero sí en muchos y lo que necesito es que encuentre esas ocurrencias. Los
valores de los campos serían algo así:

Tabla A. Campo X Tabla B. Campo Y
N97 yo tengo el N97 y me va bien
One esta tarifa no la recomiendo
droid espero que salga pronto el nexus
one

lo que tendría que hacer la función es anexar una columna a la tabla A donde
acumule el número de coincidencias encontradas en tabla B.campo Y. En ete
caso el resultado sería:

Tabla A. Campo X Nuevo campo
N97 1
One 1
droid 0

Espero haberme explicado mejor. Hay veces que no habrá coincidencias y otras
sí.

gracias de nuevo!


"" wrote:

Ubound es una funcion que te da el numero de registros que tiene una matriz,
puede fallar en una consulta si no existe la palabra y no se forma la
matriz.

**
Salu2/Regards
[MVP Access] 2006/10
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"madman" escribió en el mensaje
news:
> Muchas gracias por contestar a los dos!! gracias!!
>
> de momento lo estoy intentando hacer según comenta ya que mis
> conocimientos de access son un poco limitados en el momento que se
> complica
> la cosa, aparte de que hacía tiempo que no tenía que utilizarlo.
>
> Estoy poniendo la siguiente expresión pero me da el siguiente mensaje de
> error y seguro que será super sencillo pero...el mensaje: "la función
> "ubound" no está definida en la expresión".
>
> y la select que estoy haciendo es:
>
> SELECT ubound(split(BBDD_Movil.[Post],Keywords.KEYWORDS))-1 AS veces,
> [KEYWORDS], [Post];
>
> ¿Qué estoy haciendo mal?
>
> muchas gracias de nuevo por vuestra ayuda!!
>
> "" wrote:
>
>> Como lo quieres en una consulta puedes meter la función de Raipon junta,
>> ej.
>>
>> select ubound(split(b.[Texto],a.[Keyword]))-1 as veces, [Keyword],
>> [Texto]
>>
>>
>> **
>> Salu2/Regards
>> [MVP Access] 2006/10
>> [DCE2003 ***] + VSTO [DCE2005 **]
>> http://juank.mvps.org http://www.juank.es
>> Correos personales o preguntas particulares en mi grupo
>> http://groups.google.es/group/juank?hl=es
>> www.juank.tk
>> ¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
>> **
>> "Raipon" escribió en el mensaje
>> news:
>> Hola, crea una función en un módulo estandart. Aparentemente no
>> necesitas relacionar ambas tablas, así que en principio, el único
>> parámetro que debe recibir la función seria el texto para analizar
>> (campo Y de tablaB).
>>
>> Dentro de la función, debes cargar en un recordset todos los valores
>> de la tabla A, y para cada uno de ellos, comprueba el número de
>> repeticiones en el texto. ¿ como ? ... por ejemplo usando la función
>> split :
>>
>> Dim Matriz() As String
>>
>> Matriz() = Split(Texto, Keyword)
>>
>> Repeticiones = Ubound(Matriz()) - 1
>>
>> deberias por tanto, para cada llamada a la función, recorrer todos
>> los valores del recordset, realizar el cálculo anterior y acumular el
>> resultado. Al finalizar el bucle asignas el acumulado como resultado
>> de la función.
>>
>> Adios, un saludo.
>>
>>
>> .
>>


.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida