2012-09-28 4 views
0

3 열 (계정 제목, 차변, 신용)이있는 DataGridView에서 빈 셀 값을 처리하는 방법, 사용자가 첫 번째 열을 선택하고 차변 또는 대변 열을 입력하거나, 따라서 모든 행에 빈 셀을 남겨 둡니다. 하나의 엔트리에 3 개의 테이블이 관련되어 있습니다.DataGridView에서 빈 셀 처리

기본적으로 나는 this처럼 보이길 원합니다. 내가 지금까지 한 것은이 세 테이블에 합쳐졌습니다.

SELECT Entry.entry_id, Entry.Date, Debit.acct_id, Debit.amount, 
Credit.acct_id, Credit.amount FROM Entry FULL OUTER JOIN Debit 
ON Entry.entry_id = Debit.entry_id FULL OUTER JOIN Credit 
ON Entry.entry_id = Credit.entry_id 

DataGridView에 6 개의 열이 있습니다. 나는 여전히 직불 카드와 신용 계정이 하나의 열에 있고 그 열의 양이 적절한 열 3 개만을 보여줄 수있는 쿼리를 생각하지 못했다. 그리고 만약에 Debit과 Credit 열의 빈 셀을 처리하는 방법이 있다면 내가 해낸 일은 유용하지만 유용성이 현명하지 못하다.

내가 이것을 수행 할 수있는 방법을 제안 할 수 있습니까?

** 계정 테이블

+0

내 대답은 이것을 언급하는 것을 잊어 버렸지 만, 내 경험에 의하면'DataGridView'는 변수에서 가져 오는 객체 유형에 대한 바인딩에 대해 다소 까다 롭습니다. 나는 당신이 일종의 SqlReader 또는 아마이 Data Query로부터 결과를 얻기 위해 DataTable을 사용하고 있다고 가정하고 있습니다. 문제는 그들이'Decimal' (일종의 돈이라면) 형식을 반환한다는 것입니다. 반면 데이터베이스는 사실 그것을'Nullable (Decimal)'로 저장한다. 의도와 일치하는 데이터 유형에 눈금을 바인딩하면 더 나은 결과를 볼 수 있습니다. – Origin

답변

0

나는 당신의 문제를 해결할 것이라고 생각합니다. 다음 쿼리는 두 결과 집합을 단일 결과 집합으로 결합합니다.

e.entry_id, d.acct_id, d.amount를 Entry에서 Entry

노조의 모든

선택 e.entry_id는 e.Date는 c.acct_id는, 입구에서 c.amount 전자는 e.entry_id = c.entry_id

0

내가 추론하고있어에서 C로 신용 참여로 (a) 데이터 바인딩을 사용하고 있으며, (b) 사용자가 데이터를 입력하기위한 것입니다. 이 입력의 경우이면 데이터 바인딩을 포기하고 코드의 표에서 채우기/다시 읽습니다.

0

DataGridView을 사용하는 경우 SQL 쿼리 결과를 직접 전달하는 대신 Object Oriented 방식을 사용하는 것이 좋습니다. 당신은 어쨌든 어떻게이 방법으로 업데이트를 다시 푸시 할 수 있습니까?

다음은 예입니다. 나는 그것이 VB.Net에 있음을 안다.하지만 여전히 의미가 있어야한다.

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim entries As List(Of AccountEntry) = RetrieveEntries() 

     DataGridView1.DataSource = entries 

    End Sub 

    Public Class AccountEntry 
     Public Property Id As Integer 
     Public Property Debit As Nullable(Of Decimal) 
     Public Property Credit As Nullable(Of Decimal) 
     Public Property EntryDate As DateTime 
    End Class 

    Public Function RetrieveEntries() As List(Of AccountEntry) 
     Dim returnEntries As List(Of AccountEntry) = Nothing 
     ' Do your database stuff here to retrieve a list of AccountEntry' 
     Return returnEntries 
    End Function 

End Class 
관련 문제