Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Problema con tasto Cerca quando la query è vuota

  1. #1
    GregVia non è in linea Novello
    Ciao a tutti,
    premetto che ho già cercato su internet thread riguardo a questo problema con scarsa efficacia, probabilmente la mie mie chiavi di ricerca sono sbagliate.

    Ho una mascherca con un tasto cerca che recupera il testo da una casella di testo e la inserisce in una query che alla fine inserisce nelcampo RecordSource della Mascherca. Ecco il codice del tasto cerca

    Dim t As String
    t = "SELECT Orders.NumeroOrdine, Orders.WBS, Orders.Address, Orders.SoldTOParty, Orders.RequestData, Orders.Requester, Orders.CustomerPO, Orders.CustomerName, Orders.Note, OrdersRows.Index, OrdersRows.Line, OrdersRows.PartNumber, OrdersRows.PartNumberCustomer, OrdersRows.Material, OrdersRows.FreeSample, OrdersRows.NetValue, OrdersRows.Quantity FROM Orders INNER JOIN OrdersRows ON Orders.NumeroOrdine = OrdersRows.NumeroOrdine Where Orders.CustomerPO Like '*" & Text94.Value & "*';"
    [Form_Visualizzazione_MG_MM_AP].RecordSource = t
    [Form_Visualizzazione_MG_MM_AP].Requery
    Text94 = ""
    
    Il problema si verifica quando la stringa è diversa da qualsiasi valore nel campo ricercata cioè quando la query non restituisce nessun record. In questo caso la maschera diventa totalmente bianca e si blocca.

    Ho trovato online due possibili soluzioni:
    1) usare un dcount che analizzi i numeri di record nella query e in caso fossero zeri annulla il requery
    2)impostare un codice simile nel evento On load della maschera che faccia la stessa cosa di quello sopra.

    Purtroppo non sono riuscito ad implementare nessuno dei due.

    P.S quando parlo di query intendo la mia stringa che t.

    Grazie in anticipo

    Gregorio

  2. #2
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Quote Originariamente inviato da GregVia
    usare un dcount che analizzi i numeri di record nella query e in caso fossero zeri annulla il requery
    Io proverei, anzichè usare la SELECT, usa una query vera e propria, quindi diventa più facile sfruttare la sintassi del DCount.
    ℹ️ Leggi di più su OsvaldoLaviosa ...

  3. #3
    GregVia non è in linea Novello
    Quote Originariamente inviato da OsvaldoLaviosa Visualizza il messaggio
    Io proverei, anzichè usare la SELECT, usa una query vera e propria, quindi diventa più facile sfruttare la sintassi del DCount.
    Se ho capito cosa intendi dovrei cambiare parecchie maschere. Però posso provarci. Altre soluzioni che consistono solo di aggiungere qualche riga al codice sul tasto cerca non te ne vengono in mente?
    Grazie comunque per la celere e puntuale risposta

  4. #4
    Quote Originariamente inviato da GregVia Visualizza il messaggio
    Il problema si verifica quando la stringa è diversa da qualsiasi valore nel campo ricercata cioè quando la query non restituisce nessun record. In questo caso la maschera diventa totalmente bianca e si blocca.
    Si tratta di una maschera non associata? perché vai a metter mano al RecordSource? non puoi sfruttare la proprietà Filter?

  5. #5
    Quote Originariamente inviato da GregVia Visualizza il messaggio
    Dim t As String
    t = ... OrdersRows.Index, ...
    
    Che brutta cosa dare ad un campo il nome Index. E' una parola riservata forse dovresti metterla tra parentesi quadrate perché non faccia storie ma è proprio andarsela a cercare.

  6. #6
    GregVia non è in linea Novello
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Si tratta di una maschera non associata? perché vai a metter mano al RecordSource? non puoi sfruttare la proprietà Filter?
    è una maschera associata, potrei provare la tua soluzione, sono un neofita quindi qualsiasi suggerimento è ben accetto. Come posso impostare valore del filtro in maniera tale che venga preso dal una TextBOX?

    Hai ragione sul campo Index

  7. #7
    Quote Originariamente inviato da GregVia Visualizza il messaggio
    ... Come posso impostare valore del filtro in maniera tale che venga preso dal una TextBOX
    Prendo post trovati con una miniricerca
    https://masterdrive.it/microsoft-acc...-filtri-54457/
    https://masterdrive.it/microsoft-acc...aschera-88984/
    https://masterdrive.it/microsoft-acc...ntinua-102176/

    un paio di pagine Microsoft, che dicono quasi la stessa cosa
    https://support.microsoft.com/en-us/...8-74da413766a5
    https://docs.microsoft.com/en-us/off...lter(property)

    nonché ad un sito "esterno", il primo che m'è risultato dalla ricerca
    https://access-programs.com/ms-acces...lter-property/

  8. #8
    GregVia non è in linea Novello
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Si tratta di una maschera non associata? perché vai a metter mano al RecordSource? non puoi sfruttare la proprietà Filter?
    Ho scelto questa strada, al tasto ho aggiunto il seguente codice che mi intercetta il caso in cui non ci siano valori resettando il filtro.

    Private Sub Command15_Click()
    Me.Filter = "[CustomerPO] like '*" & Text16.Value & "*'"
    Me.FilterOn = True
    Me.Requery
    If Me.RecordsetClone.RecordCount > 0 Then
    Me.Requery
    Else
    Text16.Value = ""
    Me.Filter = "[CustomerPO] like '*" & Text16.Value & "*'"
    Me.FilterOn = True
    Me.Requery
    MsgBox "Errore Ordine non trovato"
    
    Grazie a tutti

  9. #9
    Quote Originariamente inviato da GregVia Visualizza il messaggio
    Private Sub Command15_Click()
    ...
    If Me.RecordsetClone.RecordCount > 0 Then
    Me.Requery
    Else
    ...
    
    Manca un pezzo di codice? non vedo End If. E' un po' contorto, se lo pubblichi tutto vediamo di migliorarlo, facendo requery il numero minimo di volte, cioè solo quando serve.

  10. #10
    GregVia non è in linea Novello
    Ti ringrazio mi spiace farti perdere tempo, comunque si ho dimenticato End IF quando l'ho copiato

    Private Sub Command15_Click()
    Me.Filter = "[CustomerPO] like '*" & Text16.Value & "*'"
    Me.FilterOn = True
    Me.Requery
    If Me.RecordsetClone.RecordCount > 0 Then
    Me.Requery
    Else
    Text16.Value = ""
    Me.Filter = "[CustomerPO] like '*" & Text16.Value & "*'"
    Me.FilterOn = True
    Me.Requery
    MsgBox "Errore Ordine non trovato"
    End If
    
    Immaginavo ci fossero cose ridondanti ma ero abbastanza contento che funzionasse.

    Grazie

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 17
    Ultimo Post: 16-11-2014, 00:32
  2. Maschera vuota da query senza record ...
    Da timoty nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 10-11-2014, 07:32
  3. query controllare se vuota
    Da moro986 nel forum Microsoft Access
    Risposte: 12
    Ultimo Post: 28-03-2014, 18:19
  4. Query vuota???
    Da Tullio nel forum C#
    Risposte: 6
    Ultimo Post: 13-02-2009, 22:11