2014-12-05 4 views
0

여기에 문제가 있습니다. 데이터베이스에 쿼리를 하나만 선택하고 DataSet에로드하고 DataGridView를 채 웁니다.DataGridView에서 데이터를 업데이트 할 때 오류가 발생했습니다.

private void toolStripButton1_Click(object sender, EventArgs e) 
{ 
    SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daPomiar); 
    daPomiar.Update(dsPomiar, "Pomiary"); 
} 

을 다음 때로는 작동하고 때로는 나에게 오류를 제공합니다 : 나는 BindingNavigotor 사용하여 데이터를 업데이트하려고하면

comm = new SqlCommand("Select * from measurement where [email protected] order by me_date DESC", conn); 
comm.Parameters.AddWithValue("@id", this.uId); 
daPomiar = new SqlDataAdapter(); 
daPomiar.SelectCommand = comm; 
daPomiar.Fill(dsPomiar, "Pomiary"); 
dataGridView2.DataSource = dsPomiar; 
dataGridView2.DataMember = "Pomiary"; 

는, 그러나이

SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daPomiar); 

에 추가

Dynamic SQL generation is not supported against multiple base tables.

남 질문은 그것이 왜 일어나는가입니다. 한 테이블에서 작업 중이므로 SqlCommandBuilder (필자는 생각합니다)를 사용할 수 있습니다. 글쎄, 오류가 정기적으로 - 때로는 오류가 나타납니다 그리고 때로는 작동 - 데이터가 테이블에 업데이 트됩니다.

+0

나는 당신의 제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

답변

0

쿼리는 measurement 테이블에서 데이터를 선택하고 있음을 나타냅니다. Pomiary 테이블로 업데이트하려고합니다. DataMember 등을 제공하더라도 DataMember와 테이블 이름을 모두 동일하게 유지하는 것이 가장 좋습니다.

또한 연결이 열려 있는지 확인하고 아무 것도 표시되지 않는 경우 빠져있을 수 있습니다.

string tableName = "measurement"; 
comm = new SqlCommand("Select * from measurement where [email protected] order by me_date DESC", conn); 
comm.Parameters.AddWithValue("@id", this.uId); //not sure what this does 
daPomiar = new SqlDataAdapter(comm, tableName); 
daPomiar.Fill(dsPomiar, tableName); 
dataGridView2.DataSource = dsPomiar; 

의 ToolStrip는 :

private void toolStripButton1_Click(object sender, EventArgs e) 
{ 
    SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daPomiar); 
    daPomiar.Update(dsPomiar, tablename); 
} 
관련 문제