Я создаю программу, которая импортирует данные из файла Excel в базу данных, либо записывает в текстовые поля (путем вставки в asp.net), либо и то и другое, но я хочу дать предупреждение, если пользователь пытается ввестита же запись, которая уже есть в базе данных (дублируется).
И я хотел бы сделать это путем кодирования или установки чего-либо в SQL, чтобы было проще для пользователя ...
Вот мойтаблица:
Mov. Date Value Date description of the movement Value in EUROS
---------------------------------------------------------------------------
12-12-2001 12-12-2001 DEPOSITO EM NUMERARIO 222 200,01
12-12-2001 12-12-2001 DEPOSITO EM NUMERARIO 223 200,01
12-12-2001 12-12-2001 DEPOSITO EM NUMERARIO 224 200,02
если пользователь вводит запись, равную любой из них, он выдает предупреждение и пользователь может повторить попытку
Вот код (asp.net C #):
protected void Upload_Click(object sender, EventArgs e)
{
string excelPath = Server.MapPath("~/Nova pasta/") + Path.GetFileName(FileUpload1.PostedFile.FileName);
string filepath = Server.MapPath("~/Nova pasta/") + Path.GetFileName(FileUpload1.FileName);
string filename = Path.GetFileName(filepath);
FileUpload1.SaveAs(excelPath);
string ext = Path.GetExtension(filename);
string strConnection = @"Data Source=PEDRO-PC\SQLEXPRESS;Initial Catalog=costumizado;Persist Security Info=True;User ID=sa;Password=1234";
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\"";
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
OleDbCommand cmd = new OleDbCommand("Select * from [rptListaMovs_4$A15:D75]", excelConnection);
excelConnection.Open();
cmd.ExecuteNonQuery();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
DataTable dtFail = new DataTable();
using (SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection))
{
sqlBulk.ColumnMappings.Add("Mov. Date", "Mov. Date");
sqlBulk.ColumnMappings.Add("Value Date", "Value Date");
sqlBulk.ColumnMappings.Add("description of the movement", "description of the movement");
sqlBulk.ColumnMappings.Add("Value in EUROS", "Value in EUROS");
sqlBulk.DestinationTableName = "Dados";
var temp = dtFail.AsEnumerable().Distinct();
dtFail = temp.CopyToDataTable();
sqlBulk.WriteToServer(dReader);
}
excelConnection.Close();
}