Hey mensen, ik zit met een probleempje.
De titel zegt het al, de laatste ID.
Ik werk met een Datagrid om waardes toe te voegen/verwijderen/wijzigen.
Echter als ik een waarde toevoeg en ik de laatste ID wil selecteren krjig ik hier continu de error "Specified cast is not valid."
Ik gebruik de volgende reeksen van codes
Kijken of er geupdate moet worden of geinsert. Dit werkt.
De insert, deze werkt ook nog.
Zoals je ziet gaat deze naar een andere functie, GetLastInsertedID();
Deze selecteert de laatste ID op de volgende manier zoals ik al op het internet gevonden heb en uit eedere scripts.
De code van de select voor de laatste ID
Bij de return geeft hij de error van "Specified cast is not valid"
Ik heb ook al geprobeert de datagrid te refreshen zoals ik bij een andere functie gebruik maar dit wil echter ook niet werken.
Heeft iemand een idee waar het aan kan liggen ?
De titel zegt het al, de laatste ID.
Ik werk met een Datagrid om waardes toe te voegen/verwijderen/wijzigen.
Echter als ik een waarde toevoeg en ik de laatste ID wil selecteren krjig ik hier continu de error "Specified cast is not valid."
Ik gebruik de volgende reeksen van codes
Kijken of er geupdate moet worden of geinsert. Dit werkt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| private void dataGridView1_RowValidated(object sender, DataGridViewCellEventArgs e) { if (_allow == true) { if (dataGridView1.Rows[e.RowIndex].IsNewRow == true) return; if (dataGridView1.Rows[e.RowIndex].Cells[1].Value == null || dataGridView1.Rows[e.RowIndex].Cells[2].Value == null || dataGridView1.Rows[e.RowIndex].Cells[3].Value == null || dataGridView1.Rows[e.RowIndex].Cells[4].Value == null) return; DataGridViewRow row = dataGridView1.Rows[e.RowIndex]; if (row.Cells[0].Value == null || Convert.ToInt32(row.Cells[0].Value) == 0) { insert(row); } else { update(row); } } } |
De insert, deze werkt ook nog.
code:
1
2
3
4
5
6
7
8
9
| private void insert(DataGridViewRow e) { string qryinsert = "INSERT INTO infra_software (soft_name, soft_manufacturer, soft_date, soft_license) VALUES ('" + e.Cells[1].Value.ToString() + "','" + e.Cells[2].Value.ToString() + "','" + e.Cells[3].Value.ToString() + "','" + e.Cells[4].Value.ToString() + "')"; SqlCommand execinsert = new SqlCommand(qryinsert); execinsert.Connection = Classes.connector.mycon; execinsert.ExecuteNonQuery(); e.Cells[0].Value = GetLastInsertedID(); } |
Zoals je ziet gaat deze naar een andere functie, GetLastInsertedID();
Deze selecteert de laatste ID op de volgende manier zoals ik al op het internet gevonden heb en uit eedere scripts.
De code van de select voor de laatste ID
code:
1
2
3
4
5
6
7
8
9
| private int GetLastInsertedID() { string qryLastValue = "select @@IDENTITY as ID"; SqlCommand myOdbcCommand = new SqlCommand(qryLastValue); myOdbcCommand.Connection = Classes.connector.mycon; SqlDataReader aReader = myOdbcCommand.ExecuteReader(); aReader.Read(); return (int)aReader.GetValue(0); } |
Bij de return geeft hij de error van "Specified cast is not valid"
Ik heb ook al geprobeert de datagrid te refreshen zoals ik bij een andere functie gebruik maar dit wil echter ook niet werken.
Heeft iemand een idee waar het aan kan liggen ?