Newsgroup: it.comp.lang.delphi
Titolo: numerare una fattura

Ho una tabella che memorizza le fatture....
Vorrei inserire un campo "numero fattura" dove automaticamente un contatore
aumenta il numero come segue : Es fattura n. 01/2003 .. 02/2003  .ecc.
01/2004 e così via.
L'unica soluzione per creare questa automazione è creare una tabella
parallela dove memorizza l'ultimo numero inserito e l'anno di riferimento.
Avete altre soluzioni in merito .... al posto appunto di creare un'altra
tabella solo per un campo e un record???
Grazie.
Stefano

parallela dove memorizza l'ultimo numero inserito e l'anno di riferimento.
Non e' detto, dipende dal db che  vorresti usare. 
Qual'e' ?
-- 
Morde. 
morde[at]programmer[.]net

 L'unica soluzione per creare questa automazione č creare una tabella


 Quando si parla di BD è consigliabile specificare anche il DB usato... :)
Sottoscrivo!
Bye
A

 E se poi hai + serie di numerazione? Tipo A,b,c....?
  :D :D :D
Avevo dato un'occhiala al volo.... avevo capito che gli servisse un semplice
comtatore :)
Thanks
  Ale.

 01/2004 e così via.
Io utilizzo un campo testo, dove ci metto il numero della fattura 
"zerofilled", es. 000001, 000002 ecc.
Poi , al momento di inserire la fattura, indicizzo quel campo e vado 
sull'ultimo record ... poi + 1 :)
Ciao.Alberto.
-- 
Alberto Rubinelli - A2 SISTEMI               posted with Gravity 2.60b
Via Costantino Perazzi 22 - 28100 NOVARA (NO) - ITALY     ICQ 49872318
E-Mail : 
alb...@retrocomputing.net
  Tel. 0321 640149 
Web    : 
www.retrocomputing.net
      Fax  0321 391669 BBS  0321 392320

 tabella solo per un campo e un record???
Non credo.
Inoltre il record non è uno solo e i campi sono almeno 2:
anno
contatore
Se poi la tua app gestisce diverse serie di numerazione per le fatture (1/a,
1/b..) i campi diventano 3.....
Bye
A.


Sto usando db access con componenti ADO
Stefano

Sto usando db access con componenti ADO
Mi sembra di aver capito che vuoi effettuare una gestione automatica della
numerazione fatture, nel corso dei diversi anni fiscali.
Per fare questo, stabilisci di avere n tipi documento, e ogni tipo di
documento ha la sua numerazione indipendente: Fatture a clienti, preventivi a
clienti, fatture a fornitori, preventivi  anonimi, ecc...., ogni tipo di
documenti ha quindi una sua anagrafica dove ha come chiave ha la sigla del
documento:
F1->Fatture a clienti
F2->fatture a fornitori
P1->preventivi a clienti
P2->preventivi anonimi
Ora ti crei una tabella "numeratori", dove hai queste colonne:
Anno
SiglaDoc
UltNum
DataUltNum
A questa tabella ti devi riferire per stabilire qual'e' l'ultimo numero da
adottare dai tuoi documenti, di qualsiasi tipologia essi siano.
Ese:
Anno	SiglaDoc	UltNum	DataUltNum
2002	P1		50	21/12/2002
2002	F1		60	28/12/2002
2003	F1		3	05/01/2003
Ora, una volta stabilita questa struttura dati, dal tuo programma non dovrai
fare altro che andare a pescare la riga giusta dei numeratori a seconda del
documento che vuoi compilare, incrementare il contatore, e gestirne l'update
una volta fatto il post del documento.
C'e' un'altra tecnica utilizzata dall'amico Plevani che prevede un inserimento
seguito da un post e un edit in cascata, per poter lavorare sull'ultimo numero
*reale* di documento, la tecnica descritta da me invece ti permette di
conoscerlo solo dopo il post.
Spero di averti dato qualche dritta in piu'.
Ciao


 ha scritto nel messaggio
news:b9b7no$t6h$1...@fata.cs.interbusiness.it...


Eccovi la soluzione senza tabbelle aggiuntive o artifici;
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, StdCtrls, Grids, DBGrids;
type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Table1: TTable;
    Table1Id: TAutoIncField;
    Table1Data: TDateField;
    Table1Anno: TIntegerField;
    Table1Num: TIntegerField;
    Table1NumFatt: TStringField;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Table1CalcFields(DataSet: TDataSet);
  private
    { Private declarations }
  public
    procedure NumFatt;
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.NumFatt;
var
  N : Integer;
  Anno: TDateTime;
  Year, Month, Day: Word;
begin
  Table1.Last;
  N := Table1Num.Value;
  Anno:= Now;
  DecodeDate(Anno, Year, Month, Day);
  if Table1Anno.Value = Year then
  begin
    Table1.Insert;
    Table1Num.Value := N + 1;
    Table1Anno.Value := Year;
    Table1Data.Value := Date;
    Table1.Refresh;
  end
  else
  begin
    Table1.Insert;
    Table1Num.Value := 1;
    Table1Anno.Value := Year;
    Table1Data.Value := Date;
    Table1.Refresh;
  end
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  NumFatt;
end;
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
    Table1NumFatt.Value := Table1Num.AsString + '/' + Table1Anno.AsString;
end;
end.
--------------------------------
Inviato via 
http://usenet.libero.it