|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
ReadXML after File CopyUser selects a XML File ("products.xml") to import newest Data. Data should replace Data in an existing Acess File which is connected via Dataadapter (daadaptFLR). Bevore the Existing Data are deleted with RunSQL("DELETE * From Tbl_Fl_Rundleitung"). Function the Works: If I copy the File from the directory of the Application.exe then it works fine. Funktion Bugy: If I select the same file from another directory, the UpdateTable(dalForm.daadaptFLR, dsNew.Tbl_Fl_Rundleitung) Function fails. With following Error: Please remove Index or Constrains to prevent doubled Values. My Dataset seems to be loaded when i give it to a datagrid. And i can see a red attention hint with the same Error in first Line of Datagrid. I'll be thankfull for any kind of Help. Greetz from Munich Private Sub btOFD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOFD.Click Dim ofd As New OpenFileDialog ofd.ShowDialog() Try File.Copy(ofd.FileName, Application.StartupPath() + "\products.xml", True) pnStatus.BackColor = System.Drawing.Color.Green Catch ex As Exception pnStatus.BackColor = System.Drawing.Color.Red End Try End Sub Private Sub checkGeneratedXML() Dim dsNew As New dsPreise Dim dsHolder As New dsPreise Dim fstream As FileStream Dim dalForm As New frmPreise RunSQL("DELETE * From Tbl_Fl_Rundleitung") RunSQL("DELETE * From Tbl_Flexibel") RunSQL("DELETE * From Tbl_Front_St_Mdl") RunSQL("DELETE * From Tbl_Klm_Block") RunSQL("DELETE * From Tbl_Zubehoer") 'DAten aus XML einlesen dsNew.Clear() dsNew.ReadXml(Application.StartupPath() + "\products.xml") 'XmlReadMode.DiffGram , XmlReadMode.ReadSchema dgLoadTEst.DataSource = dsNew UpdateTable(dalForm.daadaptFLR, dsNew.Tbl_Fl_Rundleitung) UpdateTable(dalForm.daadaptFlexibel, dsNew.Tbl_Flexibel) UpdateTable(dalForm.daadaptFrontsteckmodul, dsNew.Tbl_Front_St_Mdl) 'initSavedDetailsList() 'MsgBox("OK") 'Return dsNew 'End If End Sub Private Sub UpdateTable(ByVal daAdapt As Data.OleDb.OleDbDataAdapter, ByVal dt As DataTable) Dim ModifiedChildRecords As DataTable = dt For Each ro As DataRow In dt.Rows 'MsgBox(ro.RowState) Next Try If Not ModifiedChildRecords Is Nothing Then daAdapt.Update(ModifiedChildRecords) ModifiedChildRecords.Dispose() End If Catch ex As Exception ' Update error, resolve and try again MsgBox("update Tab" + ex.Message + dt.TableName) End Try End Sub Hans,
From where you got that RunSQL I would expect OleDBcommand.executenonquery As well is my idea the command to remove all rows "Delete Table", I am not so sure however from Jet (access) in that.. While this one will probably as well don't do very much well. ModifiedChildRecords.Dispose() Or have you created your own wrapper and than we will find it of course never. I don't understand this. Cor .. Show quoteHide quote "Hans Munich" <goo***@munixmember.de> schreef in bericht news:1146751133.923509.69200@g10g2000cwb.googlegroups.com... > Szenario: > > User selects a XML File ("products.xml") to import newest Data. > Data should replace Data in an existing Acess File which is connected > via Dataadapter (daadaptFLR). Bevore the Existing Data are deleted with > RunSQL("DELETE * From Tbl_Fl_Rundleitung"). > > Function the Works: > If I copy the File from the directory of the Application.exe then it > works fine. > > Funktion Bugy: > If I select the same file from another directory, the > UpdateTable(dalForm.daadaptFLR, dsNew.Tbl_Fl_Rundleitung) Function > fails. With following Error: Please remove Index or Constrains to > prevent doubled Values. My Dataset seems to be loaded when i give it to > a datagrid. And i can see a red attention hint with the same Error in > first Line of Datagrid. > > I'll be thankfull for any kind of Help. > > Greetz from Munich > > > > Private Sub btOFD_Click(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles btOFD.Click > Dim ofd As New OpenFileDialog > ofd.ShowDialog() > Try > File.Copy(ofd.FileName, Application.StartupPath() + > "\products.xml", True) > pnStatus.BackColor = System.Drawing.Color.Green > Catch ex As Exception > pnStatus.BackColor = System.Drawing.Color.Red > End Try > End Sub > > Private Sub checkGeneratedXML() > Dim dsNew As New dsPreise > Dim dsHolder As New dsPreise > Dim fstream As FileStream > Dim dalForm As New frmPreise > > RunSQL("DELETE * From Tbl_Fl_Rundleitung") > RunSQL("DELETE * From Tbl_Flexibel") > RunSQL("DELETE * From Tbl_Front_St_Mdl") > RunSQL("DELETE * From Tbl_Klm_Block") > RunSQL("DELETE * From Tbl_Zubehoer") > > 'DAten aus XML einlesen > dsNew.Clear() > dsNew.ReadXml(Application.StartupPath() + "\products.xml") > 'XmlReadMode.DiffGram , XmlReadMode.ReadSchema > > dgLoadTEst.DataSource = dsNew > > UpdateTable(dalForm.daadaptFLR, dsNew.Tbl_Fl_Rundleitung) > UpdateTable(dalForm.daadaptFlexibel, dsNew.Tbl_Flexibel) > UpdateTable(dalForm.daadaptFrontsteckmodul, > dsNew.Tbl_Front_St_Mdl) > > 'initSavedDetailsList() > > 'MsgBox("OK") > 'Return dsNew > 'End If > End Sub > > Private Sub UpdateTable(ByVal daAdapt As Data.OleDb.OleDbDataAdapter, > ByVal dt As DataTable) > Dim ModifiedChildRecords As DataTable = dt > For Each ro As DataRow In dt.Rows > 'MsgBox(ro.RowState) > Next > Try > If Not ModifiedChildRecords Is Nothing Then > daAdapt.Update(ModifiedChildRecords) > ModifiedChildRecords.Dispose() > End If > Catch ex As Exception > ' Update error, resolve and try again > MsgBox("update Tab" + ex.Message + dt.TableName) > End Try > > End Sub > What you are mssing is the following, and you are right.
But it isnt my Problem, i think. The Problem is that it works completly with a file located in the same physikal directory as the executing Application. If my importet .xml File first is copied from another directory it fails. Public Sub RunSQL(ByVal sql As String) 'SQL Befehl ausführen. Dim conn As New OleDbConnection(DBConnectionString) Dim adapter As New OleDbDataAdapter Try conn.Open() adapter.InsertCommand = New OleDbCommand(sql, conn) adapter.InsertCommand.ExecuteNonQuery() conn.Close() Catch ex As Exception MsgBox(sql + "---" + ex.Message) End Try End Sub Hans,
You write that you read it from the application folder, how you do that from another one? dsNew.ReadXml(Application.StartupPath() + "\products.xml") 'XmlReadMode.DiffGram , XmlReadMode.ReadSchema Cor "Hans Munich" <goo***@munixmember.de> schreef in bericht What you are mssing is the following, and you are right.news:1146949733.718015.302090@j33g2000cwa.googlegroups.com... But it isnt my Problem, i think. The Problem is that it works completly with a file located in the same physikal directory as the executing Application. If my importet .xml File first is copied from another directory it fails. Public Sub RunSQL(ByVal sql As String) 'SQL Befehl ausführen. Dim conn As New OleDbConnection(DBConnectionString) Dim adapter As New OleDbDataAdapter Try conn.Open() adapter.InsertCommand = New OleDbCommand(sql, conn) adapter.InsertCommand.ExecuteNonQuery() conn.Close() Catch ex As Exception MsgBox(sql + "---" + ex.Message) End Try End Sub With the File Copy Function...
Private Sub btOFD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOFD.Click Dim ofd As New OpenFileDialog ofd.ShowDialog() Try File.Copy(ofd.FileName, Application.StartupPath() + "\products.xml", True) pnStatus.BackColor = System.Drawing.Color.Green Catch ex As Exception pnStatus.BackColor = System.Drawing.Color.Red End Try End Sub Hans Hans,
Are you sure you are not trying with this to copy the file to the area where the enduser has no rights to do. I would just change the path where you are reading and not use that application startuppath. This is normally the programdirectory Bin of your application, it should be a closed area. Just my idea Cor Show quoteHide quote "Hans Munich" <goo***@munixmember.de> schreef in bericht news:1147010516.560300.13920@g10g2000cwb.googlegroups.com... > With the File Copy Function... > > Private Sub btOFD_Click(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles btOFD.Click > Dim ofd As New OpenFileDialog > ofd.ShowDialog() > Try > File.Copy(ofd.FileName, Application.StartupPath() + > "\products.xml", True) > pnStatus.BackColor = System.Drawing.Color.Green > Catch ex As Exception > pnStatus.BackColor = System.Drawing.Color.Red > End Try > End Sub > > Hans > |
|||||||||||||||||||||||