ODBC + ACCESS: problema de acentuación

Tartopom -  
ingenu Mensajes publicados 1 Estado Miembro -
Bonjour,

je fais appel à vous aujourd'hui car j'ai un souci que je n'arrive pas à résoudre.
J'ai fait un moteur de recherche avec un bête SELECT en fond. Le problème c'est que quand je recherche un mot qui a un accent il ne me le sort pas.
Un exemple vaut mieux qu'un long discours :
J'ai "Céline" dans ma table "personnel", champ "prenom".
Ma requête ressemble à SELECT prenom FROM personnel WHERE prenom LIKE "mavariable%"
Si mavariable = cé ou Cé ou Ce ou ce il ne me trouve pas Céline. :/
Si je tape la même requête directement dans ACCESS ça fonctionne bien (mais bon, ACCESS c'est pas une référence du SQL, ça a le don de m'horripiler).

Après plusieurs recherches sur le net j'ai vu qu'en rajoutant un attribut "COLLATE SQL_Latin1_General_Cp437_CI_AI" à ma requête ça devrait fonctionner. Mais non, j'ai une belle erreur "Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14' Erreur de syntaxe" en gros.

Et là je sèche.

Je m'en remets donc à vous en espérant que vous me sortirez de ce bourbier.

Bonne journée,

et vive MySql ;)
Configuration: Windows XP Firefox 3.5.5

