2013-05-16 5 views
0

안녕하세요 여러분, 사전에 감사합니다 !! 일체의 모든 도움을 위해 나는 내가 데이터베이스에 연결하는 윈도우 폼 응용 프로그램을 만드는 중이라서 비주얼 스튜디오 2012를 사용하여 C#데이터베이스의 DataTables를 사용하여 System.IndexOutOfRange 메시지를 가져 오지 않고 시작시 프로그램을 채우십시오

을에서 코딩하고

(4-5개월) 코딩 및 프로그래밍에 대한 절대 초보자입니다 SQL 서버 관리 스튜디오에서

기본적으로 나는 시작할 때 데이터베이스의 데이터로 채워질 필요가있는 두 개의 콤보 상자가 있습니다.

콤보 상자를 채우고 프로그램이 작동하는 방법을 만들었습니다. 100 % 시작시 데이터가 누락되지 않고 모든 행이 콤보 상자에 표시되고 모든 작업이 정확히 수행됩니다. 언제 해야할지 ...

어떻게!

내가 내 프로그램을 실행할 때마다 나는 실제 프로그램을 시작하기 전에 (사용되는 메시지를 생성하는 코드로 5 회) 5 회

System.IndexOutOfRangeException:There is no row at position 0 
    at System.Data.RBTree1.GetNodeByIndex(Int32 userIndex) 
    at System.Data.DataRowCollection.get_Item(Int32 index) 

이 메시지가 제대로 실행됩니다. ??? (운전 견과류 !!) 여기 내 모든 관련 코드입니다

아래 코드는 내 실제 양식 에서 볼 수 있습니다. 나는 update_combobox()를 사용하고 있습니다. 여기

 namespace DB_Program 
     { 
      public partial class Form1 : Form 
      { 

       DataClass dc = new DataClass(); 

       public Form1() 
       { 
        Thread t = new Thread(new ThreadStart(SplashScreen)); 
        t.Start(); 
        Thread.Sleep(5000); 
        InitializeComponent(); 
        t.Abort(); 
        update_ComboBox();    
        } 

이은을 생성하는 라인입니다 내 메시지에 따라 가능

 private void update_ComboBox() 
    { 
     DataSet pList = dc.PListPop(); 

     cboBoxPList.DataSource = pList.Tables[0]; 
     cboBoxPList.DisplayMember = "PName"; 
     cboBoxPList.ValueMember = "PName"; 

     DataSet devList = dl.DevListPop(); 

     cboBoxDev.DataSource = devList.Tables[0]; 
     cboBoxDev.DisplayMember = "LName"; 
     cboBoxDev.ValueMember = "LName"; 

    } 


     public String getDate(String pName) 
     { 
      String date = null; 
      DataTable dTable = new DataTable(); 

      try 
      { 
       conn.Open(); 
       SqlDataAdapter sda = new SqlDataAdapter("SelPro", conn); 
       sda.SelectCommand.CommandType = CommandType.StoredProcedure; 
       sda.SelectCommand.Parameters.Add("@PName", SqlDbType.VarChar).Value = pName; 
       sda.Fill(dTable); 
       date = dTable.Rows[0]["StartDate"].ToString(); 

      } 
      catch (Exception GSD) 
      { 

       string a = GSD.StackTrace.ToString(); 
       MessageBox.Show(GSD.ToString()); 
      } 
      finally 
      { 
       if (conn != null) 
       { 
        conn.Close(); 
       } 
      } 

      return date; 
     } 

하게 내 양식에서 내 코드입니다 시작에서 initalizeComponent 섹션에 채우는
를 얻을 수 있습니다 첫 번째 메시지는 바로 위의 코드와 관련됩니다.

  date = dTable.Rows[0]["StartDate"].ToString(); 
     date = dTable.Rows[0]["PlannedEndDate"].ToString(); 
     FirstName = dTable.Rows[0]["FirstName"].ToString(); 
     Spec = dTable.Rows[0]["Specialty"].ToString(); 
     PID = (int) dTable.Rows[0]["PID"]; 

제발 제발 누군가 제 좌절 밤을 끝내주십시오. 바다! 프로그램을 그대로두고 그대로 실행해야하는데, 내가하려는 것은 프로그램이 실행될 때마다 실행해야하는 메시지입니다.

다시 한번 감사드립니다!

답변

0

그 모든 문제는 직접 해결할 수 있었으므로이 질문을 무시하십시오.

코드에 오류가 없으므로 문제가 발생하지 않았던 속성 탭 설정 에있는 것이므로