INSERT INTO con clausola WHERE

di eddy1973 il
4 risposte
Buonasera,
ho creato DB all'interno del quale ci sono tre tabelle in relazione molti-a-molti ovvero Analisi_Campione e Assegnazione lato molti:

Analisi_Campioni:
ID_Analisi_Campioni (PK)
Analisi_Campione

Valore_Analisi:
ID_Valore_Analisi (PK)
ID_Analisi_Campione
ID_Assegnazione
Valore_Analisi

Assegnazione:
ID_Assegnazione (PK)
ID_Valore_Analisi
Numero_Campione
Data_inserimento

ho la necessità di inserire nella tabella Valore_Analisi dei dati derivanti da una maschera (N_ID, Me.txt_visc100) e valori costanti, ad esempio 1, per ID_Assegnazione, utilizzando una stringa SQL.
Ho utilizzato INSERT INTO e la clausola WHERE NOT EXISTS per evitare d' inserire più volte lo stesso valore:
strsql = "INSERT INTO Valore_Analisi (ID_Analisi_Campione,ID_Assegnazione,Valore_Analisi)" & _
                                        " values(1, '" & N_ID & "','" & Me.txt_visc100 & "')" & _
                                        " WHERE NOT EXISTS (SELECT ID_Analisi_Campione,ID_Assegnazione FROM Valore_Analisi WHERE ID_Analisi_Campione=1 and ID_Assegnazione='" & N_ID & "')"
Continua a darmi errore.
Potrei risolvere tutto utilizzando, ad esempio, una semplice INSERT INTO abbinata ad una funzione DCOUNT, ma vorrei capire dove sbaglio con la stringa sql scritta o in che altro modo potrei scriverla.
Grazie.

4 Risposte

  • >>>Continua a darmi errore.
    quale?
  • Si scusate:
    errore di Run-time '3067. L'input per la query deve contenere almeno una tabella o una query.
  • Fai una Dcount con criterio [D_Analisi_Campione=1 and ID_Assegnazione='" & N_ID] e se =0 fai INSERT.

    Con Access le SUBQUERIES hanno una bassissima efficienza.
  • Al di là dell'efficienza ma non capisco perché di quell'errore. Forse la INSERT INTO impostata per prelevare valori da una form anziché da altre tabelle non accetta quella subquery? Boh...
Devi accedere o registrarti per scrivere nel forum
4 risposte