Ciao, mi sono imbattuto in questo problema, restituire il numero progressivo di fatture (naturalmente con l'anno nuovo il numero ripartirà da 1)
Ho risolto e volevo condividere questa piccola funzione, anche se penso che molti di voi l'avranno già fatta :)
Il campo numero è così formattato come esempio "F2010/001"
Nell'esempio la query va a pescare sul database che ha una tabella di nome "fattura" e il campo interessato "numero" (attenzione deve essere di tipo varchar)
PUBLIC SUB ToggleButton1_Click()
DIM qanno AS String
DIM myhresfat AS Result
DIM myhresnum AS Result
DIM numfatt AS String
qanno = Format(Date, "yyyy")
myhresfat = MODMain.$conn.Exec("SELECT numero FROM fattura WHERE numero LIKE 'F" & qanno & "%'")
IF myhresfat.Available = TRUE THEN
myhresnum = MODMain.$conn.Exec("SELECT Max(numero) AS miomax FROM fattura WHERE numero LIKE 'F" & qanno & "%'")
numfatt = myhresnum!miomax
numfatt = "F" & qanno & "/" & Format(Right(numfatt, 3) + 1, "000")
ELSE
numfatt = "F" & qanno & "/001"
ENDIF
END
Ciao
Io per il prog. di ricevute fiscali, con postgres ho fatto questo:
CREATE OR REPLACE FUNCTION nrricevuta(integer) RETURNS integer AS $$
SELECT Max(nr_ricevuta) + 1
FROM leucos.corrispettivi WHERE date_part('year',data_ricevuta) = CREATE OR REPLACE FUNCTION nrricevuta(integer) RETURNS integer AS $$
SELECT Max(nr_ricevuta) + 1
FROM leucos.corrispettivi WHERE date_part('year',data_ricevuta) = $1;
$$ LANGUAGE SQL;
;
$$ LANGUAGE SQL;
Creando questa funzione, da gambas mi basta fare:
Rec = Connection.Exec("SELECT nrricevuta(" & anno & ");"
e mi restituisce il numero progressivo della ricevuta da creare :)