SQL avec Base Excel

cs_sebastien44 Messages postés 1 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 20 juillet 2005 - 20 juil. 2005 à 17:09
michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 - 23 juil. 2005 à 10:22
Bonjour,



J'utilise ADO pour lire un fichier Excel comme une base de données

à partir d'un VB contenu dans un autre fichier Excel (pas de progr exe VB)

Mon fichier Excel contient une feuille (table) Article (CodeArticle, Article...)



Je souhaite supprimer un enregistrement dans cette table.

Mais j'ai un msg d'erreur : " Code : -2147467259 ( 80004005 )

La suppression des données dans un table attachée n'est pas géré par le pilote ISAM"



S'avez vous s'il est possible à partir d'un Code VB Excel de supprimer un enregistrement contenu dans un fichier Excel ?



(pour info : Select et Update fonctionne)



Merci d'avance



VOICI Le Code

======================================

Public Sub test()

Dim oConn As New ADODB.Connection



sCheminCourant = "D:\TRAVAIL\PF RDSI\Conso\Dev\librairie Excel"

sCheminXLDB = sCheminCourant & "XLDB.xls"



' Faire une connexion directe sur le fichier Excel

sConnexion = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=" & sCheminXLDB & ";" & _

"Extended Properties=""Excel 8.0;"";"



oConn.Mode = adModeReadWrite

oConn.Open sConnexion



'==========================================

' Maj d'un enregistrement dans une table

' Ouvrir la table Employee.

Set rstArticle = New ADODB.Recordset

rstArticle.CursorType = adOpenKeyset

rstArticle.LockType = adLockOptimistic

rstArticle.Open "[Article$]", oConn, , , adCmdTable



' Affecter la première date d'embauche de l'enregistrement de

' l'employé à une variable, puis modifier la date d'embauche.

varDate = rstArticle!Article

rstArticle!Article = "Article n°1244"

rstArticle.Update

rstArticle.Close



'==========================================

' Suppression d'un enregistrement dans une table

Set rstArticleDel = New ADODB.Recordset

rstArticleDel.CursorLocation = adUseClient

rstArticleDel.CursorType = adOpenStatic

rstArticleDel.LockType = adLockBatchOptimistic

rstArticleDel.Open "SELECT * FROM [Article$]", oConn, , , adCmdText



' Demander la suppression d'un enregistrement.

strMsg = "Avant suppression NbElem : " & _

rstArticleDel.RecordCount & vbCr & vbCr

Do While Not rstArticleDel.EOF

strMsg = strMsg & rstArticleDel!CodeArticle & vbCr

rstArticleDel.MoveNext

Loop

strMsg = strMsg & vbCr & vbCr & _

"CodeArticle a supprimer :"

strCodeArt = UCase(InputBox(strMsg))



' Se placer sur l'enregistrement

rstArticleDel.Filter "CodeArticle '" & strCodeArt & "'"



' Supprimer l'enregistrement.

rstArticleDel.Delete

rstArticleDel.UpdateBatch



' Afficher les résultats.

rstArticleDel.Filter = adFilterNone

rstArticleDel.Requery

strMsg = ""

strMsg = "Apres Suppression : " & _

rstArticleDel.RecordCount & vbCr

Do While Not rstArticleDel.EOF

strMsg = strMsg & rstArticleDel!CodeArticle & vbCr

rstArticleDel.MoveNext

Loop

MsgBox strMsg

rstArticleDel.Close



oConn.Close



Set oRq = Nothing

Set oConn = Nothing



End Sub

1 réponse

michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
23 juil. 2005 à 10:22
bonjour


malheureusement il semblerait que la suppression de lignes fasse partie des limitations d'utilisation d'Excel comme une base de données
l'aide MSDN indique qu'il n'est pas possible de supprimer les lignes mais uniquement vider les cellules ...


...
You are more restricted in deleting Excel data than data from a relational data source. In a relational database, "row" has no meaning or existence apart from "record"; in an Excel worksheet, this is not true. You can delete values in fields (cells).


However, you cannot:


1. Delete an entire record at once or you receive the following error message:
Deleting data in a linked table is not supported by this ISAM.
You can only delete a record by blanking out the contents of each individual field.


2. Delete the value in a cell containing an Excel formula or you receive the following error message:
Operation is not allowed in this context.

3. You cannot delete the empty spreadsheet row(s) in which the deleted data was located, and your recordset will continue to display empty records corresponding to these empty rows.
...


le lien
http://support.microsoft.com/default.aspx?scid=kb;EN-US;257819#XSLTH4349121122120121120120


bon week end
michel
0
Rejoignez-nous