17 respuestas

  1. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    Hola,
    tu problema no proviene de la base de datos sino de dónde se muestra tu página.
    Tengo el caso en el que trabajo y no hemos encontrado por qué!
    Nunca un acento será un problema en Access pero en MySql puedo decirte por experiencia que justamente es la m... por una cuestión de una fuente que es mal interpretada por el motor de datos.
    El collate no se aplica a Access sino más bien a SQLSERSERVER para comunicar entre db que tienen una fuente por defecto diferente.
    3
  2. Tartopom
     
    Hola,

    Vuelvo a tocar el tema. Después de horas navegando por la red buscando pistas, concluyo también que no proviene de ODBC sino de ACCESS. Desafortunadamente no encontré respuestas :/
    Pensé en un problema de codificación de las tablas, pero no encontré nada para cambiar la codificación. No vi indicio de algo que se parezca.
    Viva ACCESS, cuantas más cosas hago, más me parece una porquería.
    Devuélveme Mi MySQL T_T
    1
  3. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    Si en lugar de decir cualquier cosa… explicara con más precisión su problema, ¡quizás podríamos ayudarle mejor! Solo hay que leer su llamada para ver de inmediato que parte de un prejuicio sobre Access…
    Comencemos desde el principio:
    ¿Qué base de datos? ¿Un enlace a qué? ¿Qué tipo de dato?
    ¿Qué lenguaje?
    ¿Un mensaje de error? ¿Cuándo? ¿Después de qué?

    Intentar ver el problema en su conjunto. Parece que está convencido de que sería un problema de fuente " ... Después de varias búsquedas en la red he visto que añadiendo un atributo "COLLATE SQL_Latin1_General_Cp437_CI_AI""
    ¿Qué fuente se encuentra en el hosting? ¿Ha verificado las Configuraciones Regionales?
    1
  4. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    para el enlace, disculpa, me equivoqué de llamada.
    Revisa tu llamada del 11 de diciembre, es tú quien, y no yo, asumió que la adición de un "Collate" podría ayudar. ¿¡Puedes ayudar!?>
    Cuando te pido que no digas cualquier cosa es en relación directa con tu crítica sobre Access.
    Lo que a mí me irrita es que muy a menudo personas se ponen a criticar un producto porque no consigue resolver su problema, mientras que esas mismas personas no han conocido mínimamente el producto que usan y eso mismo, y es lo máximo, en el ámbito profesional de sus actividades. En tu llamada escribes "pero bueno, ACCESS no es una referencia del SQL". ... La verdad es que tienes un error que te molesta y, en lugar de reconocer tu falta de conocimiento, pones el problema en el software, ¿no lo crees? ;-)
    En resumen, todo eso no resuelve tu problema. Dime un poco más, por ahora sé dos cosas:
    1) usas una base Access
    2) te conectas por enlace ODBC
    3) ¿A través de una aplicación? ¿Con qué lenguaje? ¿Por qué una conexión ODBC? Dime un poco más.
    1
  5. Tartopom
     
    I just changed the page encoding to test, but it changes nothing.
    for me it's an issue with the ODBC layer.
    0
  6. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    No más, el enlace ODBC no es más que un tubo en el que se dice a una base de datos que use tal o cual controlador con una cuenta. Si lo encuentras dímelo porque también me interesa.
    0
  7. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    http://www.infos-du-net.com/forum/253695-21-resolu-affichage-accents-site
    0
  8. Tartopom
     
    Hola,

    me cuesta creer que fuiste tú quien escribió el mensaje anterior. Además, ¿me recomiendas "Después de varias búsquedas en la red he visto que al añadir un atributo "COLLATE SQL_Latin1_General_Cp437_CI_AI"" cuando tú mismo me dijiste dos posts más arriba que el COLLATE solo funciona para SqlServer? Como tu enlace que no tiene nada que ver :/ No entiendo por qué me hablas así, me parece haber expresado mi problema de la forma más clara posible.
    0
  9. Tartopom
     
    Sí, tengo una fuerte aversión hacia Access y ¿y? ¿qué problema hay con eso? ¿cuál es el problema de manifestar mi animosidad hacia ese software? Sí, cuando hago una consulta en 5-6 tablas me quedo pasmado por las casuísticas obligatorias para poder hacer mi consulta correctamente. La sintaxis es absurda, el SQL no funciona bien (por ejemplo, los JOIN no funcionan correctamente) y pierdo muchísimo tiempo haciendo cosas simples que me habría llevado escribir en SQL puro. ¿Qué mal hay en denigrar un software que no me gusta? Cuando codeo en ASP, me quejo tanto o más. a pesar de todo, eso no refleja un nivel pobre en ese lenguaje.

    Volvamos a lo nuestro.
    Trabajo con ACCESS 2007, vía ODBC, en un sitio intranet de empresa bajo IIS. El controlador utilizado es “Driver do Access (*.mdb)”. En cuanto uso un acento en mi consulta, o cuando hay acento en la tabla, la consulta se complica. Tomo mi ejemplo: si escribo "ce" o "cé" o "Ce" en mi formulario de búsqueda, no aparece "Céline" como resultado.
    La consulta se lanza vía AJAX, pero ya la probé sin AJAX y tampoco funciona. Además, si puede ayudar, las consultas funcionan correctamente cuando las hago en ACCESS pero no vía ASP (3.0, para más inri T_T).
    Disculpen si están a favor de ACCESS ;)
    0
  10. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    ¿Es entonces un problema en una página web? ¿Dices que lanzas la solicitud vía Ajax, en qué lenguaje haces eso? ¿PHP?
    0
  11. Tartopom
     
    Sí, es una página web. Y trabajo en ASP 3.0 (sí, ya sé que es una porquería, pero solo estoy implementando algo ya hecho hace mucho).

    Para infi la consulta funciona cuando la escribo en ACCESS, pero ya no cuando la ejecuto desde mi página web.
    0
  12. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    Y bien, me pregunto si el enlace que te mandé puede ayudarte….
    http://www.infos-du-net.com/forum/253695-21-resolu-affichage­-accents-site
    ¿lo has leído todo?
    casi estoy seguro de mi argumento... el problema proviene de la interpretación web que se realiza.
    0
  13. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    por favor, podría mostrarme la parte de código que indica la conexión y el select, por favor.
    0
  14. Tartopom
     
    Sí.

    querystring = Request.Form("queryString")

    set objConnection = Server.CreateObject("ADODB.Connection")
    objConnection.Open("annu2")

    set objRecordset = Server.CreateObject("ADODB.Recordset")

    query = "SELECT DISTINCT nom, prenom, mail, telephone, fonction, service, pole, hopital FROM personnel "
    query = query & "WHERE nom LIKE '" & querystring & "%' OR prenom LIKE '" & querystring & "%' "
    query = query & "OR fonction LIKE '" & querystring & "%' OR service LIKE '" & querystring & "%' "
    query = query & "ORDER BY nom, prenom, fonction, service"
    objRecordset.Open query, objConnection
    0
  15. OlivrT Mensajes publicados 323 Fecha de registro   Estado Miembro Última intervención   36
     
    Hola,
    lo siento por mi respuesta tardía, pero me animé a tomar unos días de descanso :-)
    ¿En qué punto están?

    Al leer vuestro código, hay algo que me parece raro:

    querystring = Request.Form("queryString")
    set objConnection = Server.CreateObject("ADODB.Connection")

    objConnection.Open("annu2")

    ¿no debería ser esto más bien?: objConnection.Open(querystring )
    0
  16. ingenu Mensajes publicados 1 Estado Miembro
     
    Hola tartopom,
    tengo el mismo problema con Access y los caracteres acentuados
    ¿has tenido alguna solución?
    0