Question

a un ADOQuery qui a événement OnNewRecord.

sur la procédure i essayer d'ajouter des données à une autre table automaticaly. les données sont quelques lignes qui sont nécessaires et traitées dans ClientDataSet en cas d'annulation.

au loc

OtherAdoQuery.insert;

J'obtiens l'erreur que ADOQuery n'a pas null insertion dans un champ non nul. Je suis en mode d'insertion, mais je ne lui posait pas DELPHI À POST! Je ne trouve pourquoi il messages.

Modifier: pourriez-vous me aider à trouver un indice sur ce problème

un peu plus de précisions:

  

ADOQuery.onNewRecord ();

     

commencer

     

CliendDataSet.insert; // ici va publier pour ADOQueryPost. où ClientDataSet était dans Parcourir État

     

fin;

Edit:

ce bug n'a pas de sens! voir la trace de pile:

  • BeforePost
  • newRecord
  • myFunc

où myFunc ne cause NewRecord avec l'insert.

Était-ce utile?

La solution 2

la réponse a été d'une connexion entre les tables.

le ADOQuery.dataSource a été fixé le DataSet du ClientDataSet.

ce fou si beaucoup de dégâts, et aucune indication par le delphi.

Autres conseils

Je ne suis pas trop familier avec TADOQuery, mais je sais comment traquer une erreur comme celui-ci. Tout d'abord, si vous ne l'avez pas déjà défini, allez dans Options projet et activez l'option Utiliser débogage DCU sous l'onglet Compile, puis exécutez une version complète et l'exécuter. Lorsque vous obtenez ce rapport d'exception dans le débogueur, appuyez sur pause et vous devriez finir à l'intérieur du code pour le TADOQuery ou l'un de ses sous-objets. Essayez d'examiner la pile d'appels. Si vous regardez quelques appels, vous trouverez probablement quelque chose que vous avez appelle autre chose qui vous appelle Post. Suivez l'arrière de trace de la pile jusqu'à ce que vous atteignez votre code et vous aurez une idée de ce qui se passe, et si vous analysez un peu, vous devriez trouver un moyen pour éviter le problème.

Cela dit, permettez-moi de faire une estimation rapide quant à la cause de votre problème: Lorsque vous appelez Insérer sur un ensemble de données, si l'ensemble de données est déjà en mode annexant parce que vous avez précédemment appelé Insérer ou Append et n'a pas suivi avec un poste, il appellera lui-même poste avant la mise en place d'une nouvelle ligne pour vous de travailler sur. Peut-être que c'est ce qui vous arrive?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top