• Viernes 11 de Octubre de 2024, 07:33

Autor Tema:  Re: comparar campos memo  (Leído 6272 veces)

agfed

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
    • http://www.maersa.com.mx
Re: comparar campos memo
« en: Martes 2 de Septiembre de 2003, 18:50 »
0
usando vba ¿Como puedo compararar si son iguales o semejantes dos campos memo? Mi intension es hacer una busqueda en una base de datos acces :question:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: comparar campos memo
« Respuesta #1 en: Miércoles 3 de Septiembre de 2003, 08:50 »
0
¿Podrías especificar un poco mejor que es lo que necesitas?

- Comparar dos campos memo de dos tablas distintas.

- Comparar dos campos memo en la misma tabla.

- Seleccionar registros por el valor de uno o varios campos memo.

- Seleccionar registros por el valor de uno o varios campos memo que contengan una serie a buscar.

En todo caso trata el campo memo como si fuera un campo tipo texto.
Puedes asignarlo a una variable de tipo string con la limitación de 2^31 caracteres para cadenas de longitud variable y de 2^16 para cadenas de longitud fija.

Suerte.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: comparar campos memo
« Respuesta #2 en: Miércoles 3 de Septiembre de 2003, 09:11 »
0
Hombre, ahora que caigo, ya sé que es lo quieres hacer... Lo sé por tu anterior tema 'compara archivos o usar campos binarios': quieres comparar dos tablas de una base de datos para saber si contienen los mismos datos.

Vale, te diré que bien podías haberlo especificado respondiendo al tema anterior. Te di una solución para comparar 'Archivos', como tu decías, si no era eso lo que necesitabas, podrías haberlo dicho y no dejar el tema abierto. En fin...

Podrías usar una sentencias SQL para comparar las dos tablas, o código que las recorriera buscando diferencias, pero como no tengo ganas de escribir tanto, pues mi recomendación es que exportes las tablas a archivos de texto y que uses el código que te escribí en el tema anterior.
Ale.

Chao.

agfed

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
    • http://www.maersa.com.mx
Re: comparar campos memo
« Respuesta #3 en: Miércoles 3 de Septiembre de 2003, 18:24 »
0
Mi intesion es usar la sentencia

basededatos.Find campo=lobuscado

Pero mi pregunta es si tambien sirve para campos memo.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: comparar campos memo
« Respuesta #4 en: Jueves 4 de Septiembre de 2003, 08:12 »
0
Hola agfed.
Creo que el método find debería funcionar sin problemas con cualquier tipo de datos que tengan los campos, incluso con campos memo, que a todos los efectos son campos de texto de longitud variable. Otra cosa distinta es acertar con el valor por el que quieres realizar la búsqueda, es decir, no es lo mismo buscar por una palabra que por un texto de gran tamaño, donde signos de puntuación, tildes, mayúsculas/minúsculas, pueden hacer que no encuentres un registro coincidente. Para evitar en la medida de lo posible esto, podrías usar un filtro de este estilo:

Recordset1.Find "UCASE(CampoMemo) LIKE(UCASE('%Cadena a buscar en el campo%'))

Suerte.

agfed

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
    • http://www.maersa.com.mx
Re: comparar campos memo
« Respuesta #5 en: Jueves 4 de Septiembre de 2003, 18:56 »
0
voy a probar, mañana te digo si me funciono.

agfed

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
    • http://www.maersa.com.mx
Re: comparar campos memo
« Respuesta #6 en: Viernes 5 de Septiembre de 2003, 18:29 »
0
lo que me sugeriste funciono igual que
...find "CampoMemo LIKE " & cadena a buscar & "*"

Ahora mi pregunta es, es valida la siguiente sentencia, porque al menos a mi no me funciona como quisiera:

...find "CampoMemo LIKE " & cadena a buscar1 & "*" & cadena a buscar2 & "*"

Esto lo pregunto porque noto que las dos cadenas siempre son constantes entre lo que busco y el unico registro que pudiera existir, y me podrian ayudar a encontrara ese registro.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: comparar campos memo
« Respuesta #7 en: Lunes 8 de Septiembre de 2003, 08:43 »
0
En la mayoría de los SQL, el carácter comodín es '%'... haciendo la concatenación con '*' buscas una cadena del tipo " Cadena en la que busco* ". La comparación funciona así:

%Cadena%  -> 'Cadena' contenida en el texto.

%Cadena     -> 'Cadena a la derecha del texto (que el valor del campo termine en 'Cadena').

Cadena%    -> Que el texto comience por 'Cadena'.

Podrías probar usando el comodín de esta forma para buscar al comienzo y al final del campo:

...Find "LEFT(CampoMemo, Int(Longitud campo / 2)) LIKE " & cadena_a_buscar1 & "%" AND RIGHT(CampoMemo, Int(Longitud campo / 2)) LIKE %" & cadena_a_buscar2

Suerte.

agfed

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
    • http://www.maersa.com.mx
Re: comparar campos memo
« Respuesta #8 en: Sábado 13 de Septiembre de 2003, 18:14 »
0
Gracias por tu sugerencia. Me sirvio muy bien. Pero creo que necesito un chapuzon en SQL. Sabes de algun lugar donde haya un buen tutorial? Se muy poco, y lo necesito porque estoy comenzando  a hacer proyectos en vba usando bases ADO. Por cierto, tambien busco un buen tutorial sobre bases ADO y sus comandos. Me ayudas? :good:

agfed

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
    • http://www.maersa.com.mx
Re: comparar campos memo
« Respuesta #9 en: Sábado 13 de Septiembre de 2003, 19:33 »
0
Ahora que voy a comenzar con bases de datos, quiero decirte que he tomado clases de visual fox pro y de visual basic. Pero ahora que he comenzado a escudriñar los dos lenguajes en cuestion bases de datos, me parece que es mas facil y con menos programacion en visual fox pro y por los comentarios que he encontrado en la web, me lo confirman.

Tu que dices?

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: comparar campos memo
« Respuesta #10 en: Lunes 15 de Septiembre de 2003, 15:27 »
0
Hola agfed.

Por partes:
Sobre un tutorial o similar de SQL creo que no te puedo recomendar ya que no conozco ninguno. Manual los únicos que he visto son de SQL/400 y son manuales de referencia más que de aprendizaje. Mis limitados cononcimientos en SQL provienen de la experiencia. Creo que una buena forma de iniciarse es mediante access: utilizas el generador de consultas que tiene y usas la vista SQL para ver la sentencia equivalente, y así poco a poco... ya verás que al final las sentencias más utilizadas siempre tienen la misma sintaxis. Eso sí, ten en cuenta que esta sintaxis puede variar de unas bases de datos a otras, aunque normalmente son diferencias poco importantes (del tipo usar UPPER en vez de UCASE y cosas por el estilo) según el motor de la base de datos pueden ser diferencias cualitativas (por ejemplo, con bb.dd. DB/2 puedes incluir bloques 'SELECT CASE' dentro de la sentencia SQL).

Sobre la segunda cuestión.
En un principio si usas ADO con el proveedor de acceso a datos de FOXPRO creo que no notarás diferencias con usar otro proveedor OLEDb, excepto posibles diferencias en la sintáxis de las sentencias SQL, como te comentaba antes, o de rendimiento o intrínsecas a la propia base de datos.

En fin... todo un mundo.

Suerte.

agfed

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
    • http://www.maersa.com.mx
comparar campos memo
« Respuesta #11 en: Lunes 15 de Septiembre de 2003, 18:11 »
0
Gracias por tu ayuda. Doy por terminado este tema.