L’opération doit utiliser une requête qui peut être mise à jour

Messages postés
12
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
26 février 2013
- - Dernière réponse : cs_meryamaa
Messages postés
12
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
26 février 2013
- 3 août 2012 à 14:43
Bonjour tout le monde j’espère que vous allez bien, j'ai un problème j’espère que vous pouvez m'aider:

J'ai développé une application Gestion des stagiaires avec VB.NET j'utilise VS 2010, et j'ai créée la base de données avec Access 2007, au niveau de la compilation tous les requête marche très bien j'ai aucun problème et aucune erreur mais quand je crée le setup il y a 2 problème j'arrive pas à ajouter dans la base ni modifier l’application s'affiche l'erreur suivante:

L’opération doit utiliser une requête qui peut être mise à jour


et aussi quand je veux supprimer l'application s'affiche l'erreur suivante:

impossible de supprimer dans les tables spécifiées


j'ai essayé d'exécuter le setup en tant qu'administrateur, j'ai partager la base de données avec tout le monde avec le droit d’écrire/lecture, mais toujours le même problème, je précise que au cours de la compilation c'est-à-dire le débogage tous marche très bien je peux ajouter supprimer et modifier.


aidez moi SVP je sais pas quoi faire si vous voulez je peux vous donner le code pour modifier, supprimer et ajouter.


Merci d'avance
Afficher la suite 

8 réponses

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
Bonjour,

L'opération doit utiliser une requête qui peut être mise à jour,
signifie que tu tentes de mettre à jour une table (T) avec le resultat d' une requete (R) qui utilise ou fait référence à cette même table (T).

impossible de supprimer dans les tables spécifiées, signifie que les tables en questions sont liées entre elles ou à d' autres dans une relation d' integrité reférentielle.
Dans un tel cas tu ne peux supprimer une ligne d' un table sans avoir supprimer aupréalable toutes les lignes correspondantes dans les autres tables liées.
Ou alors dans la propriété de cette relation, autoriser la suppression en cascade.






[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
Messages postés
12
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
26 février 2013
0
Merci
Bonjour LIBRE_MAX, merci de votre réponse mais mes tables ne sont pas liées entre elles. mais en tout cas je vais essayer avec la suppression en cascade mais que je dois faire pour l'ajout??

voila mon code pour l'ajout:

' Le code pour ajouter a la base de données
                cmd.CommandType = CommandType.Text
                cmd.CommandText = "INSERT INTO Stagiaires (Nom, Prénom, Date_de_Naissance, Téléphone, Etablissement, Niveau, [Option], Recommandation, Observation, Retenue, [Non_Retenue]) " & " VALUES ('" & TxtNom.Text & "', '" & TxtPrénom.Text & "', '" & DateTimePickerAjouter.Value & "', '" & TxtTéléphone.Text & "', '" & TxtEtablisseement.Text & "', '" & TxtNiveau.Text & "', '" & TxtOption.Text & "','" & TxtRecommandation.Text & "', '" & TxtObservation.Text & "', '" & TxtRetenue.Text & "', '" & TxtNRetenue.Text & "') "
                cmd.Connection = con
                cmd.ExecuteNonQuery()





et voila mon code pour la suppression

Try
            If MsgBox(" Voulez Vous vraiment supprimer le stagiaire", 1 + 32, "Confiramtion de la suppression") = MsgBoxResult.Ok Then
                con.Close()
                con.Open()
                cmd.CommandType = CommandType.Text
                cmd.CommandText = " DELETE FROM Stagiaires WHERE N°=" & Val(TxtNumero.Text)
                cmd.Connection = con
                cmd.ExecuteNonQuery()
                MsgBox("Le stagiaire a été bien Supprimé", MsgBoxStyle.Information, "Confirmation")

            End If

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 



je précise que au cours la compilation j'ajoute et je supprime facilement mais quand je crée le setup et j'installe ce setup je peux pas ni ajouter ni supprimer
Commenter la réponse de cs_meryamaa
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
Pour l' expression ajout, l' expression me semble correcte.
Pour la suppression, il manque l' operateur All (*).Ou alors tu dois énuméré les champs
de la ligne à supprimer.Sinon, il ne trouve rien à supprimer.

Ceci dit, j' ai jamais vu une telle écriture pour l' éxécution d' une commande.
Si cmd est un objet Command, la transaction doit être faite de cette façon:

Dim MaCmd As ADODB.Command
       Set MaCmd = New ADODB.Command
          
       Dim As sQuery String
       sQuery="DELETE * FROM Stagiaires WHERE N°=" & _
          Cint(TxtNumero.Text) ' si N° est un Entier
          ' CLng(TxtNumero.Text) si N° est un Long
          ' l' utilisation de Val() est à éviter dans ce contexte.
      
      If con.State = 0 Then con.Open
                 
      con.BeginTrans
      With MaCmd
             .ActiveConnection = con
             .CommandType = adCmdText
             .CommandText = sQuery
             .Execute
      End With
      con.CommitTrans
  
Même chose pour l' ajout.Tu dois suivre le même schéma.

      


[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
Dim sQuery As String


[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
Noter que certaines erreurs ne sont dècelées qu' à l' éxécution.




[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
Messages postés
12
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
26 février 2013
0
Merci
Merci beaucoup LIBRE_MAX, je vais utiliser votre code :), merci beaucoup je suis vraiment désolé de vous déranger.
Commenter la réponse de cs_meryamaa
Messages postés
12
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
26 février 2013
0
Merci
Bonjour, j'ai trouvé la solution:

Donc la solution pour mon problème est:

après l'installation de Setup

dans programmes files trouver votre dossier de l'application

cliquez droit sur le dossier qui a été créé après l'installation->onglet sécurité->donnée la permission à tout le monde (donner le contrôle total).

cliquez droit sur la base de données qui existe dans ce dossier->onglet sécurité->donnée la permission à tout le monde (donner le contrôle total).


pour mon problème ça marche comme ça.

Merci beaucoup LIBRE_MAX pour votre aide :)
Commenter la réponse de cs_meryamaa
Messages postés
12
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
26 février 2013
0
Merci
où se trouve le bouton résolu ??
Commenter la réponse de cs_meryamaa