2010-11-22 87 views
0

Bonjour j'ai besoin d'aide ur la suppression d'un certain nombre de lignes dans un DBGrid première ma base de données est l'accès et l'erreur de suppression est « information conlumn clé insuffisante pour la mise à jour ou refreshin »Supprimer les lignes MultiSelection d'un DBGrid

et adoquery rapport avec DBGrid est:

SELECT * tblMessages, tblMessages.Direction, tblContacts.Name dE GAUCHE tblMessages INSCRIPTION SUR tblContacts tblMessages.MobileNumber = tblContacts.MobileNum OU (((tblMessages.Direction) = 1))

.

et la méthamphétamine od de delting est: adoquery1.delete;

Répondre

1

Ceci n'est pas lié à dbGrid, c'est votre jeu de données (adoQuery1) qui fait l'action. dbGrid ne fait que visualiser vos enregistrements de jeu de données. Assurez-vous que toutes vos tables ont des champs clés primaires. Je suppose que vous devriez également inclure les clés primaires des deux tables jointes dans l'instruction SELECT.

Il existe un bogue connu dans Microsoft ADO dont je ne suis pas sûr s'il est corrigé dans la dernière version ou non; qui est:

BUG: Problem Updating ADO Hierarchical Recordset When Join Tables Share Same Column Name

Il dit, si la clé primaire dans une table a le même nom que l'un des champs dans l'autre table, et les tables sont reliées entre elles, alors vous pouvez obtenir que "Informations insuffisantes sur les colonnes clés pour la mise à jour ou l'actualisation. "Erreur".

BTW, Dans votre instruction SELECT, vous avez déjà tblMessages. *, Pourquoi incluez-vous aussi tblMessages.Directions?

+0

chère, cette erreur ne s'est pas produite en joignant tear apear en supprimant par la méthode adoqurey1.delete; – micheal

+0

Je sais que cela se produit lors de la suppression d'un enregistrement. Lorsque vous supprimez un enregistrement, l'instruction DELETE doit rechercher l'enregistrement dans le jeu d'enregistrements. Évidemment, il n'a pas assez d'informations sur l'enregistrement qui est censé être supprimé. Je vous ai dit que ADO a un bug qui provoque cela, et cette erreur se produit lors de la suppression d'un enregistrement. Donc, vous devriez vérifier ce que j'ai mentionné dans ma réponse. – vcldeveloper