Access 2003 [pag. 3]

Capitano di Vascello
protea
Mi piace
- 21/41
Davidino ha scritto:
Buongiorno Protea, grazie per la risposta. Si mi servirebbe in automatico. Perchè dici che il 31 e l'1 gennaio non possono essere registrati? Gli infortuni sono circa trecento l'anno. Cosa sono i near miss UT
Ho trovato qualcosa di quel che vorrei qui https://forum.masterdrive.it/access-79/access-numerazione-progressiva-fatture-inizio-anno-fattura-numero-1-a-49600/ ma sinceramente non ho ben capito dove mettere i codici e sopratutto quale e' quello che fa al caso mio.
Buonagiornata


L'esempio che tu hai riportato, non crea un protocollo automatico.
Quello che lui chiama IDFattura, è un campo, impostato come contatore che poi viene definito come chiava primaria (questo consente di gestire meglio gli indici).
Il problema del contatore è che non è ripetibile, ovvero non lo puoi azzerare con l'anno nuovo.

Infatti lui crea un campo che chiama NumeroFattura, di tipo testo in cui dovrà inserire a mano il numero della fattura.
etiam capillum unum habet umbram suam
Capitano di Fregata
Davidino (autore)
Mi piace
- 22/41
protea ha scritto:

La domanda per il 31 dic. e 1 gen. é perché se lo si fa in automatico, che prende l'anno corrente, ti trovi a gestire il caso in cui un infortunio è capitato il 31-12-2013, ma lo registri il 01-01-2014. quale protocollo gli assegni?, la logica vorrebbe l'ultimo del 2013, ma in automatico ti propone il primo del 2014

questo a meno che non venga richiesto con apposita finestra di dialogo, l'anno di riferimento.


Allora i near miss, che poi sarebbero nel nostro caso i malati giornalieri vengono gestiti da un software a parte.

Per quanto riguarda la data se si tratta del solo 31/12/2013 caricato con protocollo 0001/2014 può anche andare bene, ma poi quello occorso il 01/01/2014 viene sempre registrato come xxxx/2014? credo di si. Per il 31 non c'è problema perchè tanto se succede il 31/12 viene comunque considerato infortunato dal 01/01 perchè il giorno dell'infortunio è considerato presente.



Continuo ad erudirmi Book


Sbellica Sbellica Sbellica
Avevo Sad Marshall m90 RT - Yamaha 40cv 4t CETL - ECO Garmin Fishfinder 400c - GPS Geonav 3c - VHF ICOM ic-m411

https://www.gommonauti.it/ptopic29811.html&highlight=
Capitano di Vascello
protea
Mi piace
- 23/41
Davidino ha scritto:


Continuo ad erudirmi Book


Sbellica Sbellica Sbellica


Spero non con me, se no sei preso proprio male.... Sbellica Sbellica

Veniamo a noi, per definire l'anno, la funzione è molto semplice, basta definire nella tabella un campo anno e nelle proprietà del campo inserirai come valore il default la seguente formula "=Year(Now())"

(il mio è in inglese, mi spiace)


re: Access 2003
etiam capillum unum habet umbram suam
Capitano di Fregata
Davidino (autore)
Mi piace
- 24/41
Perfetto! E per il protocollo? come si può fare?
Sad
Avevo Sad Marshall m90 RT - Yamaha 40cv 4t CETL - ECO Garmin Fishfinder 400c - GPS Geonav 3c - VHF ICOM ic-m411

https://www.gommonauti.it/ptopic29811.html&highlight=
Site Admin
VanBob
Mi piace
- 25/41
Per quello, se non esiste un campo autoincrementale, dovrai leggere l'ultimo utilizzato e aggiungere 1.
Aiutaci a sostenere Gommonauti.it, acquista i tuoi prodotti online a questo link
Capitano di Fregata
Davidino (autore)
Mi piace
- 26/41
Come si crea un campo autoincrementale?
Credo che con l'incremento di 1 all'ultimo record non si azzererebbe all'inizio del nuovo anno.

Riporto da quel sito:

Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
Me.NumeroFattura = GetNumeroFattura
Me.DataFattura = Date
End Sub

Function GetNumeroFattura() As String
Dim StrSQL As String
Dim RS As DAO.Recordset
Dim N_FT As Long
Dim AnnoCorrente As Long

StrSQL = "Select max(FT_Numero) FROM Fatture WHERE year(DataFattura)=year(date())"
Set RS = CurrentDb.OpenRecordset(StrSQL)

N_FT = 1
If Not IsNull(RS(0)) Then N_FT = Left(RS(0), 3) + 1
GetNumeroFattura = Format(N_FT, "000") & "/" & Year(Date)
End Function


Con questa non risolverei? Ma come si opera per inserirla nel VB e nel DB

Idea
Avevo Sad Marshall m90 RT - Yamaha 40cv 4t CETL - ECO Garmin Fishfinder 400c - GPS Geonav 3c - VHF ICOM ic-m411

https://www.gommonauti.it/ptopic29811.html&highlight=
Capitano di Fregata
Davidino (autore)
Mi piace
- 27/41
re: Access 2003


Questa è la bozza del progetto io dovrei inserire il campo contatore sulla sotto maschera Registro Infortuni li dove c'è N_Reg che adesso è un pò stretto.
Avevo Sad Marshall m90 RT - Yamaha 40cv 4t CETL - ECO Garmin Fishfinder 400c - GPS Geonav 3c - VHF ICOM ic-m411

https://www.gommonauti.it/ptopic29811.html&highlight=
Capitano di Vascello
protea
Mi piace
- 28/41
In modo "più semplice", sulla maschera dove inserisci il numero infortunio, nelle proprietà del campo come defualt value potresti inserire una funzione del tipo:

=Nz(DMax([NumeroFattura],"Prova",[Anno]=Year(now())),0)+1

Dove NumerFattura è il campo che vuoi incrementare
Prova è il nome della tabella che contiene il dato


dovrebbe funzionare.......... forse... Felice
etiam capillum unum habet umbram suam
Site Admin
VanBob
Mi piace
- 29/41
Il problema mi sembra sia che Davide non sta utilizzando i linguaggio vero e proprio ma il framework....
Aiutaci a sostenere Gommonauti.it, acquista i tuoi prodotti online a questo link
Capitano di Vascello
protea
Mi piace
- 30/41
Altra possibilità è di mettere sempre nella maschera di inserimento, un'istruzione analoga a quella di prima in aggiornamento di un campo (che non sia quello di numerazione:

NumeroFattura = Nz(DMax("NumeroFattura", "Prova", "[Anno] =" & [Anno])) + 1

questo ti permette, di incrementare il numero ogni qual volta tu definisci l'anno di riferimento. Il che significa che se devi inserire nel 2014 un infortunio del 2013, specificando l'anno 2013 lui legge il valore max di "numeroFattura" avente anno 2013 e lo incrementa di 1
etiam capillum unum habet umbram suam
Sailornet