에 대한 구문 또는 식 Visual Basic

0

질문

지 모르겠 Visual Basic 로 나가 알고 있 C++또는 C#.

나는가를 확인하는 경우 쿼리를 선택하는 모든 결과에 반환되는'testDataset`하고 몇 가지 결과,그래서 내가 쓴 아래 syntax:

If ((testDataset Is Nothing) Or (testDataset.Tables Is Nothing) Or testDataset.Tables.Count = 0 _
    Or (testDataset.Tables.Item(0).Rows Is Nothing) Or (testDataset.Tables.Item(0).Rows.Count = 0) _
    Or (testDataset.Tables.Item(0).Rows(0) Is Nothing)) Then
    MessageBox.Show("Dataset has no results!", "Database Query Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Return False
End If

에서는 C++때 식 안에 논리적이거나 사실 다음을 표현이 처리되지 않습니다. 하지만 그것은 보이지 않는 경우에 Visual Basic. 그래서 나는 알고 싶어 어떻게 확인할 수 있습니다 여러 가지 표정 visual basic 과 처리가 중 다음 사람이 하나되었습니다.

그래서 제 질문은 주로 요구될 수 있으로 두 개의 질문:

  1. 어떻게 확인할 수 있습니다 여러 가지 상태의 사용 또는 처리하지 않고 그 다음 사람은?

  2. 어떻게 확인할 수 있습니하는 경우에 데이터가 결과(적어도 하나의 행한다)및 특정 열에 존재하는 것(적어도 하나의)행?

dataset logical-or vb.net
2021-11-23 11:33:48
3

최고의 응답

2

사용할 수 있습니다 null 조건부 연산자 를 짧은 회로 그 모든 확인합니다. 이 ? 후에는 회원에게 이러 체인지를 평가한 후속 회원의 경우 null 을 반환합 회원은 null 입니다.

Return testDataset?.Tables?.Item(0)?.Rows?.Any() ' true if any, false if none
2021-11-23 15:30:43

이것은 흥미로운 아이디어를 여러 검사(+1)입니다. 문제는 왜 데이터 집합적이거나 null 이 될 테이블(0)null 이 될 수 있습니다,등등. 난 정말 단순히 try-catch 블록 충분하다.
Maciej Los

@MaciejLos 배웠을 사용하여 예외 처리를 아껴서,또는지 확인하는 응용 충돌하지 않을 것이다(범용)또는 특정 예외 등 UnauthorizedAccessException etc., 언제 가능,통합하지 않는것으로의 논리 프로그램입니다. 는 예외로 편지 말아야 정상으로 간주됩니다. 물론 접근 방식이다.하지만 나는 그냥 보 OP 의 논리로는 뭔가가 될 수 있는 단순으로 일부는 우아한 구문입니다. 에 대한 감사를+1
djv

@MaciejLos 오른쪽? 그래서 유지 null 검사에서 논리,그것은 분명 여기에 무슨 일이 일어나고 있는지에 동 Try...Catch 대체 및 변조하는 논리입니다. 이의 더 많은 것이 좋습니 차,그리고 어쩌면 너무 철학에 대한 OP:)
djv

하려고 했던 말을 안 쓰기 코드를 반환하는 알 수 없는 결과입니다. 때로 작성된 함수에 의해 나 null 을 반환합니다(아)나는 그것을 할 의도적으로...나도 동의할 수 없으로"비논리적 논리로";)
Maciej Los
1

이것은 과도에 대한 검사 Nothing. 아마도 당신이 생성 DataSet 고 채우 DataTable. 테이블이 없을 수 있습니다 행 반도 DataSetDataTable 은 아무것도 아니다.

만 사용하는 경우 하나의 테이블과 분배합니다.

Private dt As New DataTable

Private Sub GetData()
    Using cn As New SqlConnection(ConLocal),
            cmd As New SqlCommand("Select Top 10 * From Coffees", cn)
        cn.Open()
        Using reader = cmd.ExecuteReader
            dt.Load(reader)
        End Using
    End Using
End Sub

Private Function CheckTable() As Boolean
    If dt.Rows.Count > 0 Then
        Return True
    End If
    MessageBox.Show("Dataset has no results!", "Database Query Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Return False
End Function
2021-11-23 12:32:53

가 있을 수 있으므로 많은 예측할 수 없는 경우(예:테이블의 열지 않을 수도 있습 것으로 예상되,...),그래서 나는 확실하지 않다는 예를 들어 컬럼 x 에 존재 테이블에 있는 상황 이러한 모든 검사는 필요한(I guess!)
VSB

@VSB 나는 확실히 있습니다. 이 코드,스키마가 결과에 의해 결정된 세트 문제가 없기 때문으로 추가하거나 누락된 열이 있습니다. 내가 이해 DBA 의 만들 수 있는 주요 변경 내용입니다.
Mary
1

이 가능-정확한 대답하지만,일반적인 조언을...

가장 짧은 길을 잡으러에서 데이터를 읽는 동안 데이터를 얻을하는 코드로 Catch..마지막으로 차단합니다.

Dim bRetVal As Boolean = True
Try
   'your code to read data
Catch ex As Exception
    MessageBox.Show("Something went wrong..." & vbCrLf  & vbCrLf & ex.Message, "Error while reading data", MessageBoxButtons.OK, MessageBoxIcon.Error)
    bRetVal = False
Finally
  Return bRetVal
2021-11-23 19:07:07

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................