Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Client/Server  Numerotare docu...
 Numerotare documente
 
 3/15/2009 10:48:48 PM
User is offlineadrian
48 posts
www.infostarpitesti.ro


Numerotare documente
 (N/A)
Am urmatoare problema:
Vreau sa numerotez documentele pe care le genereaza utilizatorul in mod automat (ultimul+1):
- o metoda ar fi calc de max+1 pe tabela de documente (dar in retea nu este sigura, si vreau sa evit scrierea in tabela dupa care sa sterg daca utilizatorul se razgandeste si da renuntare)
- alta ar fi un generator (ex. firebird), dar daca utilizatorul da renuntare si intra a 2 oara id este incrementat la noua valoare.

Cei care ati mai avut problema asta cum ati rezolvat problema ?
 3/16/2009 9:39:18 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Numerotare documente
 (N/A)
Situatia e curenta.
In functie de server, aloc numarul in Before Insert Trigger, Instead Of Insert trigger sau in aceeasi tranzactie cu inserarea, imediat inainte de insert. In oricare din aceste variante, numarul nu se aloca daca salvarea esueaza.
Utilizatorul vede numarul documentului numai dupa salvare.

Daniel Buduru
 3/16/2009 11:34:00 AM
User is offlineCLASSOFT
231 posts
www.classoft.ro
4th


Re: Numerotare documente
 (N/A)
Pe MS SQL Server poti defini un camp cu autoincrementare :
ID_CIMP int IDENTITY(1,1)

Cristi Birlea
 3/16/2009 11:53:30 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Numerotare documente
 (N/A)
Campul cu autoincrement e ok atata vreme cat in tabela respectiva se gaseste un singur fel de documente, cu numerotare consecutiva. Daca insa documentele sunt serializate in functie de, sa zicem, postul de lucru, solutia nu mai poate fi aplicata.

Daniel Buduru
 3/16/2009 7:17:45 PM
User is offlineCLASSOFT
231 posts
www.classoft.ro
4th


Re: Numerotare documente
 (N/A) Modified By CLASSOFT  on 3/16/2009 8:19:27 PM)
Noi folosim un ID COMBINAT (prefix+id_numeric) *un exemplu simplificat , am exclus procedurile de tratare a erorilor

IF sqlexec(Handle,"SELECT COUNT(document) AS xRecServer FROM docum WHERE LEFT(document,2)=?_cCodPrefix " ,'sql_testrec')
IF sql_testrec.xRecServer>0 AND !ISNULL(sql_testrec.xRecServer)
IF sqlexec(Handle,"SELECT MAX(CONVERT (int, SUBSTRING(document,3,15))) AS max_val FROM docum WHERE LEFT(document,2)=?_cCodPrefix " ,'sql_maxrec')
nmax=sql_maxrec.max_val
ENDIF
ELSE
nmax=0
ENDIF
nmax_marit = nmax+1
cmaxmarit = _cCodPrefix+LTRIM(UPPER(STR(nmax_marit)))
WAIT WINDOW NOWAIT 'Codificare automata efectuata ! '
ENDIF
 3/16/2009 9:21:00 PM
User is offlinebrotundu
38 posts


Re: Numerotare documente
 (N/A)
Salut

Nu am folosit varianta asta, dar ma gandesc sa o aplic pe viitor.

1) Am o tabela de tip [serie], [contor]; astfel pot sa definesc mai multe contoare, pentru diverse documente/serii de documente; pot sa am mai multe serii de facturi, de exemplu, si pot sa fac o configurare locala pe statie, sa se stie cu ce serie se lucreaza;

2) Orice document operat in sistem este document temporar; ii dau o numerotare dupa un criteriu lipsit de importanta;

3) USER poate sa finalizeze documentul; in acel moment iau contorul curent (din seria documentului) si-l incrementez; folosesc valoarea pentru a atribui un numar documentului;

4) Bineinteles, un document caruia ii atribui numar nu mai poate fi sters; eventual ii pun o optiune de anulare;

5) Un document temporar nu poate fi tiparit, asta pentru a evita, de exemplu, tiparirea de facturi fara numar;

Sper ca ai prins ideea.
  Visual FoxPro  Client/Server  Numerotare docu...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement