2014-01-20 1 views
1

Access 데이터베이스를 사용하고 있는데 문제가 SQL 문에 있다고 생각합니다. 나는 두 개의 테이블이있는 관계형 데이터베이스,이 -Select 문 VB로 인한 Datagrid 복제

StaffDetails [columns(
StaffID, 
FirstName, 
LastName)] 

StaffTraining [columns(
StaffID, 
Month)]. 

내가 콤보 상자 (cbMonth)가와 그때 '1월'하고 싶은 사용자가 선택하면 선택된 몇 월에 의존 선택한 월 내에 ID가있는 직원의 이름과 성을 표시하는 DataGrid (DGTraining).

Dim SqlQuery As String = "SELECT [StaffDetails.StaffID], [StaffDetails.FirstName], [StaffDetails.LastName], [StaffTraining.StaffID] FROM [StaffDetails], [StaffTraining] WHERE StaffTraining.TrainingMonth='" & cbMonth.Text & "'" 
    Dim da As OleDbDataAdapter = New OleDbDataAdapter(SqlQuery, conn) 
    Dim ds As DataSet = New DataSet 
    da.Fill(ds, "Training") 
    Dim dt As DataTable = ds.Tables("Training") 

    With DGTraining 
     .AutoGenerateColumns = True 
     .DataSource = ds 
     .DataMember = "Training" 
    End With 
+0

당신은 join statement가 없으며 두개의 테이블을 조인 할뿐입니다. [StaffDetails], [StaffTraining]. 두 키 사이의 키는 무엇입니까? – Twelfth

답변

1

당신은 당신의 가입 누락 및 크로스 조인을 얻고있다 :이 분명한 설명이없는 경우 죄송합니다, 희망 내 코드는 아래에있는 내 문제가 분명이 있습니다. 두 가지 방법으로 주소 지정 :

이것이 더 일반적이며 읽기 쉽습니다. 당신은 읽고, 귀하의 where 절 (오래된 방법으로 열심히 추가하고 일반적으로 받아 들여지는 없습니다 :

...where [StaffDetails].staffID = [StaffTraining].staffID and ... 
+0

나는 INNER JOIN이이 사건에서 일할 것이라고 상상한다. 부드럽게 될 수 있습니다. – Fionnuala

+0

감사합니다. @ 헤이든 - 당신은 아마도 왼쪽 조인이 아닌 내부 조인을 원할 것입니다. 내부 조인은 매월 일치하는 행을 삭제할 것이므로 제안 할 것입니다. 편집 대답 – Twelfth

+0

아래 @Twelfth는 내 새로운 코드, 아직 작동하지 않는, 어떤 아이디어? Dim SqlQuery As String = "SELECT [StaffDetails.StaffID], [StaffDetails.FirstName], [StaffDetails.LastName], FROM [StaffDetails] 내부 조인 [StaffTraining] ON [StaffDetails] .StaffID = [StaffTraining] .StaffID WHERE [StaffDetails ] .StaffID = [StaffTraining] .StaffID AND [StaffTraining] .TrainingMonth = ' "& cbMonth.Text &"' " – Hayden

0

귀하의 마지막 코멘트는 다음과 같이 개정 필요 ...에 따라 또한

Dim SqlQuery As String = "SELECT [StaffDetails.StaffID], [StaffDetails.FirstName], 
[StaffDetails.LastName], FROM [StaffDetails] 
INNER JOIN [StaffTraining] ON [StaffDetails].StaffID = [StaffTraining].StaffID 
WHERE [StaffTraining].TrainingMonth='" & cbMonth.Text & "'" 

... 어떻게 cbMonth를 설정 했는가? cbMonth.SelectedValue 또는 cbMonth.SelectedText

+0

이 코드는 여전히 운이 없다 – Hayden

+0

나는 당신이 combibox를 사용하고 있음을 알았을 때 내 의견을 편집했습니다. – Mych

+0

어떤 오류가 있습니까? – Mych