Mi problema es el siguiente. Tengo que crear una base de datos en
Access 2000 que acceda a y visualize unos ficheros dBase de otra
aplicación (FacturaPlus). Resulta que cuando enlazo las tablas dBase
con una base de datos de Access, Access me representa los caracteres
accentuados, eñes y similares con caracteres raros. Supongo que será
porque los ficheros dBase todavía usan la codificación usada en MS-DOS
mientras que Access usa la de Windows. Así que mi pregunta es la
siguiente: ¿hay alguna manera de configurar Access para que pueda
visualizar en él los caracteres acentuados de las tablas de dBase como
se ven en el FacturaPlus? Y por supuesto ¿como se hace?


RESPONDE EDUARDO OLAZ
=====================

Estas funciones las mandé a este foro a finales del año 99.
Te pueden servir para pasar de Windows a DBF y a la inversa.
Tienes el


Public Function ConvertirATextoDOS(ByVal Cadena As String) As String

'************************************************************************
    '   ConvertirATextoDOS(Texto)  --> Texto
    '   Función desarrollada por Eduardo Olaz
    '   Primera versión 26/12/99
    '   Última revisión 26/12/99

'************************************************************************
    ' parámetros:   Texto (por valor, string) Texto en formato Windows
    ' Valor devuelto (String) Texto convertido a formato MSDOS

    Dim strSubCadena As String
    Dim lngCadena As Long
    Dim lngContador As Long
    Dim strCaracter As String * 1

    lngCadena = Len(Cadena)

    If lngCadena > 0 Then
        For lngContador = 1 To lngCadena
            strCaracter = Mid$(Cadena, lngContador, 1)
            Select Case Asc(strCaracter)
            Case 170    '   ª
                strCaracter = Chr$(166)
            Case 186    '   º
                strCaracter = Chr$(167)
            Case 225    '   á
                strCaracter = Chr$(160)
            Case 193    '   Á
                strCaracter = Chr$(181)
            Case 233    '   é
                strCaracter = Chr$(130)
            Case 201    '   É
                strCaracter = Chr$(144)
            Case 237    '   í
                strCaracter = Chr$(161)
            Case 205    '   Í
                strCaracter = Chr$(214)
            Case 243    '   ó
                strCaracter = Chr$(162)
            Case 211    '   Ó
                strCaracter = Chr$(224)
            Case 250    '   ú
                strCaracter = Chr$(163)
            Case 218    '   Ú
                strCaracter = Chr$(233)
            Case 252    '   ü
                strCaracter = Chr$(129)
            Case 220    '   Ü
                strCaracter = Chr$(154)
            Case 241    '   ñ
                strCaracter = Chr$(164)
            Case 209    '   Ñ
                strCaracter = Chr$(165)
            Case 231    '   ç
                strCaracter = Chr$(135)
            Case 199    '   Ç
                strCaracter = Chr$(128)
            End Select
            strSubCadena = strSubCadena & strCaracter
        Next lngContador
    End If
    ConvertirATextoDOS = strSubCadena
End Function



Public Function ConvertirATextoWindows(ByVal Cadena As String) As String


'************************************************************************
    '   ConvertirATextoWindows(Texto)  --> Texto
    '   Función desarrollada por Eduardo Olaz
    '   Primera versión 26/12/99
    '   Última revisión 26/12/99

'************************************************************************
    ' parámetros:   Texto (por valor, string) Texto en formato DOS
    ' Valor devuelto (String) Texto convertido a formato Windows

    Dim strSubCadena As String
    Dim lngCadena As Long
    Dim lngContador As Long
    Dim strCaracter As String * 1

    lngCadena = Len(Cadena)

    If lngCadena > 0 Then
        For lngContador = 1 To lngCadena
         strCaracter = Mid$(Cadena, lngContador, 1)
         Select Case Asc(strCaracter)
         Case 166    '   ª
             strCaracter = Chr$(170)
         Case 167    '   º
             strCaracter = Chr$(186)
         Case 160    '   á
             strCaracter = Chr$(225)
         Case 181    '   Á
             strCaracter = Chr$(193)
         Case 130    '   é
             strCaracter = Chr$(233)
         Case 144    '   É
             strCaracter = Chr$(201)
         Case 161    '   í
             strCaracter = Chr$(237)
         Case 214    '   Í
             strCaracter = Chr$(205)
         Case 162    '   ó
             strCaracter = Chr$(243)
         Case 224    '   Ó
             strCaracter = Chr$(211)
         Case 163    '   ú
             strCaracter = Chr$(250)
         Case 233    '   Ú
             strCaracter = Chr$(218)
         Case 129    '   ü
             strCaracter = Chr$(252)
         Case 154    '   Ü
             strCaracter = Chr$(220)
         Case 164    '   ñ
             strCaracter = Chr$(241)
         Case 165    '   Ñ
             strCaracter = Chr$(209)
         Case 135    '   ç
             strCaracter = Chr$(231)
         Case 128    '   Ç
             strCaracter = Chr$(199)
         End Select
         strSubCadena = strSubCadena & strCaracter
       Next lngContador
    End If
    ConvertirATextoWindows = strSubCadena
End Function



Aquí tienes las funciones equivalentes

TextoWindowsADos
TextoDosAWindows

Realizadas con las funciones API

CharToOem
OemToChar
____________________________________

Option Explicit

Declare Function CharToOem _
            Lib "user32" _
            Alias "CharToOemA" ( _
            ByVal CadenaAConvertir As String, _
            ByVal CadenaConvertida As String) _
            As Long
Declare Function OemToChar _
            Lib "user32" _
            Alias "OemToCharA" ( _
            ByVal CadenaAConvertir As String, _
            ByVal CadenaConvertida As String) _
            As Long

Public Function TextoWindowsADos( _
            ByVal Cadena As String) _
            As String
    Dim strBuffer As String
    Dim Resultado As Long
    strBuffer = String(Len(Cadena), " ")
    Resultado = CharToOem(Cadena, strBuffer)
    TextoWindowsADos = strBuffer
End Function

Public Function TextoDosAWindows( _
            ByVal Cadena As String) _
            As String
    Dim strBuffer As String
    Dim Resultado As Long
    strBuffer = String(Len(Cadena), " ")
    Resultado = OemToChar(Cadena, strBuffer)
    TextoDosAWindows = strBuffer
End Function

