Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Problema numero unico

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171

    Problema numero unico

    Buona sera.
    ho un problema sulla creazione di un numero unico.
    ho un form con dei dati che vengono inviati ad una pagina, la quale
    apre una tabella in sql server con un campo numerico, trova l ultimo numero inserito, incrementa di uno e lo salva. Il problema ê che ci sono più utenti collegati che fanno la stessa operazione capita che vengono salvati più numeri uguali.....quindi non sono più unici.
    come posso rendere unico quel.numero?
    Ps non posso creare quel campo come numero progressivo perché ogni anno quel numero deve ricominciare da uno.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prima prova con @@identity (ma non so se è supportato da sql server) per recuperare l'ultimo record inserito oppure sql="select TOP 1 ID from nometabella order by ID DESC"
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    Quote Originariamente inviata da tigre2209 Visualizza il messaggio
    Il problema è che ci sono più utenti collegati che fanno la stessa operazione capita che vengono salvati più numeri uguali.....quindi non sono più unici.
    pare un problema di procedura, ovvero che passi troppo tempo tra l'identificazione del numero massimo e la scrittura del nuovo numero incrementato.
    forse basta fare una query più compatta

    quanti utenti potrebbero fare contemporaneamente la stessa operazione?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    scusa il ritardo.
    con qusta query trovo l ultimo numero inserito
    select * from tabella where anno='2014' order by numer
    rs.movelast

    gli utenti collegati sono circa 80 inseme

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    immagino la procedura successiva.... te credo che non fa in tempo....

    fai una cosa tipo
    insert into tabella valorenumerico= (select max(valorenumerico)+1 from tabella where....)

    una volta inserito, senza fare tanti giri, recuperi il record appena inserito con @@identity

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    ho capito che devo fare un insert di 20 campi.
    ma poi non so come recuperare il numero con @@identity
    anche perche quel numero devo visualizzarlo in una popup

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    Quote Originariamente inviata da tigre2209 Visualizza il messaggio
    ho capito che devo fare un insert di 20 campi.

    ma poi non so come recuperare il numero con @@identity

    anche perche quel numero devo visualizzarlo in una popup
    --questo lo sapevi anche prima: hai i dati dal form da inserire, no?

    --non recuperi il numero ma l'id del record appena creato, da li trovi il nuovo numero in questione:
    codice:
    SQL = "SELECT @@identity FROM table"
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open SQL, objConn
    
    if not objRS.eof then
        Set objRS2 = Server.CreateObject("ADODB.Recordset")
        SQL2 = " select numero from table where id = "& objRS(0) &"
        objRS2.Open SQL2, objConn
        response.write objRS2("numero")
        objRS2.Close
        set objRS2 = nothing
    end if
    
    objRS.Close
    set objRS = nothing

    --il problema dove sta?


    edit: (forse si può compattare ancora ma adesso non mi viene...)

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812

    scusa... ho scritto l'esempio per access.

    vedi se questo articolo può esserti utile
    http://www.guru4.net/articoli/sql-server-identity/

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    grazie, ho letto l articolo ed è interessante,
    ma vedo nell'articolo che server una colonna IDENTITY.
    io ho un campo progressivo chiamato num,
    un campo valore che ricavo dall ultimo campo valore inserito e incremento di uno e lo salvo.
    E' proprio in questo passaggio che se ci sono 2 utenti collegati viene creato un numero unico per tutto e due.
    questa è la query che ho visto;
    <%
    Dim dsn, cn, rs
    dsn = "Provider=sqloledb;Data Source=localhost;Initial Catalog=Northwind;User Id=sa;Password=;"
    Set cn = Server.CreateObject("ADODB.Connection")
    cn.Open dsn
    Set rs = cn.Execute("SET NOCOUNT ON; INSERT INTO Shippers (CompanyName, Phone) VALUES ('Speedy Express', '(503) 555-9831'); SELECT SCOPE_IDENTITY() AS NewShipperID;")
    Response.Write "In nuovo ID inserito nella tabella Shippers è " & rs("NewShipperID")
    rs.Close
    cn.Close
    Set rs = Nothing
    Set cn = Nothing
    %>



    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio

    scusa... ho scritto l'esempio per access.

    vedi se questo articolo può esserti utile
    http://www.guru4.net/articoli/sql-server-identity/

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    che ciofeche che ho scritto!
    ma i concetti non cambiamo.
    leggi qui:
    http://www.html.it/articoli/recupera...rd-inserito-1/
    http://www.html.it/script/recupero-id-appena-inserito/
    il numero incrementato lo valorizzi comunque con (select max(valorenumerico)+1 from tabella where....)


    poi magari rileggo quello che ho scritto... sia mai che stia ancora dormendo...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.