.NET Framework - dataTable update via dataAdapter

Asked By Samy_E
30-Jan-10 05:25 AM
Hallo,

ich versuch nun schon seit einiger Zeit mein Programm umzuschreiben. Die
Ursprungsversion importiert aus eine Excel Tabelle Daten und schreibt
Sie in 4 DataTables die alle einzeln in xml gespeichert werden. Der
Nachteil am Ursprungsprogramm: kein Multiuser Support.

Nun will ich das ganze mit eine Access Datenbankdatei realisieren.

Ich befuelle via Select * xx fuer jede Tabelle einen Dataadapter,
funktioniert einwandfrei. Auch Insert neuer Daten funktioniert einwandfrei.

Nun zu meinem Problem:

Aendere ich die Daten die via Databinding gebunden sind und versuche ich
diese dann per update mit der Access Datenbankdatei abzugleichen, werden
die Daten nicht abgeglichen.

Seit 3 Wochen versuch ich nun schon verschiedene varianten. Vielleicht
kann sich das mal wer ansehen, hab ich hier einen Denkfehler?

Ich bekomme keinen Fehler, keine Exception es wird einfach nichts
aktualisiert obwohl Datatable Lokal mit Access ungleich ist. Ein
Primaerschluessel Autoinkrement ist in der Access Datenbankdatei
vorhanden 995mainID - 970mainID - R67mainID / textKommission ist eindeutig

Dim strTable As String
Dim strSql As New System.Text.StringBuilder

Select Case intBlatt
Case 1
strTable = "datTable995"
Case 2
strTable = "datTable970"
Case 3
strTable = "datTableR67"
Case 4
strTable = "datTableF3"
GoTo endF3
Case Else
strTable = Nothing
GoTo endNormal
End Select

