Laden...

Fehler bei Update mit DataView

Erstellt von UHM vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.580 Views
U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren
Fehler bei Update mit DataView

Hallo,

ich versuche meine erste Anwendung mit ADO, weiß derzeit aber nicht weiter. Ich greife mit VS C# Express auf eine Access 2003 Database mit mehreren Tabellen zu, die ich über Dialogboxen editieren möchte. Dazu habe ich für einen Datensatz nun folgende Funktion erstellt:

        private void FlatEdit(int p)
        {
            using (Flat dlgFlat = new Flat())
            {
                String strSQL = "SELECT * FROM Wohnung";

                OleDbDataAdapter adapter = new OleDbDataAdapter();
                adapter.SelectCommand = new OleDbCommand(strSQL, con);
                OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter); 
                DataSet dsFlats = new DataSet();
                adapter.Fill(dsFlats, "Wohnung");
                DataTable dtFlats = (DataTable)dsFlats.Tables[0];
                DataView dvFlats = new DataView(dtFlats);

                dvFlats.RowFilter = "ObjektID = " + ObjectGetIndex().ToString();
                dlgFlat.Text = "Wohnung " + dvFlats[p][0].ToString();
                dlgFlat.FlatSize = Convert.ToDecimal(dvFlats[p]["Qm"]);
                dlgFlat.Kennung = dvFlats[p]["Kennung"].ToString();
                if (dlgFlat.ShowDialog() == DialogResult.OK)
                {
                    dvFlats[p].BeginEdit();
                    dvFlats[p]["Qm"] = dlgFlat.FlatSize;
                    dvFlats[p]["Kennung"] = dlgFlat.Kennung;
                    dvFlats[p].EndEdit();
                    
                    adapter.Update(dsFlats, "Wohnung");
                 }
            }
        }


Beim Update erhalte ich nun immer die OleDbException "Datentypen in Kriterienausdruck unverträglich."
Weiß da einer hier was da falsch ist und wie man das richtig macht?

Danke im Voraus
Udo

1.564 Beiträge seit 2007
vor 14 Jahren

Hallo UHM

Willkommen bei myCSharp.de!

welche Datentypen haben denn die Spalten "Qm" und "Kennung" in der Datenbank? Deinem Code nach zu urteilen Decimal und Text, oder?

Versuche mal je nur eines der Felder zu ändern und dann das Update durchzuführen, so findest du raus ob es mit einer speziellen Spalte Probleme gibt.

Wenn das nicht hilft vielleicht mal den Stacktrace.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren

Hallo Florian,

Mit den Datentypen liegst Du richtig: Decimal 5/2 bzw. Text(20).
Das mit den einzelnen Feldern habe ich schon probiert, es tritt bei beiden auf. Nur wenn ich keines der beiden Felder ändere, dann tritt kein Fehler auf 8)

Ausnahmedetails:
System.Data.OleDb.OleDbException wurde nicht behandelt.
Message="Datentypen in Kriterienausdruck unverträglich."
Source="Microsoft JET Database Engine"
ErrorCode=-2147217913
StackTrace:
bei System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
bei System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
bei System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
bei System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
bei System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
bei UHM_Hausverwaltung.UHMHausverwaltung.FlatEdit(Int32 p) in C:\Users\massl\Documents\Visual Studio 2008\Projects\UHM Hausverwaltung\UHM Hausverwaltung\Hausverwaltung.cs:Zeile 573.
bei UHM_Hausverwaltung.UHMHausverwaltung.tbFlat_DoubleClick(Object sender, EventArgs e) in C:\Users\massl\Documents\Visual Studio 2008\Projects\UHM Hausverwaltung\UHM Hausverwaltung\Hausverwaltung.cs:Zeile 542.
bei System.Windows.Forms.Control.OnDoubleClick(EventArgs e)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.Label.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.Run(Form mainForm)
bei UHM_Hausverwaltung.Program.Main() in C:\Users\massl\Documents\Visual Studio 2008\Projects\UHM Hausverwaltung\UHM Hausverwaltung\Program.cs:Zeile 18.
bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()
InnerException:

Mir hilft der Stacktrace aber auch nicht weiter.

Grüße auch
Udo

J
3.331 Beiträge seit 2006
vor 14 Jahren

Access und decimal führen zu Problemen, siehe die allerletzte Bemerkung unter
[Artikelserie] Parameter von SQL Befehlen

Gruß Jürgen

U
UHM Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren

Super, das war's anscheinend. 👍 Danke!

Udo