Ayuda con función para cambiar el texto con tildes y carácter ñ en tablas de Microsoft Access

Buenas,
es una pregunta tonta, pero te agradecería muchísimo me pudieras ayudar. Te explico, tengo nas tablas vinculadas, y el texto con tilde o ñ me lo convierte a caracteres extraños... Pues bien tengo una función que me han dado y no sé como ejecutarla
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
Gracias de antemano
Un saludo Isaac
Respuesta
1
Este código está bien pero...
Le falta lo esencia, te comento.
La forma de llamar a este código es así:
call TextoWindowsADos(escribe una cadena string, es decir ññññ o pones un CuadroTexto).
Pero no te va a funcionar porque como decía falta otra parte del código, alguna DLL o un OCX cargado en referencia, lo que podrías hacer, es decirle a la persona que te dio este código que te de la dll o el OCX, si lo consigues en el editor de vb, en referencias carga el archivo, así cuando lo llame como pone más arriba te cambiará a lo que sea.
OK, gracias iré a ello.
No sé si se puede aplicar a una consulta de datos anexados, para que me cambie las ñ, ¿y acentos cuando la ejecuto?
Gracias.
¿Dime desde donde has vinculado las tablas, de MySql, SQL, Oracle?
Seguramente la normativa sea UTF8 o un UNICODE, para que no inserte cosas raras ha de ser en ANSI, prueba desvincular y como prueba añádelas a Access, a ver que te inserta.
Buenas, las vinculo de Access. Estuve mirando si me faltaba alguna dll y parece ser user32, la he encontrado y cuando intento añadirla en referencias me dice que no lo encuentra.
Gracias por tu atención.
La Lib user32, vien por defecto con Windows y nunca se ha de cargar en referencias mas bien tienes que hacer una llamada al API de windows, copia este cód y dime si te funciona.
Option Compare Database
Option Explicit
Private Const LWA_ALPHA = &H2
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Sub apiRGB Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, src As Any, ByVal Length As Long)
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas