2011-11-01 2 views
0

내 코드에 어떤 문제가 있습니까?내 코드에 어떤 문제가 있습니까? SQL Server 2008을 사용하여

Dim x As Integer 
    Dim sql As String 
    ModConnectDb.OpenDatabase() 
    conn.Open() 
    For x = 200 To 208 
     sql = "select * from ttransaction where no_room= 'x' and status= 'checkin '" 
     cmd = New SqlCommand(sql, conn) 
     dtReader = cmd.ExecuteReader 
     If dtReader.HasRows = False Then 
      cbo_numberroom.Items.Add(x) 
     End If 
     dtReader.Close() 
    Next 

병원 신청서를 작성 중입니다. 귀빈실은 방 번호가 200 ~ 208 이 코드의 목적입니다. 라디오 버튼이 VIP 인 사람을 선택하면 200 번이 이미 데이터베이스에 있는지 여부와 방의 상태가 체크인 상태인지 여부를 확인합니다. 그렇다면 숫자 200은 콤보 박스 noRoom에 다시 나타나지 않습니다.

그러나이 코드의 결과. 200가 작성되었지만, 아직도 내가 정말 도움을 희망 방 번호 를 선택하는 콤보 상자에 표시

당신은 공간이
  • 매개 변수화 된 쿼리
  • 를 사용하지 않는

    답변

    4
    1. 전에 감사 데이터베이스에, 그래서 당신은
    2. 가장 중요한 SQL 쿼리에 매개 변수로 방 번호를 사용하지 않는
    3. 일치가 없다하지 않을 수 있습니다 '체크인'후 문자 : 당신은 우리를 말 안하는지 그 잘못 또는이다!

    나는 no_room='x'을 쓰고있는 것을 볼 수 있습니다. 데이터베이스의 no_room 열에 'x'문자가 있는지 확인합니다. 당신이 x의 수와 함께 방은 이미 데이터베이스에 있는지 여부를 확인하려면

    , 당신은 오류가없는

    cmd = New SqlCommand("SELECT * FROM tTransaction WHERE no_room = @roomNumber AND status = 'checkin'", conn) 
    cmd.Parameters.AddWithValue("@roomNumber", x) 
    ... 
    
    +0

    사용해야합니다. 그러나이 코드의 결과. 200이 채워졌지만 여전히 콤보 박스에 나타나 방 번호를 선택합니다. 3 번, 제발 제게 도와 줄 수 있어요? –

    +0

    중복 된 수정 사항이 있습니다. 샘플이 있습니다. –

    +0

    @roomNumber 데이터베이스의 필드 이름 또는 무료 이름입니다. –

    관련 문제