Ricerca recordo escludendo quello attuale

di il
18 risposte

Ricerca recordo escludendo quello attuale

Buonasera a tutti,
esiste un metodo per cercare un record da una maschera continua, escludendo dalla ricerca il record su cui sono.
mi spiego:
ho una casella combinata [prodotto] in cui nell'afterupdate ho impostato un DLookUp per cercare se esistono record con un particolare campo vuoto [utlimoacquisto] nella stessa tabella, il problema si pone dato che nel momento dell'afterupdate anche il campo [ultimacquisto] di quella riga è vuoto, esiste un modo per escluderlo dalla ricerca.

oppure dato che il mio è un approccio indaginoso esiste un altro approccio?

grazie

18 Risposte

  • Re: Ricerca recordo escludendo quello attuale

    Rispiega tutto usando nomi propri non solo dei campi e controlli di cui parli, ma anche di tutto il contesto che c'è intorno: nome maschera, nome tabella. Se serve, mostra anche il codice dove hai il DLookup.
  • Re: Ricerca recordo escludendo quello attuale

    Navigator2348 ha scritto:


    Buonasera a tutti,
    esiste un metodo per cercare un record da una maschera continua, escludendo dalla ricerca il record su cui sono.
    mi spiego:
    ho una casella combinata [prodotto] in cui nell'afterupdate ho impostato un DLookUp per cercare se esistono record con un particolare campo vuoto [utlimoacquisto] nella stessa tabella, il problema si pone dato che nel momento dell'afterupdate anche il campo [ultimacquisto] di quella riga è vuoto, esiste un modo per escluderlo dalla ricerca.

    oppure dato che il mio è un approccio indaginoso esiste un altro approccio?

    grazie
    Salve,
    con il dlookup devi usare il terzo argomento con l'operatore <> (diverso da TuoId)
    saluti
  • Re: Ricerca recordo escludendo quello attuale

    OsvaldoLaviosa ha scritto:


    Rispiega tutto usando nomi propri non solo dei campi e controlli di cui parli, ma anche di tutto il contesto che c'è intorno: nome maschera, nome tabella. Se serve, mostra anche il codice dove hai il DLookup.
    Allora Maschera: Ordini (serve per mettere in ordine da parte di un dipendente dei prodotti)
    Tabella: Ordini
    Campi Tabella : prodotto (numerico), ordinatoil (data), acquistatoil (data), fornitore(testo)

    in sostanza poniamo che il dipendente scelga di ordinare una mela, io vorrei che si cercasse nella tabella se esistono altri ordini di mele che però hanno il campo fornitore vuoto (vuol dire che non sono state acquistate) in quel caso sarebbe inutile aggiungere un'altra riga con altre mele. il fatto è che se metto come criterio nel dlookup di cercare fornitori vuoti (null) rientra in questa ricerca anche la riga che sto scrivendo nuova.
    ricordo che questo codice l'ho messo nell' After_Update della casella combinata prodotto

    Gianni55 ha scritto:


    Navigator2348 ha scritto:


    Buonasera a tutti,
    esiste un metodo per cercare un record da una maschera continua, escludendo dalla ricerca il record su cui sono.
    mi spiego:
    ho una casella combinata [prodotto] in cui nell'afterupdate ho impostato un DLookUp per cercare se esistono record con un particolare campo vuoto [utlimoacquisto] nella stessa tabella, il problema si pone dato che nel momento dell'afterupdate anche il campo [ultimacquisto] di quella riga è vuoto, esiste un modo per escluderlo dalla ricerca.

    oppure dato che il mio è un approccio indaginoso esiste un altro approccio?

    grazie
    Salve,
    con il dlookup devi usare il terzo argomento con l'operatore <> (diverso da TuoId)
    saluti
    ti ringrazio, ho provato ma non funziona in quanto anche se non lo cerco è comunque null quindi mi da lo stesso valore della ricerca
  • Re: Ricerca recordo escludendo quello attuale

    Identifica in qualche modo il record corrente, per escluderlo dalla ricerca.
  • Re: Ricerca recordo escludendo quello attuale

    willy55 ha scritto:


    Identifica in qualche modo il record corrente, per escluderlo dalla ricerca.
    È proprio quello che vorrei fare ma ogni tentativo è vano, hai qualche suggerimento?
  • Re: Ricerca recordo escludendo quello attuale

    Se sei in maschera continua prendi il campo PK sarà sicuramente valorizzato con il record corrente.
  • Re: Ricerca recordo escludendo quello attuale

    Navigator2348 ha scritto:


    willy55 ha scritto:


    Identifica in qualche modo il record corrente, per escluderlo dalla ricerca.
    È proprio quello che vorrei fare ma ogni tentativo è vano, hai qualche suggerimento?
    Non è che ci faresti vedere il codice che hai scritto? "ogni tentativo è vano" non regala nulla alla soluzione.
    Saluti
    Gianni
  • Re: Ricerca recordo escludendo quello attuale

    Allora il codice è questo, ho usato la PK per escludere il record attuale che è IDOrdine
    
    myvar = Nz(DLookup("[acquistatoil]", "ordini", "[prodotto]=" & Forms!ordini![Prodotto] & "And [idordine] <>" & Forms!ordini![IDOrdine] & "and [acquistatoil] =" & "''"), 1)
    If myvar = 1 Then
    ....
    Else
    MsgBox ("mela già in ordine")
    End If
    
    
    il problema che ho è questo, poniamo per esempio che il prodotto da cercare sia "mela", ora io vorrei cercare nella tabella ordini, tutte le mele, diverse dal mio idordine attuale e che abbiano il campo "acquistatoil" vuoto. così che mi restituisca il mio MsgBox.
    di conseguenza se è la prima volta che ordino una mela invece non deve restituirmi il msg box ma entrare nell'if.

    capisco che sto facendo confusione e il problema sia logico, ma è un giorno che ci provo e mi sento come un criceto nella ruota...
  • Re: Ricerca recordo escludendo quello attuale

    Non riesci a creare una query con tutti i criteri che hai elencato? Fai il controllo If sulla query ecc...
  • Re: Ricerca recordo escludendo quello attuale

    Prima di provare con una query vorrei capire dove sto sbagliando col codice, grazie intanto Osvaldo
  • Re: Ricerca recordo escludendo quello attuale

    Può darsi che quella sintassi VBA sia corrotta/incoerente...considerato che è relativamente complessa...sbagliare è facile. Io, al posto tuo, proverei la query. Se sortisce l'effetto sperato, vai a guardare il suo SQL e coerentemente lo vai a inserire nel codice VBA.
  • Re: Ricerca recordo escludendo quello attuale

    
    myvar = Nz(DLookup("[acquistatoil]", "ordini", "[prodotto]=" & Forms!ordini![Prodotto] & "And [idordine] <>" & Forms!ordini![IDOrdine] & "and [acquistatoil] =" & "''"), 1)
    If myvar = 1 Then
    ....
    Else
    MsgBox ("mela già in ordine")
    End If
    
    
    Ci troviamo in maschera o sottomaschera?
    Mah il primo argomento non dovrebbe essere "acquistatoIl" ma "Prodotto"
    Usando i criteri, uno per volta, in una query cosa restituisce ?
    debug print MyVar cosa restituisce ?
    Hai valutato l'uso di un campo "StatoOrdine" ?
    Saluti
  • Re: Ricerca recordo escludendo quello attuale

    Hai assolutamente ragione, il primo argomento non deve essere acquistato il,
    i criteri li ho provati uno per volta in debug.print ed il primo ed il secondo restituiscono un valore, appena aggiungo il terzo myvar divental null, il terzo criterio è una data, ho sbagliato forse qualcosa nella sintassi?

    si potrei aggiungere un ulteriore campo stato ordine, ma mi sembra superfluo dato che se manca la data in "acquistatoil" automaticamente lo stato dell'ordine è "non ordinato"

    p.s. ci troviamo in una Maschera
  • Re: Ricerca recordo escludendo quello attuale

    Navigator2348 ha scritto:


    Hai assolutamente ragione, il primo argomento non deve essere acquistato il,
    i criteri li ho provati uno per volta in debug.print ed il primo ed il secondo restituiscono un valore, appena aggiungo il terzo myvar divental null, il terzo criterio è una data, ho sbagliato forse qualcosa nella sintassi?

    si potrei aggiungere un ulteriore campo stato ordine, ma mi sembra superfluo dato che se manca la data in "acquistatoil" automaticamente lo stato dell'ordine è "non ordinato"

    p.s. ci troviamo in una Maschera
    sul terzo argomento devi inserire is null è li l'errore provato con la query, ecco perchè ti ho consigliato un campo statoOrdine.
    saluti
Devi accedere o registrarti per scrivere nel forum
18 risposte