Che nervi! Ora la ricerca non funziona! Se non compilo nessuno dei campi il Report presenta solo il primo Record, altrimenti appare vuoto!
Dimmi tu dove ho sbagliato:
SCARICA FILE
Moderatori: Dylan666, hydra, gahan
SELECT * FROM Libri
WHERE NZ([Autore/i]) Like "*" & [Forms]![RICERCALibri]![autore/i] & "*" AND
NZ(Titolo) Like "*" & [Forms]![RICERCALibri]![titolo] & "*" AND
NZ(Autorità) Like "*" & [Forms]![RICERCALibri]![autorità] & "*" AND
NZ(Provvedimento) Like "*" & [Forms]![RICERCALibri]![provvedimento] & "*" AND
NZ(Numero) Like "*" & [Forms]![RICERCALibri]![numero] & "*" AND
NZ(Periodico) Like "*" & [Forms]![RICERCALibri]![periodico] & "*" AND
NZ(Collana) Like "*" & [Forms]![RICERCALibri]![collana] & "*" AND
NZ([Curatore/i]) Like "*" & [Forms]![RICERCALibri]![curatore/i] & "*" AND
NZ([Luogo Di Edizione]) Like "*" & [Forms]![RICERCALibri]![luogo di edizione] & "*";
archimede ha scritto:Francamente mi sembra un po' inusuale una maschera di ricerca che contiene TUTTI i campi del record: ma se è questo che vuole il cliente...
Articoli è una mia dimenticanza (aggiungi da qualche parte NZ(Articoli) Like "*" & [Forms]![RICERCALibri]![Articoli] & "*" AND), gli altri li ho omessi per il problema 1): devi decidere se invece di like vuoi = < > ecc.Dylan666 ha scritto:molti campi (Articoli, Tomo, Parte e altri) restituiscono TUTTI i record anche se metto valori che non sono contenuti i NESSUN record...
La funzione NZ (ma hai qualcosa di personale contro il tasto F1? ) converte il valore Null in 0 oppure in una stringa vuota. Il nome della tabella è proprio dopo il FROM, per cui non so cosa intendi...Dylan666 ha scritto:PS: NZ a cosa serve? Perché nella query non hai indicato la tabella?
archimede ha scritto:Articoli è una mia dimenticanza (aggiungi da qualche parte NZ(Articoli) Like "*" & [Forms]![RICERCALibri]![Articoli] & "*" AND)
gli altri li ho omessi per il problema 1): devi decidere se invece di like vuoi = < > ecc.
Per tutti vorrei "=" (cioè valore da ricercare identico a quello imesso), quindi?La funzione NZ (ma hai qualcosa di personale contro il tasto F1? )
Assolutamente no, ma digitando NZ l'help non da risultati, e non sapendo che fosse non sapevo DOVE cercare...Il nome della tabella è proprio dopo il FROM, per cui non so cosa intendi...
Strano, io lo trovo (A97)...Dylan666 ha scritto:Assolutamente no, ma digitando NZ l'help non da risultati, e non sapendo che fosse non sapevo DOVE cercare...
Mi sa che le cose si stanno complicando un po' troppo. Proviamo un altro approccio:Dylan666 ha scritto:Alla luce della mia risposta sulla domanda like (cioè che qualunque sia il dato immesso, numerico, data ecc io voglio che si trovino solo i record esattamente corrispondenti) come devo riscrivere il SQL?
Private Sub Comando41_Click()
On Error GoTo Err_Comando41_Click
Dim stDocName As String, strSQL As String, myWhere As String
Dim ctl As Control, fieldType As Long
strSQL = "select * from libri"
myWhere = ""
For Each ctl In Me.Controls
If (ctl.ControlType = 109) Then
fieldType = CurrentDb().TableDefs("libri").Fields(ctl.Name).Properties("Type")
If (fieldType = 10) Then ' Testo
If (Nz(ctl.Value) > " ") Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "] like '*" & ctl.Value & "*'"
Else
myWhere = myWhere & " AND [" & ctl.Name & "] like '*" & ctl.Value & "*'"
End If
End If
ElseIf (fieldType = 8) Then ' Data
If (Nz(ctl.Value) > " ") Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "]=#" & ctl.Value & "#"
Else
myWhere = myWhere & " AND [" & ctl.Name & "]=#" & ctl.Value & "#"
End If
End If
ElseIf (fieldType = 4) Then ' Numerico
If (Nz(ctl.Value) > 0) Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "]=" & ctl.Value
Else
myWhere = myWhere & " AND [" & ctl.Name & "]=" & ctl.Value
End If
End If
End If
End If
Next ctl
strSQL = strSQL & myWhere
stDocName = "Libri"
DoCmd.OpenReport stDocName, acPreview, strSQL
Exit_Comando41_Click:
Exit Sub
Err_Comando41_Click:
MsgBox Err.Description
Resume Exit_Comando41_Click
End Sub
archimede ha scritto:1) Controlla che i nomi dei campi della maschera siano uguali ai quelli della tabella
2) Cambia il codice del bottone con questo (questa volta scritto da me):
[...]
Se funziona puoi buttare la query.
leonard ha scritto:Dylan vorrei inviarti una bozza del DB che hai chiesto,solo che non so come inviarlo,come allegato, visto che non conosco, il tuo indirizzo e-mail.Non voglio essere scorteso con gli altri ma non conosco altri modi per inviare il file.
Dimenticanza mia: metti la tabella come origine record del report e dovresti poter eliminare la query. Ho anche notato un paio di errori nel codice da me postato; questo dovrebbe essere definitivo:Dylan666 ha scritto:Veramente se butto la queri non funziona più perché la cerca al momento di creere il report...
Private Sub Comando41_Click()
On Error GoTo Err_Comando41_Click
Dim stDocName As String, strSQL As String, myWhere As String
Dim ctl As Control, fieldType As Long
strSQL = "select * from libri"
myWhere = ""
For Each ctl In Me.Controls
If (ctl.ControlType = 109) Then
fieldType = CurrentDb().TableDefs("libri").Fields(ctl.Name).Properties("Type")
If (fieldType = 10 Or fieldType = 12) Then ' Testo
If (Nz(ctl.Value) > " ") Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "] like '*" & ctl.Value & "*'"
Else
myWhere = myWhere & " AND [" & ctl.Name & "] like '*" & ctl.Value & "*'"
End If
End If
ElseIf (fieldType = 8) Then ' Data
If (Nz(ctl.Value) > " ") Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "]=#" & ctl.Value & "#"
Else
myWhere = myWhere & " AND [" & ctl.Name & "]=#" & ctl.Value & "#"
End If
End If
ElseIf (fieldType = 4 Or fieldType = 3) Then ' Numerico
If (Nz(ctl.Value) > 0) Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "]=" & ctl.Value
Else
myWhere = myWhere & " AND [" & ctl.Name & "]=" & ctl.Value
End If
End If
End If
End If
Next ctl
strSQL = strSQL & myWhere
stDocName = "Libri"
DoCmd.OpenReport stDocName, acPreview, strSQL
Exit_Comando41_Click:
Exit Sub
Err_Comando41_Click:
MsgBox Err.Description
Resume Exit_Comando41_Click
End Sub
leonard ha scritto:si grazie, spero che le informazioni del tuo db,da me modificato,ti siano state utili
leonardo
leonard ha scritto:Non ho capito cosa cambia visualizzare i dati in una maschera invece che in un report;
non puoi compilare più di tre campi.Ora sta a te decidere quali campi vuoi usare per effetuare le tue ricerche cambiando l'ordine dei criteri
Non so a che esigenze ti riferisci, ma se intendi modifiche alla maschera di ricerca dovresti poter aggiungere e togliere campi a tuo piacimento senza toccare il codice. Le uniche limitazioni sono:Dylan666 ha scritto:L'unico mio rammarico e di non aver potuto usare le query, che magari avrei imparato a usare e modificare (per esigenze che nasceranno inseguito magari) più facilmente.
Access 2003: creare maschera per inserire dati su più tabell Autore: gamma_ray |
Forum: Applicazioni Office Windows Risposte: 1 |
Supporto per Macro Query import pdf to excel Autore: JanVathek |
Forum: Applicazioni Office Windows Risposte: 10 |
Access 2003: funzione per contare dati Autore: gamma_ray |
Forum: Applicazioni Office Windows Risposte: 1 |
Access 2003: contatore maschera sballato Autore: gamma_ray |
Forum: Applicazioni Office Windows Risposte: 1 |
Condizioni IIF nelle Query di Access Autore: GelriccaSud |
Forum: Applicazioni Office Windows Risposte: 2 |
Visitano il forum: Nessuno e 61 ospiti