Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Golia - 06 Agosto 2010, 10:59:33

Titolo: [RISOLTO] Numero progressivo fatture
Inserito da: Golia - 06 Agosto 2010, 10:59:33
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)
Codice: gambas [Seleziona]

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
Titolo: Re: [RISOLTO] Numero progressivo fatture
Inserito da: Pixel - 06 Agosto 2010, 15:07:24
OTTIMO, questi sono i post che mi piacciono: Domanda e Risposta in un unica discussione :rotfl:

Ho risolto e volevo condividere questa piccola funzione, anche se penso che molti di voi l'avranno già fatta :)

Io uso ancora la carta carbone ;D
Titolo: Re: [RISOLTO] Numero progressivo fatture
Inserito da: Golia - 06 Agosto 2010, 15:08:42
La vendono ancora? :rotfl:
Titolo: Re: [RISOLTO] Numero progressivo fatture
Inserito da: md9327 - 06 Agosto 2010, 15:23:44
Anzi che non usa lo scalpello... :-)
Titolo: Re: [RISOLTO] Numero progressivo fatture
Inserito da: milio - 06 Agosto 2010, 15:38:59
Io per il prog. di ricevute fiscali, con postgres ho fatto questo:

Codice: sql [Seleziona]
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:
Codice: gambas [Seleziona]
Rec = Connection.Exec("SELECT nrricevuta(" & anno & ");"


e mi restituisce il numero progressivo della ricevuta da creare :)

Titolo: Re: [RISOLTO] Numero progressivo fatture
Inserito da: md9327 - 06 Agosto 2010, 16:20:07
Sono due approcci diversi, che hanno leggerissime diversità nei tempi di risposta, praticamente non apprezzabili.

Io prediligo l'uso delle stored-procedure, anche perchè uso di norma db relazionali, che le hanno incorporate più o meno tutti i motori più conosciuti.
In particolare PostgreSQL, la cui sintassi è molto simile a Oracle, mi permette di fare porting più facilmente.

Comunque, se vogliamo rendere tutto sql standard, l'sql diretta è quella che offre una portabilità maggiore.