2013-03-26 4 views
1

저는 데이터베이스와 C#이 새롭지 만 배우고 싶습니다. 죄송합니다. 고귀한 질문을해도 죄송하지만 어디에서든지 대답을 찾을 수는 없습니다. (SQL 데이터베이스는 많이 있지만 액세스 데이터베이스는 찾지 못했습니다.)보기에서 행 필터링

나는 근로자에게 간단한 프로그램을 만들고 싶습니다.

  • 이 회사의 이름이되며이 모든 정보는이 회사의 딜러에게 연락해야합니다. > 전, 보스, 팩스, 이메일 등) 나 '

딜러에 전화와 같은이 회사에있는 모든 연락처를 열 -

  • 아이디어는 사용자가 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(); 
    

    하지만 기록이 ..이 데이터베이스는 손이 잘되지 않습니다에서 방법이 더 접촉이 때문에 필터링 레코드의 몇 백분을 가져야한다 필터링 정말 큰 문제가 : 이미이 코드에 의해 내 gridview에 데이터를로드했습니다 나는 생각한다. 또한 textbox으로 데이터를 필터링하고 싶습니다.

    예 : 입력을 시작합니다. B (그녀의 이름에 B가있는 모든 회사 이름을 보여줍니다) 그런 다음 O (BO가있는 회사를 보여줍니다) + E (BOE) + I (BOEI) + N (BOEIN) 및 + G ... 실시간으로 필터링해야합니다 (버튼 "검색"없음).

    마찬가지로 나는 SQL 데이터 사용자를위한 많은 대답을 발견했다. 그러나 액세스 데이터 사용자를위한 모든 대답. 그리고 나는이 데이터에서 학교 프로젝트를 만들어야하기 때문에 접근하기에 더 좋다.

    나는 나의 필요에 충분히 분명하고 누군가 나를 도울 수있는 방법을 알기를 바랍니다.

    내 나쁜 영어에 대해 고맙고 미안합니다.

  • +0

    안녕하세요. 환영!. C# 및 SQL 서버에 대한 많은 예제를 본 경우 액세스 데이터베이스 중 하나를 사용하십시오. 둘 다 정확하게 동일 할 것입니다. 모든 SqlConnection, SqlCommand, SqlReader를 OleDbConnection, OleDbCommand, OleDbReader로 바꿉니다. –

    답변

    0

    이 코드가 해결했습니다. 은 (참고 : 메신저는, 그래서 아마 그것을 할 bether 방법이 시작 어쨌든 작동)

    `마니 미 슈라는 나를 위해 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; 
         }` 
    
    0

    바인딩 된 데이터 소스에 관계없이 바인딩 한 후 그리드의 데이터를 필터링 할 수 있습니다.

    이 시도 :

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

    결과를 필터링 할 버튼의 사용을 생략 할 것이다 위의 텍스트 상자의 textChange 이벤트에서 같은 일을!