Pb suppression enregistrement table données

codebleu Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 6 mai 2009 - 18 mai 2007 à 11:31
codebleu Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 6 mai 2009 - 27 mai 2007 à 12:19
Bonjour,

J'ai saisi des données dans une table de données SQL Server et en voulant aller plus vite j'ai recopié certains enregistrements.
Malheureusement, je ne peux plus modifier les nouveaux j'ai le message suivant : "les valeurs de la mise à jour ou supprimée ne rendent pas la ligne unique ou modifient plusieurs lignes (2 lignes).".

Comment puis-je procéder pour modifier ces enregistrements qui sont donc en doublon dans cette table ?

Si vous pouvez m'aider, vous serez les bienvenus,




Bleu le code...

10 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
18 mai 2007 à 13:20
Bonjour,
Si t' as pas de problème pour accèder à ta table,
Tu les supprimes carrément.
Tu fais un code qui parcoure ta table et compare le
courant avec le précédent,Si c' est le même tu supprimes.




<hr />




© -En ce moment, c' est que pour Cannes...Mais moi aussi je tourne !   



(Rolling, mon poisson rouge)                                                      
codebleu Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 6 mai 2009
22 mai 2007 à 22:37
chaibat05,

Je ne suis pas expert en SQL server, pourrais-tu me donner un bout de programe correspondant à ce que tu me dis.

merci






Bleu le code...
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 00:00
Salut,
mais moi non plus cher ami, moi non plus.
Mais je tente ma chance quand même :-)


>Connection  
   Set cn = New ADODB.Connection
    cn.ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DataWar.mdb;Persist Security Info=False"
    cn.Open
    Set rs = new Recordset
    rs.CursorLocation = adUseClient
    rs.LockType = adLockOptimistic
    rs.Open(cn, "select * from TaTable order by ChampId"
   
 Tu déclares deux variable Prec et Courant du type de ton identifiant


  With rs
     .MoveFirst
      Prec=![Id]
     .MoveNext
     Do While Not .Eof
         Courant=![Id]
         If Prec=Courant  'donc en double
              .Delete
              If Not .Eof Then .MoveNext
    
         Else
            Prec=Courant
           .MoveNext
      
        End If
       Loop
   End With   


<hr />

® l l i n g , l' agité du bocal : 
    Etre une heure, une heure seulement...Rien qu' une heure;
    Vert, vert, vert et beau à la fooooooooooooooooooooooooois.
codebleu Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 6 mai 2009
26 mai 2007 à 22:07
Merci pour ce code mais j'ai un problème avec Recordset qui n'est pas reconnu avec Visual Basic express...
As-tu une explication ?

Merci d'avance






Bleu le code...

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

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 mai 2007 à 23:17
Bonsoir,
essaies avec Set rst = New ADODB.Recordset
au lieu de Set rs = new Recordset

 
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
26 mai 2007 à 23:45
Salut,

3 petites remarques:

1) Il faut aussi que tu rajoutes dans les references de ton projet, Microsoft Active Data Objet (2.5 ou plus)

2) Je pense que ca "Microsoft.Jet.OLEDB.4.0", c'est pour une base Access mais je suis pas sur.

3) Je ferais ca (je dis pas que c'est faux mais je connais pas cette forme:
rs.Open "select * from TaTable order by ChampId", cn

au lieu de
rs.Open(cn, "select * from TaTable order by ChampId"
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
27 mai 2007 à 00:12
Bonsoir,
> sûr que sans les références que tu cites il aurait signalé l' erreur
au niveau du Set cn = New ADODB.Connection
> sûr aussi que rs.Open(cn, "select * from TaTable order by ChampId"
n' est pas une forme mais une "méforme"
(que personne ne connait d' ailleur et je ne souhaite à personne de la connaitre)
 je m' en excuse.
c' est rs.Open "select * from TaTable order by ChampId", cn
comme tu l' as souligné. Merci Nocko.


A+











<hr />

® l l i n g , l' agité du bocal : 
   Etre une heure, une heure seulement..Rien qu' une heure,
   Vert, vert, vert et beau à la foooooooooooooooooooooooois. 
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
27 mai 2007 à 00:14
désolé pour Nocko et Merci Nicko :-)

<hr />® l l i n g , l' agité du bocal : 
   Etre une heure, une heure seulement..Rien qu' une heure,
   Vert, vert, vert et beau à la foooooooooooooooooooooooois. 
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
27 mai 2007 à 00:41
Sur ta premiere reflexion, tu as parfaitement raison, j'ai pas reflechi.

J'ai pas l'habitude du soir comme toi LOL.
codebleu Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 6 mai 2009
27 mai 2007 à 12:19
Messieurs,

Pour être le plus clair possible je travaille avec SQL Server et Visual Basic Express, et l'expression "Set rst = New ADODB.Recordset" n'est pas reconnue le message retourné est "expression 'ADODB.Recordset' non définie".
Ne faut-il pas importer autr chose que "Imports System.Data.SqlClient" que j'ai déclaré en entête...?

Merci pour vos réflexions!




Bleu le code...
Rejoignez-nous