2013-06-25 6 views
-3

Excel에 값을 삽입하는 동안 오류 메시지가 표시됩니다 (오류 메시지 : 쿼리 값의 수와 대상 필드가 동일하지 않습니다). 누구든지이 오류를 해결하도록 도울 수 있습니다. 이 코드의 대상은 SQL 데이터베이스에서 값을 가져 와서 Excel에 삽입하는 것입니다. .xls 파일에 대한 연결 문자열이 다르기 때문에OLEDB ExecuteNonQuery Excel 시트에 값을 삽입하는 동안 오류가 발생했습니다.

// 코드는

string sheetname = comboBox1.SelectedItem.ToString(); 
      int s = 1, w = 0; 
      string ssss = ""; 

      Microsoft.Office.Interop.Excel.Application xlapp = new Microsoft.Office.Interop.Excel.Application(); 
      xlapp.Visible = true; 
      xlapp.Workbooks.Open(@"\\server\planet\CalculationDatabase\Database.xls"); 
      string path = @"\\server\planet\CalculationDatabase\Database.xls"; 
      string path1 = @"\\server\planet\CalculationDatabase\Settings.xlsx"; 
      string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + @";Extended Properties=""Excel 12.0 Macro;HDR=YES"""; 
      string con1 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path1 + @";Extended Properties=""Excel 12.0 Macro;HDR=YES"""; 
      OleDbConnection cn2 = new OleDbConnection(con1); 
      cn2.Open(); 
      OleDbCommand cmd2 = new OleDbCommand("select * from [" + sheetname.ToString() + "$]", cn2); 
      OleDbDataReader rd2 = cmd2.ExecuteReader(); 
      while (rd2.Read()) 
      { 
       ssss = rd2["Info Name"].ToString(); 
       if (ssss.ToString() == "") 
       { 
        w = int.Parse(s.ToString()); 
        break; 
       } 
       s++; 

      } 
      rd2.Close(); 
      cn2.Close(); 
      var queries = string.Join(",", (Enumerable.Range(1, w).Select(i => "ip" + i)));  
      SqlConnection con3 = new SqlConnection("Data Source=173.83.250.71,1433; Network Library=DBMSSOCN; Initial Catalog=paradigm;User Id=sa; password=Paradigm123"); 
      con3.Open(); 
      SqlCommand cmd3 = new SqlCommand("select " + queries.ToString() + " from paradigm.dbo.pinput where tempsheet='" + comboBox1.SelectedItem.ToString() + "'", con3); 

      SqlDataReader rd3 = cmd3.ExecuteReader(); 
      OleDbConnection cn = new OleDbConnection(con); 
      cn.Open(); 

      while (rd3.Read()) 
      { 

       var queries1 = string.Join(",", (Enumerable.Range(0, w - 1).Select(i => "'" + float.Parse(rd3[i].ToString()) + "'"))); 

       cmd1.ExecuteNonQuery();//I am getting error here 
      } 
      rd3.Close(); 
      con3.Close(); 

     } 
+0

암호, 사용자 및 IP가 실제가 아님을 알려주십시오. – Steve

+0

이제 오류가 발생한 위치를 추측해야합니다. – TGlatzer

답변

0

오류가 발생했습니다. OLEDB 연결 "con"을

으로 바꾸십시오.

공급자 = Microsoft.Jet.OLEDB.4.0; 데이터 원본 = C : \ MyExcel.xls; 확장 속성 = "Excel 8.0; HDR = 예; IMEX = 1";

+0

죄송합니다. 그러나 대답이 아닙니다. 질문을 편집하고 오류 부분을 추가해야합니다. 여기에 답변 섹션에 추가해서는 안됩니다. – NetStarter

관련 문제