1

私はデータベースとC#を初めて使用しますが、それを学びたいと思います。申し訳ありませんが、質問しても答えが見つかりませんでした(SQLデータベースでは多くの答えが見つかりましたが、アクセスデータベースでは見つかりませんでした)

労働者との接触を伴う簡単なプログラムを作りたい:

  • 会社の名前があり、その後、この会社のディーラーに連絡するためのすべての情報が必要になります。
  • アイデアは、ユーザーが会社を検索し、ボタンでgridview->ディーラーへの電話、上司、ファックス、電子メールなど、この会社に必要なすべての連絡先を開くことを許可することです)

私はすでにgridviewこのコードでデータをロードしています:

OleDbConnection connect = new OleDbConnection();
connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Documents\Programy\Baza Danych Kontakty\Dane.accdb";
connect.Open();

OleDbCommand command = new OleDbCommand();
command.Connection = connect;
command.CommandText = "SELECT * FROM Firma";

OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    dataGridView1.Rows.Add();
    dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0].Value = reader[2].ToString();
    dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1].Value = reader[0].ToString();
}
connect.Close();

しかし、レコードをフィルタリングするのは非常に大きな問題です。このデータベースには、数百分の1のレコードがあり、連絡先がはるかに多いため、手作業でフィルタリングすることはお勧めできません。textboxまた、 ..と入力してデータをフィルタリングしたいと思います。

例:入力を開始します:B(名前にBが含まれるすべての会社名が表示されます)次にO(BOが含まれる会社が表示されます)+ E(BOE)+ I(BOEI)+ N(BOEIN)および+G。 。リアルタイムでフィルタリングする必要があります(「検索」ボタンなし)。

私が言ったように、SQLデータユーザーには多くの答えが見つかりましたが、アクセスデータユーザーには答えがあります。このデータで学校のプロジェクトを作成する必要があるため、アクセスを維持する方がよいでしょう。

私は自分のニーズを十分に明確にし、誰かが私を助ける方法を知っていることを願っています。

どうもありがとう、そして私の悪い英語をお詫びします。

4

2 に答える 2

0

グリッドのバインド元のデータソースに関係なく、グリッドのバインド後にグリッドのデータをフィルタリングできます。

これを試して:

DataView dv = ((DataTable)dataGridView1.DataSource).DefaultView;
dv.RowFilter = "FromColumn like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = dv;
dataGridView1.DataBind();

テキストボックスのtextChangeイベントで上記のようなことを行うと、結果をフィルタリングするためのボタンの使用が省略されます。

于 2013-03-26T10:17:27.387 に答える
0

このコードで解決しました。マニッシュミシュラは良いアイデアを与えました:)

だから私のために働くoledbとアクセスデータベースを使ってフィルタリングする:(注:私は始めたばかりなので、おそらくそれを行うための別の方法があります、とにかくそれはうまくいきます)

`

DataView dv = new DataView();
        public Form1()
        {
            InitializeComponent();
        }

    private void Form1_Load(object sender, EventArgs e)
    {
        DataTable datatable = new DataTable();
        OleDbConnection connect = new OleDbConnection();
        connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Documents\Programy\Baza Danych Kontakty\Dane.accdb";
        connect.Open();

        OleDbCommand command = new OleDbCommand();
        command.Connection = connect;
        command.CommandText = "SELECT FirmaKod,FirmaNazwa FROM Firma";


        OleDbDataReader reader = command.ExecuteReader();
        datatable.Load(reader);

        dataGridView1.DataSource = dv = datatable.DefaultView;
        connect.Close();

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
        {
            dv.RowFilter = "FirmaNazwa like '%" + textBox1.Text + "%'";
            if (textBox1.Text == "") dv.RowFilter = string.Empty;
        }`
于 2013-03-27T08:16:55.160 に答える