Impostare finestre di avviso

mercoledì 09 agosto 2006 - 15.16

crily Profilo | Newbie

Ho una maschera con una casella di testo in cui inserire un nome per effettuare una ricerca.
Son già riuscito a mettere un msg che avvisa quando non viene messo alcun testo ma si sbadatamente si avvia la ricerca ,mediante queste righe di codice:

If IsNull(Me![Nom]) Then
strTitolo = "ERRORE"
strMsg = "Inserire un nome per la ricerca"
IntFinestraMsg = vbExclamation
IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
Me!Nom.SetFocus
Else

[Nom] è l'etichetta della casella di testo in cui inserire il testo da cercare

ora volevo inserire una finestra che mi avvisi quando la ricerca non ha trovato nessun record nel db.Ho un ciclo if che mi cerca i vari record e successivamente viene aperta una maschera con un elenco dei risultati.Qualcuno sa aiutarmi?

MarKonE Profilo | Guru

Ciao potresti postare il codice completo del ciclo IF ?

Se lavori con i recordset puoi utilizzare la proprietà RecordCount....

Potresti verificare che sia diversa da zero e in caso contrario far comparire un'altra messagebox.

CIAO
My Blog... http://blogs.dotnethell.it/Mark/

crily Profilo | Newbie

il codice completo è il seguente(ho omesso le dichiarazioni e l'apertura succesivamente di una maschera)

If IsNull(Me![Nom]) Then
strTitolo = "ERRORE"
strMsg = "Inserire un nome per la ricerca"
IntFinestraMsg = vbExclamation
IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
Me!Nom.SetFocus
Else


def = "SELECT ARTISTA.[NOME] AS ARTISTA_NOME, ALBUM.[TITOLO], ALBUM.[ANNO], ALBUM.[RIF_RACCOLTA], ALBUM.[NUM_IMMAGINE] FROM ARTISTA INNER JOIN ALBUM ON ARTISTA.[NOME] = ALBUM.[NOME]"
If ([Forms]![CERCA_x_NOME_ARTISTA]![Nom] <> "") Then

def = def & " where Artista.[NOME] Like ""*" & [Forms]![CERCA_x_NOME_ARTISTA]![Nom] & "*"""

Else
def = def & "AND [NOM] Like ""*" & [Forms]![CERCA_x_NOME_ARTISTA]![Nom] & "*"""

End If

Ho rimediato questo codice dal sitocomune,ma non so cosa sono tutti i campi,tra cui i recordcount che dicevi tu,ma anche chiaveRic e altri...
Comunque come dicevi tu consiste in un ciclio if...

DoCmd.Hourglass True
Forms!Appuntamenti.SetFocus
DoCmd.ApplyFilter , ChiaveRic
If Forms!Appuntamenti.RecordsetClone.RecordCount = 0 Then
DoCmd.Hourglass False
strTitolo = "Ricerca con esito negativo"
strMsg = "Non esistono appuntamenti che soddisfano questi criteri"
IntFinestraMsg = vbExclamation
IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
DoCmd.ShowAllRecords
End If

MarKonE Profilo | Guru

>Ho rimediato questo codice dal sitocomune,ma non so cosa sono
>tutti i campi,tra cui i recordcount che dicevi tu,ma anche chiaveRic
>e altri...
>Comunque come dicevi tu consiste in un ciclio if...
>
> DoCmd.Hourglass True

Importa il cursore del mouse come clessidra.

> Forms!Appuntamenti.SetFocus
> DoCmd.ApplyFilter , ChiaveRic

Filtra i record....

>If Forms!Appuntamenti.RecordsetClone.RecordCount = 0 Then
> DoCmd.Hourglass False
> strTitolo = "Ricerca con esito negativo"
>strMsg = "Non esistono appuntamenti che soddisfano questi criteri"
> IntFinestraMsg = vbExclamation
> IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
> DoCmd.ShowAllRecords
> End If
>
>

Ecco l'approccio che hanno usato :
http://www.chazelleconsulting.com/Resources/Database/create_a_search_box.htm

Cerca nella guida il termine RecordSet. Capirai molte cose.

CIAO
My Blog... http://blogs.dotnethell.it/Mark/

crily Profilo | Newbie

quando richiamo recordset e lancio una ricerca che so che nn trova alcun risultato mi dice che il metodo non è riconosciuto!!
Sempre collegato alla casella di testo:terminata una ricerca son riuscito a cancellare la casella di testo ma è possibile far si che il cursore sia già nella casella di testo che lampeggia....per evitare ogni volta di cliccarci sopra per inserire una parola

MarKonE Profilo | Guru

>quando richiamo recordset e lancio una ricerca che so che nn
>trova alcun risultato mi dice che il metodo non è riconosciuto!!

se invece ci sono risultati nessun problema ?

>Sempre collegato alla casella di testo:terminata una ricerca
>son riuscito a cancellare la casella di testo ma è possibile
>far si che il cursore sia già nella casella di testo che lampeggia....per
>evitare ogni volta di cliccarci sopra per inserire una parola

Me!Nom.SetFocus .... l' avevi già utilizzata questa istruzione.
My Blog... http://blogs.dotnethell.it/Mark/

crily Profilo | Newbie

X recordSet non funge perchè sbaglio io.Le guide non le capisco!!!

Risolto x cursore!

solo un info:dato che ora la ricerca per nome artista è ok,devo farne una per ricerca da titolo album.ho creato query,fatto un copia incolla delle maschere cambiando tutti i riferimenti...e alla fine non va....ma in access non va bene il copia incolla?ogni volta devo fare tutto da capo?

MarKonE Profilo | Guru

>X recordSet non funge perchè sbaglio io.

Scusa ma così è un po' difficile aiutarti, non trovi ?

>Le guide non le capisco!!!
MSDN è una fonte immensa di info.....basta superare lo scalino iniziale....

>Risolto x cursore!

Ottimo

>solo un info:dato che ora la ricerca per nome artista è ok,devo
>farne una per ricerca da titolo album.ho creato query,fatto un
>copia incolla delle maschere cambiando tutti i riferimenti...e
>alla fine non va....ma in access non va bene il copia incolla?ogni
>volta devo fare tutto da capo?

Col copia incolla puoi fare tutto..... e col rowsource avresti potuto modificare solo la parte della query che riporta il nome del controllo (da artista a titolo).
Così a sensazione direi che da qualche parte rimane ancora qualche riferimento al vecchio nome della maschera copiata.
E' possibile ?
My Blog... http://blogs.dotnethell.it/Mark/

crily Profilo | Newbie

si lo so che è difficile aiutarmi...infatti tu hai fatto fin troppo!Spero che questi miei stupidi dubbi possano servire anche ad altri

ma cos'è msdn?la linea in guida di access o un sito??

il mio problema è che non capisco dove mettere mano con rowsource e recordset....sempre nel codice vba?

Ho provato a modificare il codice:

Dim def As String
def = "SELECT ARTISTA.[NOME] AS ARTISTA_NOME, ALBUM.[TITOLO], ALBUM.[ANNO], ALBUM.[RIF_RACCOLTA], ALBUM.[NUM_IMMAGINE] FROM ARTISTA INNER JOIN ALBUM ON ARTISTA.[NOME] = ALBUM.[NOME]"
If ([Forms]![CERCA_x_NOME_ARTISTA]![Nom] <> "") Then

def = def & " where Artista.[NOME] Like ""*" & [Forms]![CERCA_x_NOME_ARTISTA]![Nom] & "*"""

Else
def = def & "AND [NOM] Like ""*" & [Forms]![CERCA_x_NOME_ARTISTA]![Nom] & "*"""

End If

DoCmd.Hourglass True
Forms!CERCA_x_NOME_ARTISTA!Nom.SetFocus
DoCmd.ApplyFilter, def
If Forms!CERCA_x_NOME_ARTISTA.RecordsetClone.RecordCount = 0 Then
DoCmd.Hourglass False
strTitolo = "Ricerca con esito negativo"
strMsg = "Non esistono album"
IntFinestraMsg = vbExclamation
IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
DoCmd.ShowAllRecords
End If

Ma quando inserisco un nome che non c'è dice che non può applicare il filtro.Ma non è giusto cosi?

MarKonE Profilo | Guru

>si lo so che è difficile aiutarmi

E' difficile se non spieghi il problema che hai

>Spero che questi miei stupidi dubbi possano servire anche
>ad altri

Non esistono dubbi stupudi

>
>ma cos'è msdn?la linea in guida di access o un sito??
>

Sta per MicroSoft Developer Network.... e in pratica consiste in un gigantesco database di documentazione relativa ai prodotti microsoft, da sql a visual studio, da office a sharepoint ecc.
Vedi qui la homepage in italiano :
http://www.microsoft.com/italy/msdn/default.mspx


>il mio problema è che non capisco dove mettere mano con rowsource
>e recordset....sempre nel codice vba?

Sempre da codice. Però ripeto.. senza un dettaglio preciso è difficile suggerirti come muoverti.

CIAO
My Blog... http://blogs.dotnethell.it/Mark/

crily Profilo | Newbie

>Sempre da codice. Però ripeto.. senza un dettaglio preciso è >difficile suggerirti come muoverti.

Avevo modificato la mia risposta sopra inserendo il codice...forse hai letto il vecchio msg!Altrimenti che altri dettaglio posso dire per non dilungarmi sempre

MarKonE Profilo | Guru

>Avevo modificato la mia risposta sopra inserendo il codice...forse
>hai letto il vecchio msg!
esatto

>Altrimenti che altri dettaglio posso dire per non dilungarmi sempre

non è un problema se ti dilunghi... il problema è se dici troppo poco



Tornando al problema.... se non capisco male l'errore lo ottieni solamente quando cerchi un nome non presente in tabella, giusto ?

Qual è il messaggio esatto relativo al filtro ?

Qual è la riga di codice evidenziata quando ottieni l'errore ?

Ciao


My Blog... http://blogs.dotnethell.it/Mark/

crily Profilo | Newbie

ALLORA FUORI DALL'IF MI DAVA ERRORE SULLA RIGA: DoCmd.ApplyFilter , def.
oRA HO PROVATO AD INSERIRE IL BLOCCO ALL'INTERNO DELL'IF PERCHè GIUSTAMENTE IL CONTROLLO DEVE FARLO OGNI VOLTA CHE SI IMETTE QUALCOSA NEL CAMPO NOM....MA NULLA:ORA NON DICE NULLA.sE METTO UN NOME CHE NON ESISTE VISUALIZZA LA MASCHERA DEI RISULTATI VUOTA
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5