Сортировать DataAdapter по алфавиту - VB.Net - PullRequest
0 голосов
/ 30 ноября 2010

Это должно быть довольно просто.Я создаю набор данных, который будет содержать поле описания, по которому я хотел бы отсортировать.Причина, по которой я хочу отсортировать адаптер данных, а не в своем SQL, состоит в том, что я уже упорядочиваю по результатам, имеющим определенное значение.

Мой SQL выглядит следующим образом:

SELECT pif_desc, pif_fund, psf_end, (CASE WHEN SUM(pmi_units) IS Null THEN 0 ELSE SUM(pmi_units) END) As fundunits 
    FROM tbl_mem INNER JOIN tbl_sfunds
    ON pm_scheme = psf_scheme
    INNER JOIN tbl_invfun
    ON tbl_fund = tbl_fund
    LEFT JOIN pe_minv
    ON pmi_fund = pif_fund AND pm_member = pmi_member
    WHERE pm_member = @pm_member 
    GROUP BY pif_desc, pif_fund, psf_end
    ORDER BY fundunits DESC

МойVB выглядит следующим образом:

Dim cmd As New SqlCommand("getMembersFundsDCGENST", conn)
        cmd.CommandType = CommandType.StoredProcedure

        Dim p_pm_member As New SqlParameter("@pm_member", SqlDbType.Int)
        p_pm_member.Value = pm_member
        cmd.Parameters.Add(p_pm_member)

        Dim p_period_closing_date As New SqlParameter("@closingdate", SqlDbType.DateTime)
        p_period_closing_date.Value = period_closing_date
        cmd.Parameters.Add(p_closing_date)

        Dim da As New SqlDataAdapter(cmd)
        da.Fill(ds)

Я хочу отсортировать datarows по ds.tables (0) по pif_desc, но все же строки со средствами> 0 указаны первыми.

Я такжеоткрыть для других предложений о том, как я могу добиться правильного заказа.

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Является ли выход, который вы ищете, более похожим на этот?

pif_desc    fundunits
ABCDEF      6
CBCDEG      2
DEFGHI      4
ADFKHG      0
BFJSKL      0
XDFDKF      0

Если это так, попробуйте этот SQL-запрос:

SELECT  pif_desc,
        pif_fund,
        psf_end,
        (CASE WHEN fundunits IS Null THEN 0
        ELSE fundunits END) As fundunits,
        (CASE WHEN fundunits IS Null THEN 0
        ELSE 1 END) As pif_order
FROM    (
            SELECT  pif_desc,
                    pif_fund,
                    psf_end,
                    SUM(pmi_units) As fundunits
            FROM    tbl_mem
            INNER   JOIN tbl_sfunds
                    ON pm_scheme = psf_scheme
            INNER   JOIN tbl_invfun
                    ON tbl_fund = tbl_fund
            LEFT    JOIN pe_minv
                    ON pmi_fund = pif_fund AND pm_member = pmi_member
            WHERE   pm_member = @pm_member 
            GROUP   BY pif_desc, pif_fund, psf_end
        ) pifs
ORDER   BY pif_order,pif_desc
1 голос
/ 30 ноября 2010

DataView следует использовать всякий раз, когда в коде применяется сортировка или фильтрация.Взгляни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...