Newsgroup: it.comp.appl.access
Titolo: Errore 3105, 3146 e 3000 durante inserimento record

Ciao,
sto realizzando con Access 97 una procedura per inserire, nelle
distinte dei nostri prodotti, i codici senza piombo (SP) al posto di
quelli con piombo.
Lunedì sera era arrivato al punto che tutto funzionava, perché ho
fatto alcune prove senza problemi. Quindi mi mancava solo l'inserimento
dei codici SP tra gli alternativi.
Martedì ho fatto anche questa parte, ma adesso la prima dà problemi.
Il problema non può essere connesso alla seconda parte della
procedura, perché vengono eseguite separatamente.
ho un elenco di distinte per le quali fare gli scambi: quando c'è il
codice giusto faccio un AddNew tramite Recordset.
Dopo un certo numero di distinte ,all'update ottengo l'errore 3105
:"Nome campo destinazione mancante nell'istruzione SELECT INTO (0)" (in
ingelese: "Missing destination field name in SELECT INTO statement
(0)").
Ho provato a fare l'inserimento tramite un RunSQL, ma arrivo ad un
punto diverso ed ottengo l'errore 3146 "ODBC - chiamata non riuscita".
La cosa è incomprensibile. Della tabella che popolo ho tralasciato 4
campi non indispensabili che sono Memo, ma ho provato pure a popolarli.
Ho ricontrollato il formato dei campi e ciò che vado per inserire,
anche se era certamente a posto visto che N inserimenti vengono fatti
correttamente.
Ho provato a creare una tabella temporanea ed a fare poi un
accodamento: in questo caso ottengo un errore sulla chiave primaria, ma
essa è costruita bene e NON è duplicata.
L'unica cosa "strana" che ho notato è che, provando su due archivi
diversi (copie di sicurezza di giorni diversi) l'errore avviene per
distinte diverse ma per lo stesso componente. L'ho controllato ed il
record non ha niente di diverso dagli altri. Potrebbe essere una
coincidenza..
Avete idee sul perché mi capita questo e su come potrei superare il
problema?
   Alessio Albano

 ha scritto nel messaggio 
news:1121954043.8...@g44g2000cwa.googlegroups.com...
Ciao,








   Alessio Albano
Ciao Alessio
quello che hai scritto, a mio avviso, è poco comprensibile. Parli di "nostri 
prodotti", "Prima procedura", "distinte per le quali fare gli scambi", 
"Della tabella che popolo ho tralasciato 4 campi non indispensabili che sono 
Memo, ma ho provato pure a popolarli", ecc...
Non dici nulla sulla struttura delle tabelle, della versione di Access, se 
usi ODBC e se sì a quale database, quante tabelle sono coinvolte, dove 
esegui le routine, se usi delle maschere, come sono alimentate e sopratutto 
non dice chiaramente cosa vuoi ottenere...
Ti spiacerebbe essere più chiaro?
Ciao, Carlo


Ciao Carlo, grazie per la risposta.
Non sono potuto tornare prima sul ng per risposndere.
La procedura viene eseguita su tabelle collegate via ODBC, le quali
fanno parte di un db SQL.
Da una maschera non faccio altro che premere il bottone che esegue il
codice.
Non so se è chiaro cosa sia una distinta, quindi lo spiego: la
distinta contiene l'elenco dei componenti di un prodotto: pcb,
resistenze, condensatori ecc, tutto.
le tabelle interessate sono:
- DISTINTE (elenco delle distinte)
- ART_DIST (elenco dei componenti prefeernziali di ogni distinta)
- ART_DIST_ALT (elenco degli alternativi per ogni componente
preferenziale)
la DISTINTE viene solo letta, mentre le altre due sono passibili di
aggiornamenti.
Le distinte hanno una versione, e poichè viene mantenuto uno storico,
devo innanzitutto scegliere dalla DISTINTE solo quelle "attuali", cioè
la versione più recente.
Mi sono creato una tabella con i nuovi codici senza piombo.
Scorro la ART_DIST e, per ogni preferenziale che ha un equivalente
senza piombo, lo sostituisco nella ART_DIST con tale equivalente
(sovrascrivo il campo Codice), quindi aggiungo il preferenziale alla
ART_DIST_ALT (con riferimento alla distinta corrente).
Quando vado a fare queste scritture, in alcuni casi, e senza motivo
apparente, cioè senza un denominatore comune, ottengo gli errori
suddetti.
Ho superato la cosa con la gestione degli errori: nel caso
l'aggiornamento tramite recordset (AddNew/Update) causi l'errore 3146,
lo faccio tramite una query che eseguo con RunSQL.
Ora la procedura funziona, ho corretto altre due sciocchezze, ma vorrei
capire il perché di errori come questi.
Quando parlo di prima procedura intendo la parte che aggiunge i
preferenziali tra gli alternativi e poi li sostituisce. la seconda
parte della procedura è invece quella che aggiunge nella ART_DIST_ALT
i codici senza piombo.
Spero di essere stato più chiaro; non mi ero dilungato a spiegare
perché pensavo che qualcuno avesse già avuto un problema simile e
sapesse darmi una spiegazione.
Pardon :)
Se manca qualcosa, sono qui!
   Alessio