Microsoft Access

Anonimo
2020-06-06T16:23:44+00:00

Buongiorno, sono un Pediatra alle prime armi con Access e sto creando un mio database personale per la gestione dei pazienti. Ho creato le seguenti Tabelle: 

  • Paziente: con i campi relativi ai dati anagrafici
  • Visita: con i campi relativi ad una visita medica (tipo anamnesi, esame obiettivo….. terapia)

Ho relazionato le due tabelle (Uno (paziente) a molti (visita)) tramite Chiave ID

Ho creato le seguenti maschere: 

  • Dettagli paziente: dove inserisco i dati del paziente
  • Dettagli visita dove inserisco i dettagli della visita medica

Sono in difficoltà a creare una macro che mi permetta, dalla maschera Dettagli paziente, di aprire la maschera Dettagli visita e inserire una nuova visita per quel paziente. Ovviamente se è gia presente una visita me ne deve fare inserire una nuova. 

Avrei anche bisogno di avere una casella di testo che mi restituisca l'età anagrafica in anni e mesi. Ho gia provato ad usare questa funzione ma non so come richiamarla:

Public Function YMDgone(ByVal argdate As Date)

' shows difference between argDate and today

' by Karl Donaubauer 24.1.1999 using the DevAshishian boolean-trick ;-)

Dim Ygone As Integer, Mgone As Byte, Dgone As Byte

If IsNull(argdate) Then Exit Function

Ygone = DateDiff("yyyy", argdate, Date) _

  • Int(Format(Date, "mmdd") < Format(argdate, "mmdd"))

Mgone = Int((DateDiff("m", argdate, Date) _

  • Int(Format(Date, "dd") < Format(argdate, "dd")))) Mod 12

If Day(argdate) <= Day(Date) Then

    Dgone = Format(Date, "dd") - Format(argdate, "dd")

Else

    Dgone = Day(DateSerial(Year(argdate), Month(argdate) + 1, 0)) _

    - Day(argdate) + Day(Date)

End If

YMDgone = Ygone & " year" & IIf(Ygone = 1, " ", "s ") _

& Mgone & " month" & IIf(Mgone = 1, " ", "s ") _

& Dgone & " day" & IIf(Dgone = 1, " ", "s")

End Function

Grazie dell'aiuto. 

Francesco

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

5 risposte

Ordina per: Più utili
  1. Anonimo
    2020-06-09T19:03:05+00:00

    Ora funziona perfettamente!

    Grazie ancora.

    Francesco

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-06-07T17:57:19+00:00

    ciao Francesco,

    su evento load della form in cui inserisci le nuove visite invoca :

    Private Sub Form_Load()

    with me

          if Len(.OpenArgs) > 0 Then

                    .ID=.OpenArgs

          End If

    end with

    End Sub

    Personalizza sempre il nome dei controlli che inserisci nella form mi riferisco a quell'anonimo Command110.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-06-07T15:07:40+00:00

    Grazie Sandro! Problema età sistemato. 

    Purtroppo non riesco ancora a collegare correttamente le due maschere.

    Usando il tuo codice:

    Private Sub Command110_Click()

    DoCmd.OpenForm FormName:="Visita", _

                   view:=acNormal, _

                   datamode:=acFormAdd, _

                   OpenArgs:=Me.ID

    End Sub

    mi apre la scheda visita ma non mi aggiorna i dati (il campo ID rimane vuoto).

    Ti allego due screenshot delle schede (i dati sono fittizi).

    Grazie mille. 

    Francesco.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-06-07T07:42:35+00:00

    Buongiorno, sono un programmatore esperto

    ...  e mi diletto di Pediatria ...

    Function AnniConMesi(ByVal dtNascita)

        Dim rVal

        Dim Anni, Mesi

        Mesi = DateDiff("m", dtNascita, Date)

        Anni = Int(Mesi / 12)

        Mesi = Mesi - Anni * 12

         rVal= "Anni: " & Anni & " Mesi: " & Mesi

        AnniConMesi = rVal

    End Function

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2020-06-07T05:58:13+00:00

    ciao Francesco,

    per quanto all'apertura della form per l'inserimento di una nuova visita direi qualcosa del genere :

    Private Sub cmdNewApp_Click()

    DoCmd.OpenForm FormName:="[Dettagli visita]", _

                   view:=acNormal, _

                   datamode:=acFormAdd, _

                   OpenArgs:=Me.id_paziente

    End Sub

    ovviamente personalizza il nome della form Dettagli visita e del paziente .id_paziente con quelli reali del tuo scenario.

    Per la data di nascita io valuteri qualcosa del genere :

    Public Function age(ByVal dtDB As Date, Optional ByVal dtDate As Date = 0) As Integer

    If dtDate = 0 Then dtDate = Date

    age = DateDiff("yyyy", dtDB, dtDate) + (dtDate < DateSerial(Year(dtDate), Month(dtDB), Day(dtDB)))

    End Function

    Evita di pensare all'uso del campo calcolato direttamente nella tabella, questi campi sono adatti per valore che cambiano poco nel tempo e l'eta cambia tutti i giorni.

    Il copdice è da inserire in un modulo standard e da richiamare nell'orgine riga di una textBox =age([datanascita]).

    Vedi se questo ESEMPIO  di può aiutare.

    Facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento