Мое приложение в WPF позволяет пользователю сохранять некоторые данные из текстовых полей в файл Excel (используя соединение OLEDB).Я хочу добавить возможность, что каждый раз, когда новая строка сохраняется в файле Excel, порядковый номер добавляется в столбец EventID в этом файле Excel.
Но при запуске приложения возникает ошибка, связанная с параметром @EventIdговоря: «параметр не имеет значения по умолчанию».Я предполагаю, что написал неверную команду sql1 для генерации серийного номера.
Буду признателен за вашу помощь.
private void btnSaveNewEvent1_Click_1(object sender, RoutedEventArgs e)
{
object eventName = txtEventName.Text;
object typeValue = txtEventType.Text;
object nameValue = txtAttributeName.Text;
object attribvValue = txtAValue.Text;
object descValue = txtEventDescrip.Text;
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
System.Data.OleDb.OleDbCommand myCommand1 = new System.Data.OleDb.OleDbCommand();
String sql = null;
String sql1 = null;
MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source='excel_file\\events2.xlsx'; " +
"Extended Properties=\"Excel 12.0 Xml;HDR=YES;\"");
try
{
//SQL STATEMENT TO SAVE INSERTED BY THE USER VALUES FROM THE TEXT BOXES
//SQL1 STATEMENT TO GENERATE EVENTID NUMBER EACH TIME THE USER SAVES NEW ROW OF DATA
MyConnection.Open();
myCommand.Connection = MyConnection;
sql = "Insert into [events$] (EventID,EventName, Type, Name, [Value], Description) values(@EventID,@EventName,@Type,@Name,@Val,@Desc)";
myCommand.CommandText = sql;
myCommand.Parameters.AddWithValue("@EventID",sql1);
myCommand.Parameters.AddWithValue("@EventName", eventName ?? DBNull.Value);
myCommand.Parameters.AddWithValue("@Type", typeValue ?? DBNull.Value);
myCommand.Parameters.AddWithValue("@Name", nameValue ?? DBNull.Value);
myCommand.Parameters.AddWithValue("@Val", attribvValue ?? DBNull.Value);
myCommand.Parameters.AddWithValue("@Desc", descValue ?? DBNull.Value);
myCommand1.Connection = MyConnection;
sql1= "DECLARE @i int = 0 while @i < EventID BEGIN SET @i = EventID + 1 END";
myCommand1.CommandText = sql1;
myCommand.ExecuteNonQuery();
myCommand1.ExecuteNonQuery();
MyConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
MyConnection.Close();
Events eventsWindow = new Events();
eventsWindow.dgData.Items.Refresh();
}
}