Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

Errore di sintassi in funzione DLookup con date

  1. #1
    L'avatar di RaoulDuke
    RaoulDuke non è in linea Scolaretto
    Post
    138
    Like Inviati  
    3
    Like Ricevuti  
    0
    Buonasera a tutti.

    Ho creato un funzione pubblica che ha lo scopo di ritornare il valore del prezzo del prodotto in vigore al momento dell'allestimento della fattura.

    La funzione cerca nella tabPrezzi il prezzo controllando l'IDProdotto, l'IDListino e confrontando la data della fattura con le date di inizio e fine validità del prezzo.

    Questo il codice:
    Public Function retrieveIdPrezzoUnitario(ByVal nIDProdotto As Long, ByVal nIDListino As Long, ByVal dDataMovimento As Date) As Variant
    
    'Converto data nel sistema anglosassone
    Dim ConvertedData As Date
    ConvertedData = Format$(dDataMovimento, "mm/dd/yyyy")
    
    ' Imposta valore di default = 0
    retrieveIdPrezzoUnitario = 0
    
    ' Ricerca il Prezzo
    Dim varRtm As Variant
    varRtm = DLookup("[PrezzoUnitario]", "tabPrezzi", "[IDProdotto] =" & nIDProdotto & " AND [IDListino]=" & nIDListino & " AND [DataFineValidita]>#" & ConvertedData & "# AND [DataInizioValidita]<#" & ConvertedData & "#")
    
    ' Ritorna il valore
     If Not IsNull(varRtm) Then retrieveIdPrezzoUnitario = varRtm
     End Function
    
    Ottengo però un errore di sintassi nella query dei criteri della funzione Dlookup (errore run-time 3075).
    Non riesco a capire dove si trovi, mi sembra tutto corretto.

    Grazie per l'aiuto!

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,745
    Like Inviati  
    0
    Like Ricevuti  
    20
    ℹ️ Leggi di più su @Alex ...

  3. #3
    L'avatar di RaoulDuke
    RaoulDuke non è in linea Scolaretto
    Post
    138
    Like Inviati  
    3
    Like Ricevuti  
    0
    Grazie Alex.
    Nel frattempo mi sono già letto il tuo articolo (mi ricordavo di averlo letto).
    Ora ho risolto così:

    Public Function retrieveIdPrezzoUnitario(ByVal nIDProdotto As Long, ByVal nIDListino As Long, ByVal dDataMovimento As Date) As Variant
    
    ' Imposta valore di default = 0
    retrieveIdPrezzoUnitario = 0
    
    ' Ricerca il Prezzo
    Dim varRtm As Variant
    varRtm = DLookup("[PrezzoUnitario]", "tabPrezzi", "[IDProdotto] = " & nIDProdotto & " AND [IDListino] = " & nIDListino & " AND [DataFineValidita]>" & CLng(dDataMovimento) & " AND [DataInizioValidita]<" & CLng(dDataMovimento))
    
    ' Ritorna il valore
     If Not IsNull(varRtm) Then retrieveIdPrezzoUnitario = varRtm
     End Function
    
    Se ho capito bene, questo è il modo in cui consigli di procedere quando si tratta di passare query (con date) a JET?

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,745
    Like Inviati  
    0
    Like Ricevuti  
    20
    Dipende... se usi i Parameters non serve... se usi ad esempio DlookUp o la proprietà Filter o costruisci il predicato SQL... questo è per me il metodo più pulito, ma equivale agli altri.
    ℹ️ Leggi di più su @Alex ...

  5. #5
    L'avatar di RaoulDuke
    RaoulDuke non è in linea Scolaretto
    Post
    138
    Like Inviati  
    3
    Like Ricevuti  
    0
    Grazie mille, molto interessante.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. DLookUp - sintassi dei criteri.
    Da ROSARIO54 nel forum Microsoft Access
    Risposte: 13
    Ultimo Post: 31-08-2017, 18:04
  2. Errore: funzione 'date' non definita nell'espressione.
    Da swsolid nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 24-02-2011, 17:33
  3. Funzione DlookUp in textbox #ERRORE
    Da timoty nel forum Microsoft Word
    Risposte: 6
    Ultimo Post: 27-02-2010, 18:32
  4. Funzione DlookUp con due criteri
    Da John nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 16-04-2007, 17:57
  5. [ACCESS] Funzione DlookUp
    Da andromeda nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 30-05-2006, 18:18