Salutations!
Mon premier post pour un souci dont je ne trouve pas la solution. J'ai ce problème sur plusieurs Form de mon application (VB.net) donc je suppose un problème d'utilisation/manipulation de mon fichier Xml.
Je vais baser cette question sur 1 Form, je devrais être en mesure d'appliquer vos solutions aux autres Forms!
Donc voila, la première fois que je clique sur le bouton OK, tout se passe bien (ou presque, car ma base de donnée ne se met pas à jour...). Par contre, la deuxième fois j'obtiens le message:
The process cannot access the file 'c:\fichier.xml' because it is being used by another process
Le code maintenant:
Je vous joint également le code des fonction access et acces_update:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click Dim strquery As String Dim element As XmlNodeList Dim XmlDoc As XmlDocument = New XmlDocument() Dim noeud, noeudEnf As XmlNode Dim xmlFile As XmlReader Dim AgId As String = tx_Login.Text.ToString Dim ds As New DataSet Dim i As Integer = 0 Dim nPassword As String = tx_pwd.ToString & My.Settings.Salt Dim ePassword As String = makeMD5Hash(nPassword) Dim test As String Try If System.IO.Directory.Exists("c:\dossier") = False Then System.IO.Directory.CreateDirectory("c:\dossier") End If If System.IO.File.Exists("c:\dossier\fichier.xml") = True Then System.IO.File.Delete("c:\dossier\fichier.xml") End If strquery = "UPDATE tb_Agent SET tb_agPwd = '" & ePassword & "' WHERE (tb_agId)=" & AgId test = "SELECT * FROM tb_Agent WHERE tb_agId=" & AgId access_update(strquery) access(test, "Test").WriteXml("c:\dossier\fichier.xml") XmlDoc.Load("c:\dossier\fichier.xml") element = XmlDoc.DocumentElement.GetElementsByTagName("Test") xmlFile = XmlReader.Create("c:\dossier\test1.xml", New XmlReaderSettings()) ds.ReadXml(xmlFile) While i < element.Count For Each noeud In element For Each noeudEnf In noeud.ChildNodes If noeudEnf.Name = "tb_agPwd" Then MsgBox(noeudEnf.Value) End If Next i += 1 Next End While Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
J'obtiens donc l'erreur sur le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Imports System.Data.OleDb Module bdaccess Dim MyConnection As New System.Data.OleDb.OleDbConnection() Public Sub connection() Try MyConnection.ConnectionString = My.Settings.WFMT_dbConnectionString MyConnection.Open() Catch ex As Exception MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message) End Try End Sub Public Sub deconnection() Try MyConnection.Close() Catch ex As Exception MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message) End Try End Sub Public Function access(ByVal requetesql As String, ByVal argquery As String) As DataSet Dim MyAdapter As OleDbDataAdapter = New OleDbDataAdapter() Dim MyDataSet As DataSet = New DataSet("MyData") Dim MyCommand As OleDbCommand Try connection() MyCommand = New OleDbCommand(requetesql, MyConnection) MyAdapter.SelectCommand = MyCommand MyDataSet.Clear() MyAdapter.Fill(MyDataSet, argquery) deconnection() Catch ex As Exception MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message) End Try Return MyDataSet End Function Public Function access_update(ByVal requetesql As String) As DataSet Dim MyAdapter As OleDbDataAdapter = New OleDbDataAdapter() Dim MyDataSet As DataSet = New DataSet("MyData") Dim MyCommand As OleDbCommand Try MyCommand = New OleDbCommand(requetesql, MyConnection) connection() MyAdapter.UpdateCommand = MyCommand deconnection() Catch ex As Exception MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message) End Try Return MyDataSet End Function End Module
Voila! Je suis preneur de tous conseils/remarques/troll(!) dont vous pourriez me faire part!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 If System.IO.File.Exists("c:\dossier\fichier.xml") = True Then System.IO.File.Delete("c:\dossier\fichier.xml") End If
Merci d'avance!
Louis
Partager