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  Cimp autoincrem...
 Cimp autoincrementabil in MSSQL Express
 
 9/24/2009 7:24:46 PM
User is offlinelmax25
57 posts


Cimp autoincrementabil in MSSQL Express
 (N/A)
Cum pot sa fac un cimp autoincrementabil in MSSQL ? Vreau sa fac un trigger direct pe server care sa autoincrementeze valoarea de tip INT a unei coloane la INSERT ? Se poate un exemplu va rog ? Va multumesc !
 9/24/2009 8:34:16 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Cimp autoincrementabil in MSSQL Express
 (N/A)
Crearea in cod:
CREATE TABLE [dbo].[Test](
    [camp1] [varchar](50) NULL,
    [id] [int] IDENTITY(1,1) NOT NULL,
 CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

In designer:
Campului respectiv ii dai tipul Integer, apoi, in partea de jos a ferestrei, defilezi pana la Identity Specifications, deschizi, apoi la Is Identity pui Yes, eventual modifici Identity Increment si Identity Seed.

Daniel Buduru
 9/24/2009 9:07:55 PM
User is offlinelmax25
57 posts


Re: Cimp autoincrementabil in MSSQL Express
 (N/A)
Am rezolvat. Va multumesc pentru toate raspunsurile domnule Daniel Buduru ! Nici macar nu trebuie facut trigger pentru INSERT. Coloana se autocompleteaza pe server.
 9/24/2009 9:21:06 PM
User is offlinelmax25
57 posts


Re: Cimp autoincrementabil in MSSQL Express
 (N/A)
Am urmatoarea tabela : nr_doc - int autoincrement tip_doc - character Cum pot sa fac un trigger sa autoincrementeze un cimp [nr_doc] in functie de alt cimp [tip_doc]? (sa reia numerotarea pentru fiecare tip_doc diferit ) Se poate sa genereze numere de documente fara sa repete numarul dat pentru cele sterse ?
 9/24/2009 9:47:58 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Cimp autoincrementabil in MSSQL Express
 (N/A)
Cu autoincrement in acea tabela nu prea merge.
Solutia cea mai fiabila e cu o tabela de serializare, din care iei numarul pentru tipul de document respectiv.
Foarte schematic, tabela de numere ar avea campurile tip_doc, punct de lucru (pentru cazul in care documentele se emit in mai multe puncte de lucru, cu serializare diferita), seria, primul numar, numere in secventa, ultimul numar alocat, id document care a primit acel numar (asta iti va permite sa resetezi numarul daca se sterge documentul care l-a primit, doar daca se permite stergerea acelui document si nu anularea lui), data de la care este valabila secventa respectiva, data pana la care este valabil secventa.
Acum, la salvarea unui document, intr-un trigger (Instead of Insert sau After Insert, se poate in amandoua, cu avantaje si dezavantaje) se incrementeaza numarul curent din tabela de serializare si se aloca documentului.
Poti efectua aceasta operatie si imediat inainte de salvare, dar obligatoriu in cadrul unei tranzactii, astfel incat acelasi numar sa nu poata fi alocat mai multor documente in acelasi timp.
 E indicat ca iddentificatorul documentului in tabela sa fie un alt camp decat numar document, eventual un uniqueidentifier, pe care sa-l poti aloca documentului client side, inainte de salvare, astfel incat sa poti regasi documentul dupa salvare (dupa acel id) si sa vezi ce numar i s-a alocat.
Sunt mai multe moduri in care poti face serializarea, fiecare are problemele lui, totul depinde de modul in care le rezolvi.


Daniel Buduru
 9/24/2009 10:20:49 PM
User is offlinelmax25
57 posts


Re: Cimp autoincrementabil in MSSQL Express
 (N/A)
Pentru serializare am facut cam la fel : serie_doc,nr_doc_min,nr_doc_max,tip_doc,id_gestiune . Pentru a afla urmatorul numar caut in tabela cu documente MAX(nr_doc)+1. Inca nu dau acces la 2 useri pe aceeasi gestiune,deci este imposibil ca 2 documente sa primeasca acelasi numar si in cazul in care sterg un document MAX(nr_doc)+1 nu poate da nr documentului sters. Totusi cu autoincrement in functie de alte cimpuri era mul mai simplu. Dar daca nu se poate asta e...
  Visual FoxPro  Client/Server  Cimp autoincrem...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement