2011-10-31 6 views
1

dbcommand.commandtext에 case 문을 순서대로 추가하려고하지만 행이 반환되지 않습니다. case 문에서 색상의 우선 순위를 지정하고 싶습니다. 이렇게하면 우선 순위에 따라 새 테이블을 만들지 않고 외래 키를 매핑하는 많은 코드를 다시 작성하는 데 도움이됩니다. 모든 입력이 도움이 될 것입니다.사례 별 주문 dbCommand.CommandText

여기 문의 : -

Protected Sub AddData() 
    Dim cn As OleDbConnection = New OleDbConnection(ConfigurationManager.AppSettings("ConnectionString")) 
    cn.Open() 
    Dim dbCommand As New OleDbCommand 
    dbCommand.Connection = cn 

    dbCommand.CommandText = "SELECT * from tblPosts ORDER BY CASE PriorityLevel WHEN 'Red' then 1 when 'Orange' then 2 ELSE 3 END" 

    Try 
     dbCommand.ExecuteNonQuery() 
     Dim objdatareader As OleDbDataReader = dbCommand.ExecuteReader() 
     While objdatareader.Read() 
      Dim PostID As Integer = CInt(objdatareader("ID")) 
      PopulateImages(PostID, cn) 
      PopulateCategories(PostID, cn) 
      rssFeed.AddItem(objdatareader, ImageList, CategoryList) 
      ImageList.Clear() 
      CategoryList.Clear() 
     End While 

     objdatareader.Close() 
    Catch myerror As OleDbException 
     Dim strErr As String = "There was an error updating the database: " & myerror.Message 
    End 

당신에게

답변

0

당신이 예외를 받고 감사? END PriorityLevel이 (가)있어 문법 오류가 발생합니다. END 뒤에 PriorityLevel을 제거해도 구문 오류가 발생하지 않습니다.

그 외의 진술은 정확합니다.

이 작동 :

declare @tblPosts table(
    PriorityLevel varchar(10) 
) 

    insert into @tblPosts 
    values('Orange'),('Red'),('Green'),('Orange') 

    SELECT * from @tblPosts ORDER BY 
    CASE PriorityLevel WHEN 'Red' then 1 
        when 'Orange' then 2 
    ELSE 3 END 

이 작동하지 않습니다 :

declare @tblPosts table(
    PriorityLevel varchar(10) 
) 

    insert into @tblPosts 
    values('Orange'),('Red'),('Green'),('Orange') 

    SELECT * from @tblPosts ORDER BY CASE 
    PriorityLevel WHEN 'Red' then 1 
       when 'Orange' then 2 
    ELSE 3 END PriorityLevel 
+0

내가 구문 오류가 발생하지 않습니다. 나는 또한 끝에 PriorityLevel을 제거하려고했지만 행을 반환하지 않습니다. 나는 'Red %'와 같이 = 'Red'등을 대체하려고 시도했다. 작동하지 않습니다 : ( – curious123

+0

@PrathibhaAyyappan : 그러면 문제는 당신이 테이블에 어떤 데이터도 가지고 있지 않다는 것입니다. 'order by'없이 바로 선택을 실행하고 데이터가 있는지 확인하십시오. – Icarus

+0

내 데이터가 있습니다. 테이블에. 내가 선택에 대한 결과로 빨강, 오렌지 등을 반환합니다 – curious123