Ik heb een access database met gegevens van wedstrijden welke ik benader vanuit een C#-programma. Het openen en tonen van de diverse tabellen gaat prima, het updaten echter geeft problemen. Als ik bijvoorbeeld de poule wil bewerken dan wordt deze als volgt geopend:
In de datagrid kunnen vervolgens diverse wijzigingen aangebracht worden, het eerste wat ik geprobeerd heb is:
Dit geeft "Syntax error in UPDATE statement".
Als ik de rowstate afvraag en de delete-, insert- en updatecommands samenstel dan krijg ik "Syntax error (missing operator) in query expression '@24sec Coach = @coach'.".
Moet ik per gewijzigde tabelregel de update aanroepen?
Iemand een idee wat ik verkeerd doe?
C#:
1
2
3
4
5
| dAdapterPoules = new OleDbDataAdapter("SELECT * FROM poule", connString); OleDbCommandBuilder cBuilderPoules = new OleDbCommandBuilder(dAdapterPoules); dTablePoules = new DataTable(); dAdapterPoules.Fill(dTablePoules); dataGridPoules.DataSource = dTablePoules; |
In de datagrid kunnen vervolgens diverse wijzigingen aangebracht worden, het eerste wat ik geprobeerd heb is:
C#:
1
| dAdapterPoules.Update(dTablePoules); |
Dit geeft "Syntax error in UPDATE statement".
Als ik de rowstate afvraag en de delete-, insert- en updatecommands samenstel dan krijg ik "Syntax error (missing operator) in query expression '@24sec Coach = @coach'.".
Moet ik per gewijzigde tabelregel de update aanroepen?
Iemand een idee wat ik verkeerd doe?
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| foreach (DataRow PouleRij in dTablePoules.Rows) { if (PouleRij.RowState.ToString() == "Added") { dAdapterPoules.InsertCommand = new OleDbCommand("INSERT INTO poule, tijdsduur, [scheids thuis], [scheids uit], bondscheids, tafel, scorer, [30 sec], Coach, Trainer " + "VALUES (@poule, @tijdsduur, @scheids1, @scheids2, @bondscheids, @tafel, @scorer, @24sec, @coach, @trainer"); dAdapterPoules.InsertCommand.Parameters.Add("@poule", OleDbType.Char, 50, PouleRij["poule"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@tijdsduur", OleDbType.Char, 50, PouleRij["tijdsduur"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@scheids1", OleDbType.Integer, 10, PouleRij["scheids thuis"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@scheids2", OleDbType.Integer, 10, PouleRij["scheids uit"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@bondscheids", OleDbType.Boolean, 1, PouleRij["bondscheids"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@tafel", OleDbType.Char, 50, PouleRij["tafel"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@scorer", OleDbType.Char, 50, PouleRij["scorer"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@24sec", OleDbType.Char, 50, PouleRij["30 sec"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@coach", OleDbType.Char, 50, PouleRij["Coach"].ToString()); dAdapterPoules.InsertCommand.Parameters.Add("@trainer", OleDbType.Char, 50, PouleRij["Trainer"].ToString()); } if (PouleRij.RowState.ToString() == "Deleted") { dAdapterPoules.DeleteCommand = new OleDbCommand("DELETE FROM poule WHERE poule = @poule"); //dAdapterPoules.DeleteCommand.Parameters.Add("@poule", OleDbType.Char, 50, PouleRij["poule"].ToString()); } if (PouleRij.RowState.ToString() == "Modified") { dAdapterPoules.UpdateCommand = new OleDbCommand("UPDATE poule SET tijdsduur = @tijdsduur, [scheids thuis] = @scheids1, " + "[scheids uit] = @scheids2, bondscheids = @bondscheids, tafel = @tafel, scorer = @scorer, [30 sec] = @24sec " + " Coach = @coach, Trainer = @trainer WHERE poule = @poule"); dAdapterPoules.UpdateCommand.Parameters.Add("@tijdsduur", OleDbType.Char, 50, PouleRij["tijdsduur"].ToString()); dAdapterPoules.UpdateCommand.Parameters.Add("@scheids1", OleDbType.Integer, 10, PouleRij["scheids thuis"].ToString()); dAdapterPoules.UpdateCommand.Parameters.Add("@scheids2", OleDbType.Integer, 10, PouleRij["scheids uit"].ToString()); dAdapterPoules.UpdateCommand.Parameters.Add("@bondscheids", OleDbType.Boolean, 1, PouleRij["bondscheids"].ToString()); dAdapterPoules.UpdateCommand.Parameters.Add("@tafel", OleDbType.Char, 50, PouleRij["tafel"].ToString()); dAdapterPoules.UpdateCommand.Parameters.Add("@scorer", OleDbType.Char, 50, PouleRij["scorer"].ToString()); dAdapterPoules.UpdateCommand.Parameters.Add("@24sec", OleDbType.Char, 50, PouleRij["30 sec"].ToString()); dAdapterPoules.UpdateCommand.Parameters.Add("@coach", OleDbType.Char, 50, PouleRij["Coach"].ToString()); dAdapterPoules.UpdateCommand.Parameters.Add("@trainer", OleDbType.Char, 50, PouleRij["Trainer"].ToString()); } } |
[ Voor 5% gewijzigd door een moderator op 04-03-2008 11:33 . Reden: Code tags toegevoegd... ]