Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Impostare finestre di avviso
mercoledì 09 agosto 2006 - 15.16
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
crily
Profilo
| Newbie
31
messaggi | Data Invio:
mer 9 ago 2006 - 15:16
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
2.074
messaggi | Data Invio:
mer 9 ago 2006 - 15:23
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
31
messaggi | Data Invio:
mer 9 ago 2006 - 15:31
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
2.074
messaggi | Data Invio:
mer 9 ago 2006 - 16:12
>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
31
messaggi | Data Invio:
mer 9 ago 2006 - 17:59
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
2.074
messaggi | Data Invio:
mer 9 ago 2006 - 18:02
>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
31
messaggi | Data Invio:
mer 9 ago 2006 - 20:04
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
2.074
messaggi | Data Invio:
gio 10 ago 2006 - 01:04
>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
31
messaggi | Data Invio:
gio 10 ago 2006 - 09:08
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
2.074
messaggi | Data Invio:
gio 10 ago 2006 - 09:31
>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
31
messaggi | Data Invio:
gio 10 ago 2006 - 09:38
>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
2.074
messaggi | Data Invio:
gio 10 ago 2006 - 14:50
>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
31
messaggi | Data Invio:
gio 10 ago 2006 - 15:31
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
Torna su
Stanze Forum
Elenco Threads
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 !