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
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)