El post que buscas se encuentra eliminado, pero este también te puede interesar

importar microsoft access a sql compact

Buenas tardes.

Viendo que este hilo a tenido bastantes visitas y solucione el problema hace tiempo pongo el código que utilice, seguro que hay un método más elegante de hacer esto pero así funciona. Espero que a alguien le sirva.
Un saludo.


public void ImportarClientes()
{
// Defino la conexión para access y sql
SqlCeConnection sqlconexion = new SqlCeConnection(sqlcadenaconexion);
OleDbConnection accesconexion = new OleDbConnection(accescadenaconexion+"Clientes.mdb;";
string sql = "SELECT DISTINCT Cliente,Direccion,Localidad,CD,Provincia From Clientes";// Defino la instruccion sql para access
OleDbDataAdapter daacces = new OleDbDataAdapter(sql, accesconexion);// Declaro el dataadapter de Access
sql = "SELECT Nombre,Direccion,Localidad,CP,Provincia,ID From Clientes";// Defino la instruccion sql para sql
SqlCeDataAdapter dasql = new SqlCeDataAdapter(sql, sqlcadenaconexion);// Declaro el dataadapter para sql
DataTable datos = new DataTable();// Inicializa un data table para cargar los datos
SqlCeCommandBuilder comando = new SqlCeCommandBuilder(dasql);// Inicializo comoand builer para generar automaticamente Inser,Delete y Udate
DataTable importar = new DataTable();// Inicializa un data table para cargar los datos que luego se grtabaran el la bd sql
SqlCeCommand borrar = new SqlCeCommand("DELETE FROM Clientes", sqlconexion); // Defino el comando borrar para borrar bd sql
try
{
daacces.Fill(datos);// Cargo la tabla datos con la bd access
}
catch(OleDbException){return;}
try{
sqlconexion.Open();// Abro la conexión sql
borrar.ExecuteNonQuery();// Ejecuto el comando borrar
sqlconexion.Close();//Cierro la conexión

//importar = new DataTable();
// Cambio el nombre de las columnas clientes y cd por Nombre y cp de la tabla datos para la importación
datos.Columns["Cliente"].ColumnName = "Nombre";
datos.Columns["CD"].ColumnName = "CP";
// Creo una columna id autoincremental empezando en uno y con incremento de 1
importar.Columns.Add("ID";
importar.Columns["ID"].AutoIncrement = true;
importar.Columns["ID"].AutoIncrementSeed = 1;
importar.Columns["ID"].AutoIncrementStep = 1;
// Creo el resto de columnas de la tabla importar con los mismos nobres que la base de datos sql
importar.Columns.Add("Nombre";
importar.Columns.Add("Direccion";
importar.Columns.Add("Localidad";
importar.Columns.Add("CP";
importar.Columns.Add("Provincia";
int fila = 0;
// Creo un bucle para recorrer todas las filas y columnas de la tabla datos
foreach (DataRow filas in datos.Rows)
{
importar.Rows.Add();
foreach (DataColumn columna in datos.Columns)
{
importar.Rows[fila][columna.ToString()] = datos.Rows[fila][columna.ToString()].ToString();// Importo los datos de la tabla datos a la tabla importar
}
fila += 1;
}
dasql.Update(importar);// Actualizo la base de datos sql con la tabla importar
}
catch (SqlCeException err)
{
MessageBox.Show( err.Message, "ATENCIÓN", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (OleDbException err)
{
MessageBox.Show( err.Message, "ATENCIÓN", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception err)
{
MessageBox.Show( err.Message, "ATENCIÓN", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
sqlconexion.Dispose();
accesconexion.Dispose();
sqlconexion = null;
accesconexion = null;
}
}

Anuncios

1 comentario - importar microsoft access a sql compact