I. Introduction
Avec cette exemple trivial, mon intention est de mettre l'accent sur les possibilités offertes par la procédure xp_cmdshell (commandes DOS).
En préalable à l'exécution de l'exemple, il vous faudra activer la commande shell dans la surface d'exposition (cf. fichier joint). Et, naturellement, il faut que le serveur SQL ait un droit d'accès pour l'emplacement spécifié.
II. Caractères diacritiques
A. Caractéres réservés
Les caractères réservés ! ^ & % < > >> " | doivent être précédés par le caractère ^ pour ne pas être assimilés à une commande. La fonction SQL permet de gérer ceux-ci en les préfixant.
B. Caractères de retour à la ligne
Les caractères de retour à la ligne (#13 + #10) devront être supprimés ou remplacés par le caractère d'espacement. La fonction SQL assure également cette tâche.
C. Caractères accentués
Du fait de la redirection, les caractères accentués seront codés en MS-DOS (OEM). Il faudra donc les convertir sous WINDOWS (ANSI). Comme le montre la saisie d’écran, la méthode la plus simple consiste à utiliser le convertisseur du traitement de texte WORD. Si besoin, la macro en VBA ci-dessous vous permettra d'automatiser ce traitemenent sous WORD (voir variantes en commentaire).
Sub OemToAnsi(sFilePath As String, sFileName As String)
'Emplacement du fichier
ChangeFileOpenDirectory sFilePath
'Ouvrir le fichier en OEM, l'enregistrer en ANSI et le fermer
Documents.Open FileName:=sFileName, Encoding:=850
With ActiveDocument
.SaveAs FileName:=sFileName, Encoding:=1252
.Close
End With
End Sub