[RISOLTO] messaggio poupop compleanno

di il
21 risposte

[RISOLTO] messaggio poupop compleanno

Giorno rieccomi alla ribalta per un altro aiutino, (come da oggetto) ho creato una query "QCompleanni_personale" estrapolata dalla tabella "dati_personale" ho creato una piccola maschera "msg_compleanni" ora da quello che vorrei fare e che aprendo il database mi esca il il messaggio del personaggio che oggi compie gli anni, da quello che ho capito dovrei impostare prima un controllo delle date, un check all'apertura del database poi il risultato lo dovrebbe visualizzare sulla maschera, e anche se il cognome e nome sono campi separati devo far in modo che risultino nella stessa riga potete instradarmi suquesto argomento? ho cercato anche su internet ma non vedo le cose chiare, anche se mi fornite dei link con esempi pratici simili poi mi ci sbatto la testa un po prima di chiedere consultarvi in caso di inghippo,grazie per ora

21 Risposte

  • Re: [RISOLTO] messaggio poupop compleanno

    Ciao, io procederei in questo modo :

    macro autoexec con codice esegui funzione:
    b_check()

    in un modulo STD:

    Public Function b_check()
    Dim rst As DAO.Recordset
    Set rst = DBEngine(0)(0).OpenRecordset("TuaTabella")

    Do While Not rst.EOF
    If rst("tuoCampoBirth") = Date Then DoCmd.OpenForm "TuaFor", acNormal, , , , , rst("tuoCampoNome") & " " & rst("TuoCampoCognome")
    Exit Do
    Loop

    Set rst = Nothing
    End Function

    su apertura della maschera chiamata :

    Me.tuaTextBox= Me.OpenArgs
    End Function

    con openArg, passi alla maschera chiamata il nome e cognome individuato nel ciclo di scorrimento recordset.
    Aprendo il db la macro autexec lancia la funzione che controlla il campo data.
    potresti procedere anche sfruttando la funzione sui domini dLookup ma a me nn piace molto.
    Un saluto.




    meglio se così....altrimenti va in loop :


    Dim i As Long
    Dim rst As DAO.Recordset
    Set rst = DBEngine(0)(0).OpenRecordset("TUA_TABELLA")

    Do While Not rst.EOF
    If Format(rst("TUOCAMPO"), "d/mm") = Format(Date, "d/mm") Then
    DoCmd.OpenForm "tuaForm", acNormal, , , , , rst("tuoCampoNome") & " " & rst("tuoCampoCognome")
    DoEvents
    For i = 1 To 100000000: Next i
    DoCmd.Close acForm, "tuaForm"
    End If
    rst.MoveNext
    Loop

    Set rst = Nothing
  • Re: [RISOLTO] messaggio poupop compleanno

    Fare una query con già il parametro della data non ti piaceva....?
  • Re: [RISOLTO] messaggio poupop compleanno

    Non so come tu hai creato il campo Compleanno. Io ho fatto un test con una tabella Anagrafica contenente il campo DataNascita con il seguente formato d/m/aaaa e di conseguenza ho proceduto così:
    1. Crea una query in visualizzazione struttura dove importare la tabella Anagrafica
    2. Importa i campi Nome, Cognome, DataNascita
    3. Nella 4a colonna, in corrispondenza di Campo, scrivi:
    Compleanno: Day([DataNascita]) & "/" & Month([DataNascita])
    4. Sempre nella 4a colonna, in Criteri, scrivi:
    Like Day(Date()) & "/" & Month(Date())
    5. Salva la query con nome CompleanniOggi
    6. Crea una maschera che poggia sulla query CompleanniOggi, magari la imposti come Maschera continua e ci metti in alto una etichetta con su scritto un testo del tipo "Oggi è il compleanno di..."
    7. Salva la maschera con nome M_CompleanniOggi
    8. Non so se hai già una macro Autoexec, se sì devi aggiungere l'istruzione che segue, altrimenti devi crearla e nominarla Autoexec...segui:
    9. Apri la colonna Condizioni e ci scrivi la seguente espressione:
    DCount("*";"CompleanniOggi";"")>0
    10. Accanto, nella colonna Azioni, scrivi:
    • ApriMaschera
      Nome maschera: M_CompleannoOggi
    11. Salva la macro Autoexec
  • Re: [RISOLTO] messaggio poupop compleanno

    Grazie per i vostri consigli per ora, cmq pure io mi sto spremendo per non avere a pappa pronta, quindi dopo spunti presi dalla rete e dal forum (e una buona dose di intuto che finora non ha fruttato) sto procedendo in questo modo:

    nella query "QCompleanni_personale"
    oltre alle colonne "grado","cognome","nome","Data_nascita" ho aggiunto 1 colonna con i seguenti parametri.

    campo: DatNQuestAnno: DateAdd("aaaa";Nz(DateDiff("aaaa";[Data_Nascita];Date()));[Data_Nascita])
    criteri: Between Date() and Date()+10

    questi dati con un margine di 10 giorni di preavviso.
    quindi cio mi restituisce la query con nominativi e date compleanno con 10 giorni in anticipo,
    fin qui un minimo di soddisfazione ce l'ho!
    dato che nel mio database ho una maschera "Intro" temporizzata a 4000ms che chiudendosi apre la maschera principale del database, credo che da li dovrei fare il check della query che poi mi deve restituire in primo piano il messaggio del compleanno, mi instradate???
  • Re: [RISOLTO] messaggio poupop compleanno

    nanodesigner ha scritto:


    quello che vorrei fare e che aprendo il database mi esca il il messaggio del personaggio che oggi compie gli anni

    nanodesigner ha scritto:


    dato che nel mio database ho una maschera "Intro" temporizzata a 4000ms che chiudendosi apre la maschera principale del database, credo che da li dovrei fare il check della query che poi mi deve restituire in primo piano il messaggio del compleanno, mi instradate???
    Ti abbiamo consigliato di applicare la macro Autoexec perchè avevi richiesto che la FinestraMessaggio oppure l'apertura maschera M_CompleanniOggi apparisse all'apertura del database.
    Se vuoi che ciò accada in un momento diverso, devi nominare esattamente tutte le maschere prima/dopo, raccontare passo passo cosa vuoi che accada ecc...sinceramente la seconda affermazione non l'ho capita.
  • Re: [RISOLTO] messaggio poupop compleanno

    Si grazie ho visto, ma appena ho postato il mio di messaggio mi so trovato subito in coda l'altro altrimenti lo leggevo prima, grazie cmq faccio delle prove e vi faccio sapere per la seconda parte del messaggio era per dire che ho chreato già una macro "AutoExec" che all'apertura del database apre per prima una maschera introduttiva chiamata "INTRO" che fa comparire il nome del databse e la versione, e poi dopo un tot di secondi si chiude, e apre in automatico la maschera principale del database che l'ho chiamata "GURE" (Gestione, Utenti, REparto). Giustamente la verifica del compleanno non deve partire appena apro il database, e neanche quando e aperta la maschera intro, altrimenti in quei secondi che rimane aperta il messaggio si sovrapporrebbe alla maschera intro, ma il controllo dovrebbe partire all'atto che la maschera gure si apra. ecco scusate se mi so spiegato male, cmq ora applico vostri consigli e se ho intoppi vi fo sapere grazie
  • Re: [RISOLTO] messaggio poupop compleanno

    nanodesigner ha scritto:


    il controllo dovrebbe partire all'atto che la maschera gure si apra
    Si tratta semplicemente di spostare l'azione macro ApriMaschera (M_CompleanniOggi) subito dopo l'apertura della maschera Gure. Se tutte queste operazioni di aperture maschere le hai gestite con macro, è più facile da organizzare. Se le hai create con codici VBA, devi trovare la maniera di inserire correttamente l'azione che ti ho suggerito con analogo codice posizionato nel punto giusto.
  • Re: [RISOLTO] messaggio poupop compleanno

    OsvaldoLaviosa ha scritto:


    nanodesigner ha scritto:


    il controllo dovrebbe partire all'atto che la maschera gure si apra
    Si tratta semplicemente di spostare l'azione macro ApriMaschera (M_CompleanniOggi) subito dopo l'apertura della maschera Gure. Se tutte queste operazioni di aperture maschere le hai gestite con macro, è più facile da organizzare. Se le hai create con codici VBA, devi trovare la maniera di inserire correttamente l'azione che ti ho suggerito con analogo codice posizionato nel punto giusto.
    La maschera intro è gestita da una macro autoexec, ma una volta aperta, poi scatta il vba per la chiusura temporizzata e l'apertura della maschera principale GURE

    quello che non trovo (come mi indichi te) dove inserire nella macro o anche in vba la condizione che gli indica che all'apertura della maschera GURE Deve avviarsi il messaggio compleanno,.
    credo che basterebbe anche un comando che indichi al messaggio di aprirsi dopo un determinato tempo dall'avvio del database tanto mi calcolo il tempo tra la schermata dell'intro e la schermata della maschera gure.

    Sto farneticando ho ha un minimo di senso quello che dico?? e per capirci, me devo spremere anche io mica solo chiedere sempre, o sbaglio?
  • Re: [RISOLTO] messaggio poupop compleanno

    Riepilogando logicamente, tu hai la seguente sequenza di azioni:
    1) macro Autoexec che ApreMaschera Intro
    2) Attesa di tot secondi
    3) Chiudi maschera Intro
    4) ApriMaschera GURE
    5) ...in questo punto aggiungi l'azione ApriMaschera M_CompleanniOggi
    Per mettere la condizione DCount(ecc...)>0, devi aprire la struttura della macro che ApreMaschera M_CompleanniOggi e cliccare sul tasto in alto Condizioni. Si apre una colonna (Condizione) a sinistra dove, in corrispondenza dell'azione ApriMaschera M_CompleanniOggi ci scrivi la sintassi DCount che ti ho segnalato. Io so usare le macro, ma non so usare VBA, quindi non ti so dire come avviene la traduzione in codice di quello che ti ho esposto logicamente.
    Il punto 5) significa:
    Se la query CompleanniOggi ha un numero di record >0, allora ApriMaschera M_CompleanniOggi
    Se la query CompleanniOggi ha un numero di record=0, l'azione macro non viene messa in moto, quindi non si apre la maschera M_CompleanniOggi
  • Re: [RISOLTO] messaggio poupop compleanno

    Ok smanettandoci e sui consigli di OsvaldoLaviosa (grazie della pazienza) so riuscito a fare delle prove aggiungendo nella macro autoexec altre condizioni, vi riporto la macro autoexec sotto:_



    questa però si apre però allavvio del database, quindi si sovrappone all' intro e non dopo che si apre la maschera gure ora sto cercando di trovare il modo per fare ciò.

    apparte il problemino descritto però la maschera Msg_compleanni si apre, ma ho notato un problemino secondario, cioè nella query QCompleanni Personale quando la visualizzo ho i tre campi "IDgr","Cognome","Nome" (essendo militare ce il campo grado), e effettivamente esce il grado con il cognome e il nome.
    Ora nella maschera Msg_Compleanno ho inserito la casella di testo e come origine controllo ho inserito "=[IDgr] & " " & [Cognome] & " " & [Nome]" per concatenare i campi e aver la sequenza grado, cognome nome, ma mentre nella query si visualizza correttamente, nell'etichette mi da il num id, il cognome, e il nome, e non il grado cognome nome, cioè al posto del grado mi esce il numero sapete spiegarmi il motivo?
  • Re: [RISOLTO] messaggio poupop compleanno

    questa però si apre però allavvio del database, quindi si sovrappone all' intro e non dopo che si apre la maschera gure ora sto cercando di trovare il modo per fare ciò.
    Ovvio, l'hai messa subito dopo ApriMaschera Intro. Leggi bene la mia sequenza di azioni macro e vedi dove ho messo ApriMaschera Msg_Compleanni.
    apparte il problemino descritto però la maschera Msg_compleanni si apre, ma ho notato un problemino secondario, cioè nella query QCompleanni Personale quando la visualizzo ho i tre campi "IDgr","Cognome","Nome" (essendo militare ce il campo grado), e effettivamente esce il grado con il cognome e il nome.
    Ora nella maschera Msg_Compleanno ho inserito la casella di testo e come origine controllo ho inserito "=[IDgr] & " " & [Cognome] & " " & [Nome]" per concatenare i campi e aver la sequenza grado, cognome nome, ma mentre nella query si visualizza correttamente, nell'etichette mi da il num id, il cognome, e il nome, e non il grado cognome nome, cioè al posto del grado mi esce il numero sapete spiegarmi il motivo?
    Molto probabilmente il campo IDgr nella query è una casella combinata che guarda valori di una altra tabella (suppongo Gradi). Devi sempre considerare che, al di sotto di una casella combinata, c'è pur sempre un valore, di solito numerico, che comanda tutto il discorso in ballo. Dovresti includere nella query la tabella di origine Gradi, trascinare il campo Grado e riorganizzare tutto il tuo discorso sul campo Grado diretto.
    Oppure sfruttare la proprietà Column(1) associata al campo IDgr. Cioè, nell'intera espressione che avresti creato, anzichè considerare IDgr, devi indicare [IDgr].[Column](1) (sperando sia la colonna giusta!)
  • Re: [RISOLTO] messaggio poupop compleanno

    OsvaldoLaviosa ha scritto:


    Molto probabilmente il campo IDgr nella query è una casella combinata che guarda valori di una altra tabella (suppongo Gradi). Devi sempre considerare che, al di sotto di una casella combinata, c'è pur sempre un valore, di solito numerico, che comanda tutto il discorso in ballo. Dovresti includere nella query la tabella di origine Gradi, trascinare il campo Grado e riorganizzare tutto il tuo discorso sul campo Grado diretto.
    Oppure sfruttare la proprietà Column(1) associata al campo IDgr. Cioè, nell'intera espressione che avresti creato, anzichè considerare IDgr, devi indicare [IDgr].[Column](1) (sperando sia la colonna giusta!)
    infatti stavo lavorando su questo, giustamente la query estrapola i dati da una tabelle "Dati_Personale" dove il campo "IDgr" e collegato ad una tabella "Gradi" che ha i campi IDgr e Grado

    vi tengo aggiornati grazie
  • Re: [RISOLTO] messaggio poupop compleanno

    Aggiorno il post!! (sempre utile a qualcuno)

    smanettando e cercando di riflettere sulla cosa ho risolto il fatto che la maschera Msg_compleanno funzionava ma essendo l'istruzione messa in aggiunta all'interno della macro Autoexec si apriva quando aprivo il database e non nell' ordine che volevo, cioe quando caricava la maschera gure, quindi ho modificato la macro Autoexec, riportandola a come era stata creata inizialmente, con un semplice azione "Apri maschera" nome maschera "intro"
    Quindi ho tolto il resto, cioè l'azione "If" con la stringa "dcount... ecc".
    dopodiche ho creato una nuova macro "Open_msg_compeanno" dove ho iniziato con l'azione "If"e la stringa "dcount... ecc" e un azione "ApriMaschera" con nome maschera "Msg_compleanno".

    Ho aperto in modalità struttura La maschera principale "GURe" e sul pannello evento alla voce "su apertura" ho inserito la macro "Open_msg_compeanno" di conseguenza dopo che si apre gure, lui legge la macro! solo piccolo problema la maschera di compleanno si apre ma rimane sotto la maschera gure, quindi mi tocca spostarla a mano. come fare a farla comparire sopra, cioe in primo piano?

    Altri consigli? dai non sto scroccando ci sto ragionando pure io
  • Re: [RISOLTO] messaggio poupop compleanno

    nanodesigner ha scritto:


    solo piccolo problema la maschera di compleanno si apre ma rimane sotto la maschera gure, quindi mi tocca spostarla a mano. come fare a farla comparire sopra, cioe in primo piano?
    Prova l'azione macro SpostaRidimensiona.
Devi accedere o registrarti per scrivere nel forum
21 risposte