0

如何处理 DataGridView 中的空单元格值,其中我有 3 列(帐户标题、借方、贷方),用户选择帐户的第一列,然后输入借方或贷方列,从而在每一行中留下一个空单元格. 我有一个条目涉及 3 个表。

create table Debit (debit_id, amount, **acct_id, entry_id);
create table Credit (credit_id, amount, **acct_id, entry_id);
create table Entry (entry_id, date);

基本上我希望它看起来像这样。到目前为止我所做的是加入了那 3 张桌子

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 列以及相应列中的金额,以及它如何处理借方和贷方列上的空单元格我所做的工作但在可用性方面并不好。

你能建议我这样做的方法吗?

** 账户表

4

3 回答 3

0

如果您使用的是DataGridView我建议您使用更面向对象的方法,而不是直接传递 SQL 查询的结果。无论如何,您如何使用这种方法将更新推回?

这是一个例子。我知道它在 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
于 2012-09-29T00:11:56.413 回答
0

我认为建立工会可以解决您的问题。以下查询会将两组结果合并到一个结果集中:

select e.entry_id, e.Date, d.acct_id, d.amount from Entry as e join Debit as d on e.entry_id=d.entry_id

联合所有

select e.entry_id, e.Date, c.acct_id, c.amount from Entry as e join Credit as c on e.entry_id=c.entry_id

于 2012-09-28T22:42:54.723 回答
0

我推断(a)您正在使用数据绑定,并且(b)这是供用户输入数据的。如果它用于输入,那么我将放弃数据绑定并在代码中从网格中填充/读取。

于 2012-09-28T23:25:17.233 回答