OVH Cloud OVH Cloud

Excel et conn AS400

1 réponse
Avatar
Esperanza
Bonjour Excel Experts !

Je dois exporter des données d'un fichier Excel a une base de données As400.
Alors que le fichier est en lecture/Ecriture et que le "User" a tous les
droits sur le fichier 400.

J'ai toujours le message d'erreur suivant :

"3251 Current Recordset does not support updating. This may be a limitation
of the provider, or the selected locktype"

Pourtant de Access je suis capable de me lier et d'écrire sans problème.

Merci de votre aide !!
Experanza




'====================================================
Voici le code :
Dim rsTables As Recordset
Dim strSelect, strPassWord400
Set conn = New ADODB.Connection
Dim nbrRecords, NoLigne, index As Integer


strPassWord400 = InputBox("Veullez entrez votre mot de passe 400")

conn.Open "Provider=IBMDA400;Password=" & strPassWord400 & ";User
ID=COCO;Data Source=tttt.cccc.qc.ca;Transport Product=Client
Access;SSL=DEFAULT"


Set rsTables = New ADODB.Recordset

On Error GoTo Exportation_ERR

rsTables.Open "COCO.FILE", conn, adOpenKeyset, adLockOptimistic,
adCmdTable

'==================================================================
'TEST D'ECRITURE DANS LE FICHIER 400
'=================================================================


For NoLigne = 2 To 10

rsTables.AddNew
rsTables!EMPNUM = ActiveSheet.Range("A" + CStr(NoLigne))
rsTables!LUN = ActiveSheet.Range("B" + CStr(NoLigne))
rsTables!MAR = ActiveSheet.Range("C" + CStr(NoLigne))
rsTables!MER = ActiveSheet.Range("D" + CStr(NoLigne))
rsTables.Update
Next

Exit Sub

Exportation_ERR:
MsgBox (Err.Number & " " & Err.Description)

End Sub

1 réponse

Avatar
Rv
Bonjour,

Quand on se lie à une table externe à partir d'Access on utilise
implicitement une connexion ODBC.
Dans le code donné en exemple la connexion ressemble (je ne me suis
jamais connecté sur de l'AS400) à une connexion OLEDB :

conn.Open "Provider=IBMDA400;Password=" & strPassWord400 & ";User
ID=COCO;Data Source=tttt.cccc.qc.ca;Transport Product=Client
Access;SSLÞFAULT"


Il faudrait donc utiliser une connexion ODBC à ce niveau soit pour
résoudre le problème, soit pour vérifier que le problème ne vient pas du
pilote OLEDB (mauvaise version, pb de paramétrage de la chaîne de connexion,
...).
Si vous avez testé avec Access vous devez sûrement avoir un DSN
configuré pour la connexion ODBC sur AS400. Vous pouvez vous en servir pour
étabir la connexion ODBC puis retester.
Ca devrait donner quelque chose comme:
conn.Open "DSN=monDSN;UID=COCO;PWD=" & strPassWord400



A+

Rv


"Esperanza" a écrit dans le message de
news:
Bonjour Excel Experts !

Je dois exporter des données d'un fichier Excel a une base de données
As400.

Alors que le fichier est en lecture/Ecriture et que le "User" a tous les
droits sur le fichier 400.

J'ai toujours le message d'erreur suivant :

"3251 Current Recordset does not support updating. This may be a
limitation

of the provider, or the selected locktype"

Pourtant de Access je suis capable de me lier et d'écrire sans problème.

Merci de votre aide !!
Experanza




'=================================================== > Voici le code :
Dim rsTables As Recordset
Dim strSelect, strPassWord400
Set conn = New ADODB.Connection
Dim nbrRecords, NoLigne, index As Integer


strPassWord400 = InputBox("Veullez entrez votre mot de passe 400")

conn.Open "Provider=IBMDA400;Password=" & strPassWord400 & ";User
ID=COCO;Data Source=tttt.cccc.qc.ca;Transport Product=Client
Access;SSLÞFAULT"


Set rsTables = New ADODB.Recordset

On Error GoTo Exportation_ERR

rsTables.Open "COCO.FILE", conn, adOpenKeyset, adLockOptimistic,
adCmdTable

'================================================================= > 'TEST D'ECRITURE DANS LE FICHIER 400
'================================================================ >

For NoLigne = 2 To 10

rsTables.AddNew
rsTables!EMPNUM = ActiveSheet.Range("A" + CStr(NoLigne))
rsTables!LUN = ActiveSheet.Range("B" + CStr(NoLigne))
rsTables!MAR = ActiveSheet.Range("C" + CStr(NoLigne))
rsTables!MER = ActiveSheet.Range("D" + CStr(NoLigne))
rsTables.Update
Next

Exit Sub

Exportation_ERR:
MsgBox (Err.Number & " " & Err.Description)

End Sub