Hallo liebe C# Gemeinde,
ich bin neu auf dem Gebiet C# und möchte ein Projekt für ein InfoPath Formular entwickeln. Im Moment probiere ich mich ein wenig an Datenverbindungen (für den Anfang mit Access) und hab bei einer Recherche folgenden Link gefunden:
Abrufen von Microsoft Access-AutoWert-Werten:
http://msdn.microsoft.com/de-de/library/ks9f57t0%28v=vs.80%29.aspx#Y1430
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: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96:
| using Microsoft.Office.InfoPath; using System; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; using mshtml; using System.Data; using System.Data.OleDb;
namespace Bestellungen { public partial class FormCode { public void InternalStartup() { ((ButtonEvent)EventManager.ControlEvents["CTRL31_5"]).Clicked += new ClickedEventHandler(CTRL31_5_Clicked); }
public void CTRL31_5_Clicked(object sender, ClickedEventArgs e) { write_database(); }
public void write_database() { OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}\\Bestelldaten.accdb"); OleDbDataAdapter adapter = new OleDbDataAdapter( "SELECT CategoryID, CategoryName FROM Categories ORDER BY CategoryID", connection);
adapter.InsertCommand = new OleDbCommand( "INSERT INTO Categories (CategoryName) Values(?)", connection); adapter.InsertCommand.CommandType = CommandType.Text; adapter.InsertCommand.Parameters.Add("@CategoryName", OleDbType.Char, 15, "CategoryName");
connection.Open(); DataSet categories = new DataSet(); adapter.Fill(categories, "Categories");
DataRow newRow = categories.Tables["Categories"].NewRow(); newRow["CategoryName"] = "New Category"; categories.Tables["Categories"].Rows.Add(newRow);
adapter.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated);
adapter.Update(categories, "Categories");
connection.Close(); } protected static void OnRowUpdated( object sender, OleDbRowUpdatedEventArgs args) { int newID = 0; OleDbCommand idCMD = new OleDbCommand( "SELECT @@IDENTITY", connection);
if (args.StatementType == StatementType.Insert) { newID = (int)idCMD.ExecuteScalar(); MessageBox.Show(newID.ToString()); args.Row["CategoryID"] = newID; }
} } } |
Leider bekomme ich es nicht hin, die "connection" Variable an die Funktion "OnRowUpdated" zu übergeben.
Bisher habe ich es wie folgt versucht:
Funktionsdeklaration:
C#-Quelltext
1:
| public static void OnRowUpdated(OleDbConnection connection, object sender, OleDbRowUpdatedEventArgs args) |
Funktionsaufruf:
C#-Quelltext
1: 2:
| adapter.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated(connection)); |
Dazu bekomme ich aber folgende Fehlermeldung:
Quelltext
1:
| Fehler 1 Keine Überladung für die OnRowUpdated-Methode nimmt 1 Argumente an. |
Wahrscheinlich ist es ganz einfach, aber so als Neuling kommt man auf die einfachsten Dinge manchmal nicht.

Ich hoffe einer von Euch kann mir helfen.
Viele Grüße
Hannes