#Errore su Dlookup

Anonimo
2010-09-11T15:53:48+00:00

Maschera non associata per la selezione dei reports memorizzati in una tabella tblReports.

tblReports:

idReports (contatore); NomeReports (testo); DescrizioneReports (testo)

Possiede una combo cboReports con questo Origine Riga:

SELECT tblReports.idReports, tblReports.NomeReports, tblReports.DescrizioneReports FROM tblReports ORDER BY tblReports.NomeReports;

Colonna associata: 2 (Stringa)

voglio sovrapporre alla combo una casella non associata che mi visualizzi con una Dlookup la descrizione del report invece del Nome.

Ma con questo Origine controllo nella textbox mi dà #Errore:

=DLookUp("DescrizioneReports";"tblReports";"NomeReports='" & nz([cboReports];"NULL"))

Dov'è l'errore?

Grazie in anticipo

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2010-09-11T19:56:45+00:00

Ciao Avatar77,

L'errore consiste nel fatto che non hai chiuso con il delimitatore ' (apice) la costante letterale.

In questo modo chiudi la costante letterale


=DLookUp("DescrizioneReports";"tblReports";"NomeReports='" & nz([cboReports];"NULL") & "'")


però ha poco senso passare il valore testuale 'NULL'  se cboReports è NULL

Puoi fare semplicemente così


=DLookUp("DescrizioneReports";"tblReports";"NomeReports='" & [cboReports] & "'")


Se vuoi passare NULL quando cboReports è NULL allora fai così


=DLookUp("DescrizioneReports";"tblReports";"NomeReports=" & IIf(IsNull([cboReports]);"NULL";"'" &  [cboReports] & "'" ))


Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-09-12T14:08:57+00:00

    è ufficiale, mi stavo perdendo dentro il famoso "workaround" :-)

    Facendo delle prove adesso sembra funzionare anche con quella semplice funzione. (probabilmente non avevo inserito i giusti filtri nella form)

    Restituisce errore 3021: Nessun record corrente, se non imposto correttamente i filtri per le statistiche. Quello lo intercetterò da codice dando un messaggio all'operatore e con un exit sub.

    Per il resto semplifico come mi dicevi tu: imposto la combo a 3 colonne , larghezza colonne: 0cm;0cm;6,57cm colonna associata: 2 ed elimino textbox, a questo punto inutili.

    Grazie Giorgio...la correzione che mi avevi dato sulla Dlookup può comunque essermi utile in futuro.

    Sto per ultimare il mio progetto...probabilmente vi disturberò per avere qualche altro vostro prezioso suggerimento.

    Buona giornata

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-09-12T13:13:47+00:00

    Queto è il codice del pulsante che apre i reports:

    Private Sub plsReports_Click()

    [CUT]

    e funziona correttamente se, come al momento, ho questa larghezza colonne della combo (cboReports): 0cm;6,852cm;6,57cm e la colonna associata:2

    se imposto questi valori come larghezza colonne: 0cm;0cm;6,57cm sempre con colonna associata:2 l'apertura di alcuni reports mi va in errore

    per questo motivo stavo cercando di sovrapporre la textbox che in visualizzazione mostrasse subito la Descrizione del Report e non del Nome.

    Ciao Avatar77,

    al posto di cercare workaround complicati, io indagerei sul perchè viene generato l'errore.

    Che errore di da ?

    Un Semplice


    Private Sub plsReports_Click()

      DoCmd.OpenReport Me!cboReports, acViewPreview

    End Sub

    Funziona ??

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-09-12T12:47:06+00:00

    Queto è il codice del pulsante che apre i reports:

    Private Sub plsReports_Click()

    'DoCmd.OpenReport Me!cboReports, acViewPreview

    ' Purpose:  Opens the report selected in the list box.

        On Error GoTo cmdOpenReport_ClickErr

        If InStr(cboReports, "rptStatistiche") > 0 And (IsNull(Me!txtDataInizio) = True Or IsNull(Me!txtDataFine) = True) Then

        risp = Dialog.Box("Prima di procedere con le statistiche è necessario che i campi dei criteri siano compilati correttamente", 64, "Avviso")

        Else

        If Not IsNull(Me.cboReports) Then

            DoCmd.OpenReport Me.cboReports, IIf(Me.chkPreview.Value, acViewPreview, acViewNormal)

            'Debug.Print cboReports

        End If

        End If

        Exit Sub

    cmdOpenReport_ClickErr:

        Select Case Err.Number

        Case 2501   ' Annullato dall'utente, o Evento NoData.

            Dialog.Box "Annullamento caricamento Report o nessun dato da stampare.", vbInformation, "Informazione"

        Case 3071   'Errore in apertura Reports complessi senza selezione manuale dei Filtri da parte dell'utente

            Dialog.Box "Per aprire il report è necessario selezionare correttamente i filtri nel riquadro Filtri Statistiche!", vbInformation, "Informazione"

        Case Else

            Dialog.Box "Errore " & Err & ": " & Error$, vbInformation, "cmdOpenReport_Click()"

        End Select

        Resume Next

    End Sub

    e funziona correttamente se, come al momento, ho questa larghezza colonne della combo (cboReports): 0cm;6,852cm;6,57cm e la colonna associata:2

    se imposto questi valori come larghezza colonne: 0cm;0cm;6,57cm sempre con colonna associata:2 l'apertura di alcuni reports mi va in errore

    per questo motivo stavo cercando di sovrapporre la textbox che in visualizzazione mostrasse subito la Descrizione del Report e non del Nome.

    Si accettano, ovviamente, consigli e miglioramenti :-)

    Ti ringrazio Giorgio

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-09-12T12:11:56+00:00

    Conosco questo metodo ma ho implementato un sistema dove nella combo devono esserci memorizzati i nomi dei report memorizzati in tabella quindi mi serve solo un "escamotage" :-) che a livello visuale aiuti l'operatore a capire meglio tramite la descrizione quale report sta per aprire!

    Ciao Avatar77,

    scusa ma continuo a non capire a cosa serva la casella testo.

    Se l'origine riga della combo è


    SELECT tblReports.idReports, tblReports.NomeReports, tblReports.DescrizioneReports FROM tblReports ORDER BY tblReports.NomeReports;


    e la colonna associata è la 2 (quindi NomeReports), e la larghezza colonne è 0 cm;0 cm;10 cm allora la combo mostrerà il campo DescrizioneReports ma il valore della combo sarà NomeReports perchè è la colonna associata.

    In questo modo l'utente sceglierà il report in bale alla descrizione e tu potrai aprire il report passando il valore della combo.

    Docmd.OpenRePort Me!cboReports

    Provala!

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento