Horst1945
Cadet 4th Year
- Registriert
- Okt. 2014
- Beiträge
- 106
Hallo,
Beim Lieferschein schreiben benutze ich zwei DataGridView.
Das dgvArtikel benutze ich, wenn ich über die ArtikeNr. den Artikel in der Datenbank speichre. Damit ich sehe, welcher Artikel gespeichert ist, wird er in dem dgvArtikel angezeigt. Wenn ich weitere Artikel eintragen möchte und ich die Artikelnummer nicht weiß, dann kann über die TextBox bis zu fünf Buchstaben z.B. Kanü eingeben:
Sollte mehrere Artikel mit kanü in der Tabelle Artikel vorhanden sein, dann sollten mir die 10 Artikel im dgvArtikel angezeigt werden, die ich dann über artnr über einen strSQL = "Select artnr, artbez, menge, vpeinh, gesmenge from Artikel where artnr =
'" + txtArtnr.Text + "'": verarbeiten kann.
Im Dataset stehen 86 Artikel:
Aber wenn ich beim ersten:
ankomme, dann erscheint diese Fehler Meldung:
Ein Ausnahmefehler des Typs "System.ArgumentOutOfRangeException" ist in mscorlib.dll aufgetreten.
Zusätzliche Informationen: Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Auflistung sein.
In VB 6.0 habe ich diese Prinzip genauso gehandhabt und da hat es geklappt!
Was mach ich bei Visual C# verkehrt?
Horst
Beim Lieferschein schreiben benutze ich zwei DataGridView.
Das dgvArtikel benutze ich, wenn ich über die ArtikeNr. den Artikel in der Datenbank speichre. Damit ich sehe, welcher Artikel gespeichert ist, wird er in dem dgvArtikel angezeigt. Wenn ich weitere Artikel eintragen möchte und ich die Artikelnummer nicht weiß, dann kann über die TextBox bis zu fünf Buchstaben z.B. Kanü eingeben:
Code:
private void artiekelSuchen(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
if (txtArtbez.TextLength >= 3 & txtArtbez.TextLength <= 6)
{
int i = 0;
con.Open();
var strSQL = "Select artnr, artbez from artikel where artbez LIKE @SEARCH";
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(strSQL, con);
adapter.SelectCommand.Parameters.AddWithValue("@SEARCH", "%" + txtArtbez.Text + "%");
adapter.Fill(ds);
counter = ds.Tables[0].Rows.Count;
if (counter >= 1)
{
//dgvArtikelSuch.Columns[6].DefaultCellStyle.Font = new Font(dgvArtikel.DefaultCellStyle.Font, FontStyle.Bold);
//dgvArtikelSuch.Columns[7].DefaultCellStyle.Font = new Font(dgvArtikel.DefaultCellStyle.Font, FontStyle.Bold);
while (i < counter)
{
int n = dgvArtikelSuch.Rows.Add();
dgvArtikelSuch.Rows[0].Cells[6].Value = txtArtbez.Text = ds.Tables[0].Rows[n]["ArtNr"].ToString();
dgvArtikelSuch.Rows[0].Cells[7].Value = txtArtbez.Text = ds.Tables[0].Rows[n]["Artbez"].ToString();
n++;
i++;
}
}
con.Close();
}
}
}
'" + txtArtnr.Text + "'": verarbeiten kann.
Im Dataset stehen 86 Artikel:
Aber wenn ich beim ersten:
Code:
dgvArtikelSuch.Rows[0].Cells[6].Value = txtArtbez.Text = ds.Tables[0].Rows[n]["ArtNr"].ToString();
ankomme, dann erscheint diese Fehler Meldung:
Ein Ausnahmefehler des Typs "System.ArgumentOutOfRangeException" ist in mscorlib.dll aufgetreten.
Zusätzliche Informationen: Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Auflistung sein.
In VB 6.0 habe ich diese Prinzip genauso gehandhabt und da hat es geklappt!
Was mach ich bei Visual C# verkehrt?
Horst