strSql.Append("UPDATE " & strTable & " SET ")
strSql.Append("textKommission=@textKommission,
intNetzplan=@intNetzplan, textBearbeiter=@textBearbeiter,
intMeter=@intMeter, ")
strSql.Append("dblSoll_T690=@dblSoll_T690,
dblIst_T690=@dblIst_T690, dblSoll_T760=@dblSoll_T760,
dblIst_T760=@dblIst_T760, ")
strSql.Append("textKommentar=@textKommentar, ")
strSql.Append("dateDtgTermin=@dateDtgTermin,
dateSapTermin=@dateSapTermin, dateAufgenommen=@dateAufgenommen, ")
strSql.Append("boolHardware=@boolHardware,
boolWirdgebaut=@boolWirdgebaut, boolVorbereitet=@boolVorbereitet, ")
strSql.Append("boolAufgebaut=@boolAufgebaut,
boolSoftware=@boolSoftware, boolAbgebaut=@boolAbgebaut, ")
strSql.Append("boolBilder=@boolBilder, boolF3=@boolF3,
boolDtg=@boolDtg, boolStorniert=@boolStorniert ")
strSql.Append("WHERE textKommission=@textKommission")

'Erstelle neuen Sql Command
sqlCommand = sqlConnection.CreateCommand
sqlCommand.CommandText = strSql.ToString

sqlCommand.Parameters.Clear()
sqlCommand.Parameters.AddWithValue("@intNetzplan",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@textBearbeiter",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@intMeter",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@textKommentar",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@dblSoll_T690",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@dblIst_T690",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@dblSoll_T760",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@dblIst_T760",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@dateDtgTermin",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@dateSapTermin",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@dateAufgenommen",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@boolHardware",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@boolWirdgebaut",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@boolVorbereitet",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@boolAufgebaut",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@boolSoftware",
DataRowVersion.Current)
sqlCommand.Parameters.AddWithValue("@boolAbgebaut",
DataRowVersion
(1)
Excel
(1)
StringBuilder
(1)
AddWithValue
(1)
DataAdapter
(1)
DataTable
(1)
DataRow
(1)
VB
(1)
  Armin Zingler replied to Samy_E
30-Jan-10 08:14 AM
Samy_E schrieb:

Auf den ersten Blick sehe ich nur, dass jeder Parameter
den Wert DataRowVersion.Current hat. Der zweite Parameter
muss aber doch der Wert sein, z.B.

sqlCommand.Parameters.AddWithValue("@intNetzplan", 4711)
sqlCommand.Parameters.AddWithValue("@textBearbeiter", "Ich bin's")



--
Armin
  Samy_E replied to Armin Zingler
30-Jan-10 10:24 AM
Danke fuer Deine Antwort,

Ich dachte dass der DataAdapter alle Aenderungen der lokalen DataTable
mit der der Datenbank abgleicht? Sind dann nicht DataRowVersion.Current
die aktuellen werte der lokalen DataTable enthalten? so ist in dem Buch
VB.Net Markt&Technik im Beispiel beschrieben? Deshalb ja auch

datAdapter995.Update(datTable995.GetChanges)

Oder liegt hier mein Denkfehler?
  Armin Zingler replied to Samy_E
30-Jan-10 11:12 AM
Samy_E schrieb:

Richtig


DataRowVersion.Current ist eine Konstante (mit Wert 512). Dort,
wo du eine DataRowVersion ?bergeben kannst, k?nntest du diese
Konstante ?bergeben. Beispiel:

DataRow.Item(ByVal columnIndex As Integer, ByVal version As System.Data.DataRowVersion)

Verwendung:

Dim wert = row(17, DataRowVersion.Current)




Mir ging es nur um deine Verwendung von AddWithValue. Der zweite
Parameter ist der Wert. Du tr?gst als Wert immer DataRowVersion.Current,
also 512, ein. Ich glaube nicht, dass in jedes Feld dieser Wert
geschrieben werden soll. Wenn du Dataadapter.Update aufrufst brauchst
du ?berhaupt keine Parameterwerte setzen denn das macht der DataAdapter
schon selbst. Den Rest habe ich nicht analysiert.


--
Armin
help
NET Framework Any way to make OleDb read an Excel file? With Visual Studio 2005 SP1 and DotNet Framework 2 SP1, Excel 2003 can read a file that was saved by Excel 2003, but the OleDb driver can't. Example: Excel row 2 maps to row 1 in OleDb, and Excel columns 1 to 24 (A to X) map to columns 0 to 23 in OleDb OK, columns 13 and 14 get corrupted to DbNull, etc. If I do Interop to Excel 2003 instead of using OleDb, it works. Counting these in Excel interop, row 2 columns 1 to 24 are entirely OK. Back to the OleDb problem anyone know how to get OleDb to work? OleDbConnection connection = new OleDbConnection( fileName + ";Extended Properties = 'Excel 8.0;HDR = NO'"); connection.Open(); DataTable schemaTable = connection.GetSchema("Tables"); DataRow[] schemaRows = schemaTable.Select
NET Framework Page Break in Excel from VB 2005 I am using VB 2005 and Excel 2007 and cannot figure out how to insert a page break before line 72. I exception error. Thanks in advance. I would recommend you use the "Record Macro" functionality of Excel and record a macro of you adding the pagebreak. Then you just have to modify Seth Rowe 'osheet.HPageBreaks.Add.Range("A72") . You need to specify the range using the excel application object. The following works fine (except for a late binding warning for using HPageBreaks) for me: Option Strict Off ' / / Of course you'll need to reference ' / / Microsoft Excel Object Library 12.0 for this to work Imports Microsoft.Office.Interop Excel Module Module1 Sub Main() Dim excel As New Application() Dim workbook As Workbook = excel.Workbooks.Add() workbook.Worksheets(1).HPageBreaks.Add(excel.Range("A5")) excel.Visible = True End Sub
NET Framework Cargar hoja de excel a SQL SERVER Éste es un mensaje de varias partes en formato MIME. - -- -- - = _NextPart_000_000A_01C8BA89.5860E490 Encoding: quoted-printable Hola compa = F1eros. . . = BFConocen alguna forma = F3ptima de cargar una hoja de excel con = much = EDsimos registros a SQL SERVER? L = F3gicamente haciendo esto desde .NET. Muchas gracias 3D0 CanvasTabStop = 3D"true" = 20 name = 3D"Compose message area"> cargar una hoja de = 20 excel con much = EDsimos registros a SQL SERVER?< / FONT> < / DIV> .NET.< / FONT> < / DIV> gracias!< / FONT> < / DIV la típica estructura de filas y columnas. Si es así, puedes utilizar el ISAM para Excel del motor Microsoft Jet, para abrir un libro de trabajo y ejecutar una consulta SQL Construimos la cadena de conexión Ole Db, ' indicando que vamos a utilizar el ISAM para Excel ' Dim connString As String = _ ' Creamos un nuevo objeto Connection ' Dim cnn As New OleDbConnection Close() cnn = Nothing End Try Te comento que si deseas exportar una hoja completa de Excel, el nombre de la hoja tiene que acabar en el signo $, y todo ello encerrado indicar el nombre del rango, sin el signo $. Para más información sobre el ISAM de Excel, consulta el siguiente artículo: Trabajar con ADO, DAO y Excel http: / / mvp-access.com / softjaen / articulos / excel / ado_dao_excel.htm Los ejemplos fueron escritos para Visual