Domanda

ottenuto un ADOQuery che ha evento OnNewRecord.

sulla procedura cerco di aggiungere i dati automaticamente a un altro tavolo. i dati sono poche righe che sono necessari e trattati in ClientDataSet in caso di cancellazione.

alla loc

OtherAdoQuery.insert;

ottengo l'errore che ADOQuery Impossibile inserire nulla in un campo non nullo. Sono in modalità di inserimento, ma non ho mai chiesto Delphi per POST! I Dont trovo il motivo per cui i messaggi.

Modifica:? Potrebbe aiutarmi a trovare un suggerimento su questo problema

un po 'di precisazione:

a

  

ADOQuery.onNewRecord ();

     

iniziare

     

CliendDataSet.insert; // qui va di inviare per ADOQueryPost. dove era in ClientDataSet Sfoglia Stato

     

fine;

Modifica:

questo bug non ha senso! guardare la traccia dello stack:

  • beforePost
  • NewRecord
  • myFunc

dove myFunc fa causa NewRecord con l'inserto.

È stato utile?

Soluzione 2

la risposta è stata da un collegamento tra i tavoli.

l'ADOQuery.dataSource è stato fissato il DataSet del ClientDataSet.

Questa pazza tanto danno, e nessun accenno da parte di Delphi.

Altri suggerimenti

Io non sono troppo familiarità con TADOQuery, ma so come rintracciare un errore come questo. In primo luogo, se non lo avete già impostato, andare in Opzioni progetto e attivare Usa debug DCU nella scheda Compile, quindi eseguire una generazione completa ed eseguirlo. Quando si ottiene che il rapporto eccezioni nel debugger, ha colpito break e si dovrebbe finire dentro il codice per il TADOQuery o uno dei suoi oggetti secondari. Prova esaminando lo stack di chiamate. Se guardi in alto un paio di telefonate probabilmente troverete qualcosa che hai fatto sta chiamando un'altra cosa che sta chiamando Post. Seguire la parte posteriore dello stack trace fino a raggiungere il proprio codice e si otterrà un'idea di quello che sta succedendo, e se si analizza un po 'si dovrebbe trovare un modo per prevenire il problema.

Detto questo, mi permetta di fare una rapida indovinare per quanto riguarda la causa del problema: Quando si chiama inserimento su un set di dati, se il set di dati è già in modalità aggiungendo perché in precedenza chiamato inserire o aggiungere e non ha dato seguito con un post, si chiamerà Messaggio per sé prima di impostare una nuova riga per voi a lavorare su. Forse questo è ciò che ti sta succedendo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top