Importar desde .dbf

04/11/2006 - 00:10 por Agustin | Informe spam
Hola, estoy haciendo un modulo de importación de datos de otras aplicaciones
que estan en el antiguo dbase(clipper) como puedo convertir las cadenas de
texto OEM a ANSI, pues me salen simbolos 'raros'.

Gracias
Agustin

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion [MVP]
04/11/2006 - 10:11 | Informe spam
"Agustin" wrote in message
news:OJMjC15$
Mostrar la cita
Usa System.Text.Encoding. Básicamente, quieres convertir del encoding
437 (OEM) al 1252 (Windows), o bien leer desde el 437 y dejar los resultados
en un String (Unicode):

using System.Text.Encoding;
...
Encoding codigoOEM = Encoding.GetEncoding(437);
byte[] bytesAConvertir = ...;
string TextoConvertido = codigoOEM.GetString(bytesAConvertir);

Observa que partimos de "bytesAConvertir" y no de un "stringAConvertir".
Si tuvieses ya los caracteres metidos en un string, entonces ya se ha
producido una conversión (mal hecha) desde los bytes que había en el dbf
hacia un string (que siempre contiene Unicode en .Net), con lo cual nos
encontramos con el problema de deshacer la conversión mal hecha para volver
a hacerla bien.
#2 Agustin
04/11/2006 - 11:52 | Informe spam
Ok, pero no entiendo como lo hago desde una .dbf
tienes un ejemplo de importacion
Gracias
Agustin

"Alberto Poblacion [MVP]"
escribió en el mensaje news:OuQdsE$$
Mostrar la cita
#3 Alberto Poblacion [MVP]
04/11/2006 - 12:17 | Informe spam
"Agustin" wrote in message
news:Ohahb9$$
Mostrar la cita
Pues no, no tengo ningún ejemplo. La verdad es que nunca he importado
datos desde un dbf. Por lo que había entendido de la pregunta original, la
primera parte de la importación, que sería "extraer el contenido del dbf",
ya la tenías hecha. Y a continuación venía una segunda parte que era
"sustituir el juego de caracteres", que entendí que era la que no conocías y
que esa sí es la que sé hacer con System.Text.Encoding: Suponiendo que ya
tengas en un array de bytes los datos a convertir, con System.Text.Encoding
puedes interpretar esos bytes conforme con el juego de caracteres que sea
necesario. Pero la primera fase, "sacar los bytes del dbf" no la he hecho
nunca. Supongo que se podría hacer abriendo una conexión por OleDb, creando
un OleDbDataReader que recorra los registros, y sacando los bytes de los
campos con el método GetBytes del datareader. Pero nunca lo he probado.
#4 Agustin
04/11/2006 - 16:20 | Informe spam
vale, ire investigando
Gracias
Agustin

"Alberto Poblacion [MVP]"
escribió en el mensaje news:
Mostrar la cita
#5 Paco Ferre
05/11/2006 - 07:46 | Informe spam
Hola,

No sé si tienes necesidad de importar cualquier DBF o un conjunto
reducido de ficheros, por ejemplo para una aplicación nueva que
sustituye a una anterior.

En el último caso (que me han tocado muchas importaciones gordas) es
más interesante usar las herramientas de importación de Access o SQL
Server para hacer el primer trabajo "sucio". Luego solo tienes que
desarrollar la importación a tu base de datos, hasta puedes crear
índices en la base de datos "sucia" para que todo vaya mucho más
rápido.

Por otro lado, pensaba que usando ADO.NET sobre el ODBC correspondiente
debería hacerte la "traducción" sin problema. Se supone que Access y
SQL Server usan lo mismo. Prueba a ver qué consiguen cuando le pides
que te importe un DBF.

Saludos,

Paco Ferre

Agustin ha escrito:

Mostrar la cita
Ads by Google
Search Busqueda sugerida