0

3つの列(アカウントタイトル、借方、貸方)があるDataGridViewで空のセル値を処理するにはどうすればよいですか?ユーザーが最初の列でアカウントを選択し、次に借方または貸方の列を入力して、すべての行に空のセルを残します。1つのエントリに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つの列があります。デビットとクレジットのアカウントが1つの列にあり、金額が適切な列にある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

組合をやれば問題は解決すると思います。次のクエリは、両方の結果セットを 1 つの結果セットに結合します。

e.entry_id、e.Date、d.acct_id、d.amount から e.entry_id=d.entry_id の d として Entry を選択します。

ユニオンオール

e.entry_id、e.Date、c.acct_id、c.amount を Entry から選択 e.entry_id=c.entry_id でクレジットを c として結合

于 2012-09-28T22:42:54.723 に答える
0

(a) データバインディングを使用しており、(b) これはユーザーがデータを入力するためのものであると推測しています。入力用の場合は、データバインディングをやめて、コードでグリッドからデータを読み込んで返します。

于 2012-09-28T23:25:17.233 に答える