2017-02-07 8 views
0

У меня проблема с приложением. разработанный несколько лет назад. Это надстройка для MS Excel 2010, которая выполняет вызов базы данных SQL-сервера и формирует таблицу в Рабочем листе. Мне пришлось изменить ее, чтобы она работала с базой данных Azure (строки подключения), но оказалось, что проблема заключается в том, немного глубже, чем это. Когда я пытаюсь запустить приложение, оно дает исключение HRESULT: 0x800A03EC, и я не могу понять, почему. Установлен MS Excel 2010. Код, который выдает ошибку:C# add-in Excel 2010 - Исключение из HRESULT: 0x800A03EC

public void insertData(string startDate, string endDate, string startTime, string endTime, string tickerSymbol, 
     string RegId, string events, string userId, string PO, bool includePO, string markets) 
    { 

     try 
     { 

      // 
      if (Globals.ExclAddIn.recordCount < 1000000) 
      { 
       string szSql = string.Format(@"EXEC sp_Get_Excel_TOQ_Report_Data_Mkt {0}, {1}, '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', {10}", 
       startDate, endDate, startTime, endTime, tickerSymbol, RegId, events, userId, PO, markets, includeJPO); 

       Workbook w = this.Application.ActiveWorkbook; 
       Worksheet ws; 
       if (w != null) 
       { 
         ws = (Worksheet)w.Sheets.Add(missing,missing,missing,missing); 
         ws.Name = DateTime.Now.ToString("(RPT) yyyyMMdd HHmmss"); 
        //} 
       } 
       else 
       { 
        w = this.Application.Workbooks.Add(missing); 
        ws = (Worksheet) w.Worksheets.get_Item(1); 
       } 


       Range unfreezeRow = (Range)ws.Rows[10]; 
       unfreezeRow.Application.ActiveWindow.FreezePanes = false; 

       ws.Rows.Delete(); 
       object misValue = System.Reflection.Missing.Value; 
       Range range = ws.get_Range("A1:A9", misValue); 
       MessageBox.Show(range.EntireRow.Address); 

       //Check if the issue is in connection 
       SqlConnection conn = new SqlConnection(selectedConnection); 
       conn.Open(); 
       MessageBox.Show("Connection opened..."); 

       QueryTables xlQryTables = ws.QueryTables; 
       IEnumerable<QueryTable> qt = xlQryTables.Cast<QueryTable>(); 
       foreach (QueryTable q in qt) 
       { 
        q.Delete(); 
       } 

       QueryTable xlQueryTable = (QueryTable)xlQryTables.Add(selectedConnection, range, szSql); 
       xlQueryTable.RefreshStyle = XlCellInsertionMode.xlOverwriteCells; 
       xlQueryTable.AfterRefresh += new RefreshEvents_AfterRefreshEventHandler(xlQueryTable_AfterRefresh); 
       xlQueryTable.CommandType = XlCmdType.xlCmdSql; 
       xlQueryTable.Refresh(true); 

       assignReportHeader(ws); 


      } 
     } 
     catch (Exception e) 
     { 
      throw new Exception(e.Message); 
     } 
    } 

место я получаю сообщение об ошибке в это:

QueryTable xlQueryTable = (QueryTable)xlQryTables.Add(selectedConnection, range, szSql); 

Строка подключения работает ... Я могу видеть диапазон выбран как хорошо. Пожалуйста помоги.

+1

Возможный дубликат [HRESULT: 0x800A03EC on Worksheet.range] (http://stackoverflow.com/questions/7099770/hresult-0x800a03ec-on-workheet-range) – Smartis

+0

Это не дубликат, я изучил все связанные темы прежде чем спрашивать. Проблема, безусловно, не в использовании обратного совместимого листа. –

ответ

0

Я не могу поставить комментарий и потому, что я спрошу таким образом. Можете ли вы написать свою явную строку соединения. Я думаю, что проблема связана с строкой соединения, возможно, вы забыли точку с запятой или что-то в этом роде.

+0

Я беру строку подключения из файла xml: Пароль = testpwd123; Идентификатор пользователя = testusr @ devdb001; Начальный каталог = DEV; Источник данных = tcp: devdb001.database.windows.net; Я вижу, что соединение открыто. –

+0

но все же, можете ли вы проверить законность подключения? –

+0

Что вы подразумеваете под этим? Я реализовал этот кусок кода для проверки: // Проверьте, связана ли проблема с сообщением SqlConnection conn = новое SqlConnection (selectedConnection); conn.Open(); MessageBox.Show («Соединение открыто ...»); Работает, открывается соединение. –

Смежные вопросы