Autore Topic: [RISOLTO] Numero progressivo fatture  (Letto 1591 volte)

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
[RISOLTO] Numero progressivo fatture
« il: 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

Offline Pixel

  • Amministratore
  • Maestro Gambero
  • *****
  • Post: 414
    • Mostra profilo
    • http://www.gambas-it.org
Re: [RISOLTO] Numero progressivo fatture
« Risposta #1 il: 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
Ubuntu Italian Member Ubuntu User 4683
Il mio Blog

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: [RISOLTO] Numero progressivo fatture
« Risposta #2 il: 06 Agosto 2010, 15:08:42 »
La vendono ancora? :rotfl:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: [RISOLTO] Numero progressivo fatture
« Risposta #3 il: 06 Agosto 2010, 15:23:44 »
Anzi che non usa lo scalpello... :-)

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: [RISOLTO] Numero progressivo fatture
« Risposta #4 il: 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 :)


Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: [RISOLTO] Numero progressivo fatture
« Risposta #5 il: 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.