Problème de violation d'acces lors d'une suppression
AionSinner
Messages postés6Date d'inscriptionmercredi 21 décembre 2005StatutMembreDernière intervention 5 janvier 2007
-
4 janv. 2007 à 16:12
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 2007
-
27 avril 2007 à 20:23
Bonjour à tous,
Voilà maintenant plusieurs longues heures que me casse la tête sur un problème et je n'en trouve pas la solution, alors s'il vous plait ... Qu'on me vienne en aide !!!
Je construis actuellement un programme pour application portative sous .NET, et alors que j'en suis à la phase terminale de réalisation je bloque sur un petit problème :
J'ai une table (nommée "LISTE_COMPOSANT") dans une base de donnée (nommée "pda.sdf")
J'interagit déjà avec cette table sans aucun problème (utilisation de INSERT) mais lorsque je cherche à supprimer des éléments, voir dans le cas suivant à complètement vider la table, je tombe sur une erreur de type "Violation d'accès"
Voici la compo de ma table :
LISTE_COMPOSANT
Nom_composant NvarChar de taille 100
Id_composant Int de taille 4 Clef primaire et Unique
SE_pere Nvarchar de taille 100 Clef Primaire et Unique
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Voici la sub permettant l'utilisation du dataset et dataadapter (respectivement "dasXLComp" et "dapXLComp") :
Sub
CompXLBDD()
'Specification d'un connexion pour un data adapter
Dim
PATH AsString = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase)
Dim
SQLFile AsString = "\BasePDA.sdf"
Dim
cnn1 As SqlCeConnection New SqlCeConnection("Data Source" & PATH & SQLFile)
'Spécification de la valeur de critère de correspondance (SUREMENT UN PROBLEME ICI MAIS JE NE LE VOIT PAS)
Dim prm3 As SqlCeParameter = dapXLComp.DeleteCommand.Parameters.Add("@Id_composant", Data.SqlDbType.Int)
prm3.SourceColumn = "Id_composant"
prm3.SourceVersion = Data.DataRowVersion.Original
'Ouverture de la connexion
cnn1.Open()
'Remplir l'ensemble de données avec le data adapter
dapXLComp.Fill(dasXLComp, "LISTE_COMPOSANT")
'Fermeture de la connexion
cnn1.Close()
End
Sub
Et voici enfin l'utilisation que j'en fait :
Sub permettant de supprimer tout le contenu de la table. J’utilise déjà ce type de sub avec d’autre table et ça marche très bien … je suppose donc que ça provient de la façon dont j’ai déclaré la command DELETE et de ses parametres.
''Efface le contenu des bases liste
Sub DeleteList()
CompXLBDD()
''Création d'une datatable permettant de manier le contenu
Dim DtCompDeleteMe As Data.DataTable = dasXLComp.Tables(
"LISTE_COMPOSANT"
)
Dim CurrentRowComp As Integer = 0
''Si des données existe alors on procède à leur supression
If DtCompDeleteMe.Rows.Count <> 0 Then
For CurrentRowComp = 0 To DtCompDeleteMe.Rows.Count - 1
''Et on update : c'est là que ca merde en me donnant une erreur de type violation d'acces
dapXLComp.Update(dasXLComp,
"LISTE_COMPOSANT"
)
End If
DtCompDeleteMe.Dispose()
UnloadXLComp()
End Sub
Voilà si qqun peut m’aider ça serait génial !!!
Perso j’ai plus aucune idée … A moins qu’il y ait une méthode de suppression particulière à adopter lorsque l’on à deux clefs primaire dans une table ?
Merci d’avance et désolé si ça semble bordélique exposé comme ça.
A voir également:
Problème de violation d'acces lors d'une suppression
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 27 avril 2007 à 20:23
Le .Net, ça me donne des boutons, mais :
faut voir le problème de synchro.... Tu delete et update dans la micoseconde de notre processeur et ta base essaye de suivre. En skioul, faut travailler en transactionnel car, sinon, tu ne sais pas où en est ton lot d'instructon.
Soit, coté code, tu gère les propriétés de ta connexion et tu gêre les erreurs et autres TimeOut,
Soit, tu écris une belle prcédure, coté SQL,qui fait le travail et renvoie un status ...