J'apprends à écrire un web service. Je communique avec une base de données Access. Je récupère les données de la base de données que je mets dans un dataset, ensuite j'ajoute un enregistrement au dataset.
Et enfin j'essaie de faire la mise à jour (HRSWS.UpdateCustomers(HRSDS)) mais j'obtiens cette erreur:
Message "System.Web.Services.Protocols.SoapException: Le serveur n'a pas pu traiter la demande.
---> System.Data.OleDb.OleDbException: L'opération doit utiliser une requête qui peut être mise à jour.
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
at VT3_HRSWebServices.HRSService.UpdateCustomers(DataSet ds) in c:\inetpub\wwwroot\VT3_HRSWebServices\HRSService.asmx.vb:line 67
--- Fin de la trace de la pile d'exception interne ---" String
J'ai besoin d'aide, je ne sais pas comment résoudre ce problème.
Merci
Billy
Voici le code:
-----------------------
-----------------------
---> Coté Web service
-----------------------
<WebMethod()> Public Function GetCustomers() As DataSet
'Modify this Connection string to use your SQL Server and log on.
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Employee.mdb")
Dim daCust As New OleDbDataAdapter("Select * From EMPLOYEE_TABLE", con)
Dim ds As New DataSet
daCust.Fill(ds, "Cust")
Return ds
End Function
<WebMethod()> Public Function UpdateCustomers(ByVal ds As DataSet) As DataSet
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Employee.mdb")
Dim daCust As New OleDbDataAdapter("Select * From EMPLOYEE_TABLE", con)
Dim cbCust As New OleDbCommandBuilder(daCust)
daCust.Update(ds, "Cust")
Return ds
End Function
-----------------------
---> Coté Pocket PC
-----------------------
Private Sub BtnServerToPocket_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnServerToPocket.Click
Dim LRowCount As Integer
Try
'*** Observation ***'
HRSDS = HRSWS.GetCustomers
If Not (HRSDS Is Nothing) Then
MsgBox("Chargement réussi " + HRSDS.Tables(0).TableName)
Else
MsgBox("Chargement échoué ")
End If
Catch ex As Exception ' Catch the error.
MsgBox(ex.Message.ToString) ' Show friendly error message.
End Try
End Sub
Private Sub BtnPocketToServer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPocketToServer.Click
Dim LNewRow As DataRow = HRSDS.Tables("Cust").NewRow
Dim LUpdatedRows As Integer
Try
With LNewRow
.Item("EmployeeNumber") = 99
.Item("Name") = "99"
.Item("Address") = "99"
End With
HRSDS.Tables("Cust").Rows.Add(LNewRow)
'Mise à jour sur le serveur
HRSWS.UpdateCustomers(HRSDS)
qaund tu vois la phrase doit utiliser un requete qui peut etre mit a jour,
c'est de tu n'a pas acces en droit ecriture sur da base access.
je m'explique l'utilisateur qui est utiliser lors de l'execution de ton rpojet na pas les droit en ecriture sur la base de donnée il faut donc que tu autoriser tout le monde en lecture ecriture sur cette base de données.
__________________________ Tutorial DOTNET
C'est exact, voici les instructions à suivre pour résoudre ce problème:
Open the file explorer
Tools menu
Options menu
Click the [View] tab
Uncheck "Use simple file sharing"
Click OK
Find the folder in which your MDB file is kept
Right-click the folder
Select "Sharing and security"
Click the [Security] tab
Click the Add button
Click the Advanced button
Click the Find Now button
Select the ASPNET user and click OK
In the checkboxes at the bottom of the form, give this user Full Control