Erreur lors d'une update [Résolu]

Signaler
Messages postés
12
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
18 novembre 2004
-
Messages postés
12
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
18 novembre 2004
-
J'ai un problème lors d'une update.

J'ai un recordset auquel je fais des modifs puis à la fin je fais un .update

A ce moment là j'ai l'erreur suivante:

Key column information is insufficient or incorrect. Too many rows were affected by update.

7 réponses

Messages postés
12
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
18 novembre 2004

J'ai trouvé le probleme. En fait dans ma requete sql il faut que je selectionne la clé primaire sinon il ne sait pas quelle ligne mettre à jour.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
1352
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2008
1
Si tu peux, envoies le code pour qu'on sache si tu as fais du ADO ou DAO et voir l'acces à la table , requete simple ou imbrique

tu utilises vb ou .NET ?

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)

Membre du club CodeS-SourceS
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Il te manque des informations pour ta base ou alors des format ne sont pas correct par rapports aux types de données que ta base peux contenir ou encore certaines valeurs sont trop grandes pour tes champs de base

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
12
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
18 novembre 2004

Voilà le bout de mon code concerné:

Private Sub ajout_image_Click()

CommonDialog1.ShowOpen

FileCopy CommonDialog1.filename, App.Path & "\tmp.jpg"

Image1.Picture = LoadPicture(App.Path & "\tmp.jpg")

Call requete(Rs, "SELECT image,imsize FROM Films WHERE id=" & identifiant)

With Rs

ObtenirImage App.Path & "\tmp.jpg", Rs
.Update

End With

Rs.Close


End Sub

Public Sub ObtenirImage(filename As String, rstMain As ADODB.Recordset) ' Pour Obtenir une Image

Dim file_num As String
Dim file_length As Long
Dim bytes() As Byte
Dim num_blocks As Long
Dim left_over As Long
Dim block_num As Long

file_num = FreeFile ' Prochain Numéro de Fichier Pouvant être Utilisé par l'Instruction Open

Open filename For Binary Access Read As #file_num ' Ouverture du Fichier Temporaire
file_length = LOF(file_num)
If file_length > 0 Then
num_blocks = file_length / BLOCK_SIZE
left_over = file_length Mod BLOCK_SIZE

rstMain("imsize") = file_length

ReDim bytes(BLOCK_SIZE)

For block_num = 1 To num_blocks
Get #file_num, , bytes()
rstMain("image").AppendChunk bytes()
Next block_num

If left_over > 0 Then
ReDim bytes(left_over)
Get #file_num, , bytes()
rstMain("image").AppendChunk bytes()
End If
Close #file_num
End If

Exit Sub

End Sub
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Dans ton code :

With Rs

ObtenirImage App.Path & "\tmp.jpg", Rs
.Update

End With


Tu ne sélectionne aucun enregistrement et ne change aucune données c'est pour cela.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
De plus :

rstMain("imsize") = file_length


ça, ça ne marche pas car pour mettre à jour un enregistrement ou l'enregistrer, il faut faire plutôt ce genre de truc :

with rstMain
  !imsize = file_length
end with


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
12
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
18 novembre 2004

Les données sont changées dans la fonction ObtenirImage

la commande rstMain("imsize") = file_length marche bien, j'ai pu le vérifier.

En fait l'erreur ne se produit que dans certains cas. Si je rajoute un enregistrement dans ma base et que j'appelle cette fonction, j'ai pas l'erreur. par contre si j'ajoute plusieurs enregistrements et que je l'appelle ,à ce moment j'ai l'erreur.