2013-10-09 2 views
0

데이터베이스 테이블에서 몇 가지 값을 서로 바꿔야하는지 궁금합니다.datagridview/w 데이터 집합의 데이터베이스에서 값 바꾸기

내가 작성하려고하는 것은 ASP.net에서 설문 조사를 표시하는 웹 사이트입니다. 질문은 SURVEY_QUESTIONS (SQL Server의) 테이블에 저장됩니다.

표가 다음과 같은 열 :

  • survey_question_id (int)를
  • 질문 (문자열)
  • 유형 (문자열)
  • 활성 (부울)
  • 위해 (int)를

이제 질문은 질문 열에 저장됩니다. 예를 들어 충분 :

현재 상태에 만족합니까?

유형은 객관식 또는 열림 중 하나입니다. 액티브 (Active)는 액티브 인 경우 설문에 질문 만 표시됨을 의미합니다. 문제는 마지막 열, order입니다. 질문을 가장 낮은 순서에서 가장 높은 순서로 정렬하고 싶습니다. 따라서 5 개의 질문이있는 경우 주문 열 1,2,3,4,5에 따라 친절하게 주문됩니다.

질문을 추가하고 편집 할 수있는 C# (Winforms) 응용 프로그램이 있습니다. DataGridview에서이 작업을 수행하고 그리드 뷰를 채우기 위해 데이터 세트를 사용했습니다. 예를 들어 save 버튼을 누르면 datagridview의 변경 사항이 내 데이터베이스로 업데이트됩니다.

질문 1에 주문 번호 3이 있고 질문 5에 주문 번호 1이 있다고 가정 해 봅시다. 질문 1이 표시되는 첫 번째 것으로 표시됩니다. 즉, 주문 번호는 1이어야합니다.하지만이 경우 질문 5에는 이미 그 주문 번호, 내가 원하는 것은 "점유 된"주문 번호가 다른 질문에 할당 될 때마다 주문 번호가 교환됩니다.

DialogResult dr = MessageBox.Show("Are you sure want to edit a question?", "Message", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); 

if (dr == DialogResult.Yes) 
{ 
    this.SURVEY_QUESTIONTableAdapter.Update(_PVB1314_005DataSet.SURVEY_QUESTION); 
    datagridviewTest.Refresh(); 
    MessageBox.Show("Database updated"); 
} 

내가 사전에, 누군가가이 일에 저를 도울 수 덕분에 희망 :

내가 저장 버튼 뒤에 다음 코드는 데이터베이스에 업데이트해야합니다.

답변

0

저장 프로 시저를 사용해야합니다. 코드에서 '데이터베이스 업데이트 됨'을 나타내는 메시지 상자가 있습니다. 데이터베이스가 업데이트 된 것을 어떻게 아십니까? try catch 블록에 코드가 없습니다.

업데이트 할 QuestionID 및 업데이트 할 OrderID의 입력 매개 변수가있는 저장 프로 시저를 작성합니다. 그런 다음 원하는 OrderID가 이미 사용 중인지 쉽게 테스트 할 수 있으며 그렇지 않은 경우 업데이트 문을 실행하십시오.

사용 중이며 주문 열에서 중복 된 값을 허용하지 않는 경우 임시 값 (-1 일 수도 있음)으로 가져 오려는 OrderID의 행을 일시적으로 할당해야 할 수 있습니다. 행의 현재 OrderID 저장 변수에서 변경하려면 올바른 OrderID로 변경하려는 OrderID 행을 갱신 한 다음 일시적으로 저장 한 OrderID를 사용하여 방금 변경 한 OrderID 행을 -1로 갱신하십시오.

관련 문제