INSERT INTO con function

di il
11 risposte

INSERT INTO con function

Buonasera, vorrei sottoporre la seguente function:
Private Function asp_olio(ID_Analisi As Integer, contr As Controls) As Boolean
Dim db As DAO.Database
Dim strsql As String, Min As String, Max As String
Set db = CurrentDb

If DCount("*", "Q_Limiti", "ID_Analisi_Campione_Lim=" & ID_Analisi & " AND Tipo_Campione='" & tcamp & "'") = 1 Then
    Min = DLookup("[Min]", "Q_Limiti", "[ID_Analisi_Campione_Lim]=" & ID_Analisi & " And [Tipo_Campione] = '" & tcamp & "'")
    Max = DLookup("[Max]", "Q_Limiti", "[ID_Analisi_Campione_Lim]=" & ID_Analisi & " And [Tipo_Campione] = '" & tcamp & "'")
End If
If DCount("*", "Q_Limiti", "ID_Analisi_Campione_Lim=" & ID_Analisi & " AND Tipo_Campione='" & tcamp & "'") = 0 Then
    Min = "n.d."
    Max = "n.d."
End If
strsql = "INSERT INTO Valore_Analisi (ID_Analisi_Campione,ID_Assegnazione,Valore_Analisi,Min,Max)" & _
" values(ID_Analisi," & N_ID & ",'" & contr & "','" & Min & "','" & Max & "')"
db.Execute strsql
DoCmd.SetWarnings False
End Function
c'è un errore ma non riesco a trovarlo.

11 Risposte

  • Re: INSERT INTO con function

    Nella funzione stai passando un controllo (contr As Controls) che impieghi nei valori da inserire, probabilmente volevi intendere il riferimento al dato da aggiungere.
  • Re: INSERT INTO con function

    Esatto.Quel control può essere sia una textbox che una combobox. Forse è li l'errore?
  • Re: INSERT INTO con function

    Il setwarnings non serve usando Execute, metodo dell'oggetto Database, ma messo li dove lo hai messo non servirebbe in ogni caso a nulla.

    Innanzitutto a te non serve passare un oggetto, ma il suo valore quindi l'uso di quel parametro è tecnicamente errato.
    Sarà poi vero che Min/Max sono campi Testo...?
    Dichiaranil parametro come Type relativo al dato, mi pare tu lo tratti come Testuale quindi stringa... anche se il Nome del campo all'assessore stregua di Min/Max mi suona più Numerico.
  • Re: INSERT INTO con function

    Min e Max non sono numerici. Nello specifico, a seconda del caso, possono essere sia numerici che stringa e pertanto li dichiaro sempre come stringa e li converto in numerici dove serve.
  • Re: INSERT INTO con function

    Interessante scelta quella dei numeri non numeri... spero non sia per visualizzare del testo in caso di valori particolari... sarebbe bizzarro condizionare un campo per gestire solo una visualizzazione.
    Rimane il campo associato al control... che non capiamo se sia testo o numerico...
  • Re: INSERT INTO con function

    Si è proprio come hai detto tu. Il campo associato al control è testo.
  • Re: INSERT INTO con function

    Hai stampato il predicato SQL in finestra immediata prima di eseguirlo con Debug.Print...?
    Se non lo hai fatto meglio farlo magari ti accorgi dell'errore eventualmente postalo.

    P.s. ricorda che campi Numerici si trattano come numerici ed eventualmente si gestisce la visualizzazione di un testo solo ai fini di Visualizzazione e/o Stampa usando i campi calcolati nelle query.
  • Re: INSERT INTO con function

    P.s. ma [ID_Analisi] come primo campo da dove pensi possa essere valorizzato...? Per me da nessuno... scritto così è interpretato come testo ID_Analisi
  • Re: INSERT INTO con function

    La function potrebbe essere eseguita come:
    asp_olio 45, me.cbo_aspetto
    col debug.print ottengo:
    INSERT INTO Valore_Analisi (ID_Analisi_Campione,ID_Assegnazione,Valore_Analisi,Min,Max) values(ID_Analisi,20,'Limpido, omogeneo e privo di particelle in sospensione','n.d.','n.d.')
    non legge il valore integer.
  • Re: INSERT INTO con function

    Trovato l'errore: nella stringa sql andava scritto " & ID_Analisi & " anziché ID_Analisi.
  • Re: INSERT INTO con function

    Era proprio quello....
Devi accedere o registrarti per scrivere nel forum
11 risposte