2

あなたのほとんどの助けを借りて、私はこの2つを作りましたQUERY. 写真を投稿したので、表示しgreen squaresたい空の値とred squares表示したくない値があることがわかります。変数vyberradekは、DB にある「サブキー」の値を挿入しますがINT、それを渡しますstring

簡単に説明します。すべてまたは一部を表示できるようになりました。正しいレコードを表示する方法を教えてください。

これqueryは最初にこれを行います:

ここに画像の説明を入力

string sQuery = string.Format("SELECT zajsluz.akce,zajsluz.text,klisluz.pocet,klisluz.subkey,zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON zajsluz.ID=klisluz.IDzajsluz WHERE zajsluz.akce= '{0}'  GROUP BY klisluz.subkey,zajsluz.akce,zajsluz.text,klisluz.pocet,zajsluz.ID", sZakce);

2番目の機能は次のqueryとおりです。 ここに画像の説明を入力

 string sQuery = string.Format("SELECT zajsluz.akce,zajsluz.text,klisluz.pocet,klisluz.subkey,zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON zajsluz.ID=klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and klisluz.subkey ='" + vyberradek + "' GROUP BY klisluz.subkey,zajsluz.akce,zajsluz.text,klisluz.pocet,zajsluz.ID", sZakce);

ご覧のとおり、空のものも表示したいと思います。ここにあるチェックボックスをチェックするコードも必要になると思います:

 for (int i = 0; i < dtg_ksluzby.Rows.Count; i++)
            {
                var row = dtg_ksluzby.Rows[i];
                int id = (int)row.Cells["ID"].Value;

                using (var novyprikaz3 = new SqlCommand("SELECT * from klisluz WHERE subkey='" + vyberradek + "'AND IDzajsluz=" + id, spojeni))
                {

                    spojeni.Open();
                    SqlDataReader precti3 = novyprikaz3.ExecuteReader();
                    if (precti3.HasRows)
                    {
                        row.Cells[5].Value = true;
                    }
                    spojeni.Close();
                }
            }

queryチェックされていない値(テーブルklisluzにはありません)とチェックされた値を選択する方法を教えてください。

誰も返信がないので、簡単な例を 1 つ挙げましょう。クライアントを作成するときに、10 個のチェックボックスから例 3 をチェックします。したがって、3 つの行 (およびテーブル klisluz に追加する行) が選択されます。そして、私はこれらの2つを持っていますqueriesFirst query他のクライアントからチェックされたチェックボックスを表示しますが、このクライアントのチェックされていないチェックボックスも表示します。データベースにあるものをすべて表示するだけなので、他のクライアントのチェックされたものを含む行が表示されます(ただし、これと他のクライアントと同じものだけで、重複を作成しません)。2 番目は、このクライアントのみがチェックされていることを示していますが、彼が選択していないものはありません。したがって、このクライアントの編集を行うとき、彼がチェックしたものと残りの7つを表示したいと思います(彼がチェックしなかった7つの可能性があるので、それらをチェックできます)。これで、チェックしたもののみ (チェックされていないものを除く)、または他のクライアントのチェックを含むすべて (このクライアントでも同じ) を表示できます。私の弱い英語で申し訳ありません。

PSチェックとは、チェックcheckbox(行の選択)を意味します。基本的には、クライアントにサービスを追加するプログラムです。

興味を持っていただき、また読んでいただきありがとうございます。私はこの問題で2日間立ち往生しています:/

kwwallpe の画像: 「Nic」はどの衣装でも選択されていないため、表示されていることがわかります。

私の質問をより明確にするために、これらの列のいくつかを別のテーブルから取得します(SQLクエリでわかるように)。

kwwallpe のコードは次のようになります。

 string sQuery = string.Format("SELECT zajsluz.akce,zajsluz.text,klisluz.pocet,klisluz.subkey,zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON zajsluz.ID=klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and ISNULL(klisluz.subkey, '" + vyberradek + "') = '" + vyberradek + "' GROUP BY klisluz.subkey,zajsluz.akce,zajsluz.text,klisluz.pocet,zajsluz.ID", sZakce);

このコードは、それらの 2 に非常に近いと思います。テーブル klisluz にはないので、帽子 "Nic" が表示されていることがわかります。

ここに画像の説明を入力

4

1 に答える 1

2

あなたが求めていることを私が理解している場合、これは、klisluz にエントリのない行を取得するのを妨げている部分です:

WHERE zajsluz.akce= '{0}' and klisluz.subkey ='" + vyberradek + "'

klisluz に存在しない行の場合、サブキーは NULL になり、その WHERE 句とは一致しません。これらの行も取得するには、現在の WHERE 句を次のように置き換えることができます。

WHERE zajsluz.akce= '{0}' and ISNULL(klisluz.subkey, '" + vyberradek + "') ='" + vyberradek + "'

コードの完全な行は次のとおりです。

string sQuery = string.Format("SELECT zajsluz.akce,zajsluz.text,klisluz.pocet,klisluz.subkey,zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON zajsluz.ID=klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and ISNULL(klisluz.subkey, '" + vyberradek + "') = '" + vyberradek + "' GROUP BY klisluz.subkey,zajsluz.akce,zajsluz.text,klisluz.pocet,zajsluz.ID", sZakce);

チェックボックスをオンにするかどうかを決定するには:

if (precti3.HasRows)
{
    precti3.Read();
    if (precti3.Item("subkey") != Null)
    {
        row.Cells[5].Value = true;
    }
    else
    {
        row.Cells[5].Value = false;
    }
}

それがC#でのやり方だと思います私はVB.NETで作業しており、これにはオンラインコンバーターを使用しています。

于 2013-07-19T11:56:33.960 に答える