Un petit bleme

Résolu
cs_wijdane Messages postés 9 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 9 avril 2009 - 6 janv. 2009 à 12:21
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 7 janv. 2009 à 13:18
voila le message que j'obtient lorske jexecute  mon prgramme "Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez." au niveau de cette ligne dr = cmd.ExecuteReader()
 Merci

11 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 janv. 2009 à 16:14
"provider=Microsoft.Jet.OLEDB.4.0; data SOURCE=bd1.mdb"


le chemin devrait être un peu plus complet...
genre (à vérifier pour le slash)
"provider=Microsoft.Jet.OLEDB.4.0; data SOURCE=" &
Environment.CurrentDirectory

& "bd1.mdb"











Un message
enregistrement ajouté
ce message pour une destruction c'est bizarre




en effet ce que voulait dire

[../auteur/NHERVAGAULT/84425.aspx nhervagault]

c'est que tu informes l'utilisateur d'un "AJOUT" alors que tu va faire un DELETE

je ne fais pas de dotnet, donc pour les particularités d'execution de requêtes (dataredear et autres), aucune idée

par contre ta requête est fausse, qu'elle soit executée ou non


"Delete From Table1 Set
TextBox1.Text,TextBox3.Text ,TextBox2.Text , TextBox5.Text
,TextBox8.Text ,TextBox7.Text , TextBox6.Text ) Where(num_itevention = "



'&TextBox1.Text&'")




tu fais un WHERE sur une condition vide
s'il n'y a pas d'erreur de parenthèse, çà veut dire = NULL
un NUMéRO NULL ? sans doute sur une clé primaire en plus? pas possible

ton where est sur un champ nommé

num_itevention


, erreur de frappe ici? dans ton code? dans la base?

num_iNteRvention






sinon tu avais mis des apostrophes
à ne mettre que pour des chaînes, pas pour du numérique!

tu utilises SET dans ta requête..., çà ne me semble vraiment pas utile de cette manière, ou alors c'est que je ne comprends sur quel paramètre tu veux supprimer ton ou tes entregistrements

enfin (et c'est le plus génant) tu veux indiquer le contenu de tes zones de texte, or tu indiques le NOM de zones, et non le contenu
dans l'idée (mais pas utile, cf SET bizarre) çà serait du genre





cmd.CommandText string.format("DELETE * FROM Table1 SET {0}, {1}, {2}, {3}, {4}, {5}, {6} WHERE num_itevention {7};", TextBox1.Text, TextBox3.Text , TextBox2.Text , TextBox5.Text , TextBox8.Text , TextBox7.Text , TextBox6.Text, TextBox1.Text)





comme tu le vois, des raisons de bug... y'en a plus qu'il n'en faut

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 janv. 2009 à 13:05
salut,

sans connaître la requête ni la structure des tables concernées, on peut pas faire grand chose...

apparemment tu fais "quelquechose" qui peut créer un doublon, la structure de la table t'en empêche

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
cs_wijdane Messages postés 9 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 9 avril 2009
6 janv. 2009 à 14:55
salut
tu pense ke le bleme c en basedonné
0
cs_wijdane Messages postés 9 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 9 avril 2009
6 janv. 2009 à 14:56
Private



Sub
Button3_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Button3.Click


Dim
dr

As
OleDbDataReadercn.ConnectionString =


"provider=Microsoft.Jet.OLEDB.4.0; data SOURCE=bd1.mdb"

cn.Open()


cmd.Connection = cn


cmd.CommandText "Delete From Table1 Set TextBox1.Text,TextBox3.Text ,TextBox2.Text , TextBox5.Text ,TextBox8.Text ,TextBox7.Text , TextBox6.Text ) Where(num_itevention "



'&TextBox1.Text&'")






Try

cmd.ExecuteNonQuery()


MsgBox(




"enregistrement ajouté"
)


Catch
ex

As
ExceptionMsgBox(


"problème d'ajout"
)


End



Try

dr = cmd.ExecuteReader()







If
dr.Read()

Then

dr.Close()







Me
.Visible =

False






Else

MsgBox(




"non valide"
)


End



If

cn.Close()







End



Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_wijdane Messages postés 9 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 9 avril 2009
6 janv. 2009 à 14:57
tu voi le bleme ????
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 janv. 2009 à 15:36
Salut

Le probleme est que ton code est tres mal structuré dans un premier temps.

Les try catch sont mal mis en place

Un message
enregistrement ajouté
ce message pour une destruction c'est bizarre

dr = cmd.ExecuteReader()

Sans commande SQL SELECT c'est bizarre
donc tu ne peux pas utiliser un reader avec une requete delete
du moins le resultat sera faux.

Essaye de regarder le coach dotnet de microsoft pour améliorer la qualité de ton code.
0
cs_wijdane Messages postés 9 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 9 avril 2009
6 janv. 2009 à 15:47
le code marche tré bien
en plus il senregistre tré bien ds la base de donné
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 janv. 2009 à 15:56
Donc ca sert à rien de poster une question si il marche tres bien?

T'es pas trop logique???
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 janv. 2009 à 16:34
Je l'avais meme pas vu ta requete delete
est de la forme

Delete From Table1 Set TextBox1.Text WHERE

Alors que le delete est de la forme
DELETE FROM TABLE1 WHERE

c'est UPDATE qui est de la forme
UPDATE from table1 set colonne = value WHERE id= valeurid

Je ne comprends pas que tu puisses dire que ton code fonctionne
de plus PCPT te decrit d'autres problemes de ton code.
0
cs_wijdane Messages postés 9 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 9 avril 2009
7 janv. 2009 à 12:06
merci pr votre aide mon programme commence a marché
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 janv. 2009 à 13:18
Salut,

Super constructif comme réponse ;-)
0
Rejoignez-nous