asp, mssql e la numerazione dell'ID!

AdriDesigner

Nuovo Utente
22 Giu 2005
28
0
0
Ciao a tutti! Chissà se vi ricordate di me! :D

ebbene, dopo tanto tempo mi ripresento con un problema abbastanza grave, però differente dai miei problemi dove mi bastava "capire" come funziona asp!

Mi sono convertito a mssql, e sto creando delle pagine dinamiche sul mio sito dove posso mandare i miei clienti (hotel, alberghi, garnì, ecc..) a gestire i loro listini prezzi in modo semplice e veloce.

Ho già previsto tutto, dall'inserimento delle varie fasce di prezzo, alla modifica o eliminazione di esse, e tengo a sottolineare che tutto funziona!

L'unico problema è questo: Quando cancello una fascia di prezzo, vado a prendere l'ID di essa e cancello tutta la riga. Ho però il problema che se elimino un ID, mi rimane il buco! (ad es. ID | 1,2,4,5 | , il 3 è stato cancellato!)

Allora ho provato con questa porzione di codice a far rinominare tutti gli id in automatico, ad ogni cancellazione:

Codice:
SQL1 = "SELECT * from listini where utente = '" & Session("nomeutente") & "'"
rs3.open SQL1, cn
x = 1000
Do While rs3.eof = false
rs3("ID") = x
rs3.update
rs3.movenext
x = x+1
loop
rs3.close

SQL1 = "SELECT * from listini where utente = '" & Session("nomeutente") & "'"
rs3.open SQL1, cn
x = 1
Do While rs3.eof = false
rs3("id") = x
rs3.update
rs3.movenext
x = x+1
loop
rs3.close

questa invece è la parte di codice che mi elimina effettivamente la fascia, e funziona alla grande:

Codice:
SQL = "delete from listini where id = " & id1 & " AND utente = '" & Session("nomeutente") & "'"
cn.Execute(SQL)

"session.nomeutente" ovviamente è il nome del cliente che gestisce i suoi listini, mi serve perchè deve ogni fascia di prezzo sul database naturalmente contiene questo nome!

Ho provato comunque ad eseguire questa pagina e non funziona, nel senso che mi cancella la fascia ma mi lascia sempre il buco :dipser:

qualcuno sa darmi una dritta? Spero di si!:crying:

Ciao e grazie! :D
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
un campo autoincrement (o contatore, che dir si voglia) non è rigenerabile su una tabella di una base dati sul qualsiasi dbms

era solo questo il problema o ho capito male?

:byebye:
 

AdriDesigner

Nuovo Utente
22 Giu 2005
28
0
0
lukeonweb ha scritto:
un campo autoincrement (o contatore, che dir si voglia) non è rigenerabile su una tabella di una base dati sul qualsiasi dbms

era solo questo il problema o ho capito male?

:byebye:

ciao luke ;)

innanzitutto che io sappia l'sql non genera id in automatico, quindi io quando vado ad inserire una fascia di prezzo, dico di inserire:
Codice:
rec = rs.recordcount + 1
e quindi vado a scrivere nella colonna id + 1 dell'ultimo valore sul database. il campo ID l'ho messo in formato numerico.

appunto per questo, quando vado ad eliminare una riga, mi rimane il buco! quindi la pagina non riesce ad elaborare la porzione di codice postata qua sopra.

Se qualcuno usa un sistema diverso sono tutt'orecchi! grazie!
 

PoLe

MRW Moderator
6 Giu 2005
2.198
3
0
40
.: Venezia :.
www.bzconsulting.it
AdriDesigner ha scritto:
Ciao a tutti! Chissà se vi ricordate di me!..

Ciao Adri, mi ricordo si di te ! (RICORDI?) ;)

Ascolta, ho notato un piccolo errore nel tuo codice, prova a correggere mettendo la parte in blu al posto della rossa:

===================
SQL1 = "SELECT * from listini where utente = '" & Session("nomeutente") & "'"
rs3.open SQL1, cn
x = 1
Do While rs3.eof = false
rs3("id") = x --> rs3(1) = x
rs3.update
rs3.movenext
x = x+1
loop
rs3.close
===================

Ovvero metti rs3(1) se l'ID è il primo campo del record, altrimenti se è il secondo metti rs3(2) e così via..

Tieni conto che però non son un grande esperto si MySql eh!
Prova così e fammi sapere, :fonzie:
SaLuT!
:byebye:
 

AdriDesigner

Nuovo Utente
22 Giu 2005
28
0
0
ciao pole! grazie per la tempestiva risposta, come sempre!

ho sostituito la parte di codice ma purtroppo il problema si riverifica :dipser:

sto cercando in giro per la rete qualche aiuto ma sembro l'unico ad avere questo "problema" :eek:

cmq se hai bisogno di ulteriori delucidazioni sn qua!

grazie ancora!
 

PoLe

MRW Moderator
6 Giu 2005
2.198
3
0
40
.: Venezia :.
www.bzconsulting.it
AdriDesigner ha scritto:
...sto cercando in giro per la rete qualche aiuto ma sembro l'unico ad avere questo "problema" :eek: ...
Eh eh, effettivamente è un problema un pò singolare!! :D

Ascolta, ora io me ne vado a casa in divano, e come sai il week-end il PC per me diventa TABU' :gun: ,
quindi casomai ci si sente lunedì, anche se spero per te che nel frattempo qualcun altro sia riuscito ad aiutarti!!! ;)

In bocca al Lupo Adri!
:byebye:
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Allucinante... purtroppo tra me ed Aruba non corre buon sangue già da tempo e questa è una conferma del fatto che ci ho visto giusto sin dall'inizio...

Per il tuo problema fai cosi: crea un campo numerico; quando inserisci un record fai la SELECT TOP 1 del campo numerico ORDER BY data (in formatyo data) DESC ed al risultato aggiungi + 1

Fammi sapere

:byebye:
 

AdriDesigner

Nuovo Utente
22 Giu 2005
28
0
0
lukeonweb ha scritto:
Per il tuo problema fai cosi: crea un campo numerico; quando inserisci un record fai la SELECT TOP 1 del campo numerico ORDER BY data (in formatyo data) DESC ed al risultato aggiungi + 1

Fammi sapere

:byebye:

Scusa non ho ben capito, puoi spiegarmi meglio? :confused:
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Dunque...

Quando devi inserire un record hai bisogno di incrementare il contatore, quindi farai una INSERT oppoure apri un Recordset in scrittura.

In entrambi i casi dovrai eseguire questa stringa SQL (modifica i nomi dei campi)

Dim contatore
Set contatore = connessione.Execute("SELECT TOP 1 campo_id FROM tabella ORDER BY campo_id DESC")

Poi, nel Recordset, aggiungerai questo

recordset("campo_id") = contatore("campo_id") + 1

o qualcosa del genere, se non lo testo non ho la certeza di non dire sciocchezze, ma la filosofia è questa.

Let me know ;)
 

AdriDesigner

Nuovo Utente
22 Giu 2005
28
0
0
si è praticamente la stessa cosa ke faccio io più semplificata! E infatti allo stesso modo non funziona....

Non capisco proprio.. in fondo dovrebbe essere un'operazione semplice.. rinominare dei campi... però non funziona..

comincio a pensare di tonrare al vekkio access :rolleyes:
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Meglio di cosi significa che devo farlo io :)

In giornata scrivo un articolo (con db Access, ma basta usare la stringa di connessione di SQL Server per adattarlo).

Lo faccio pubblicare in questi giorni.

Ciao!
 

AdriDesigner

Nuovo Utente
22 Giu 2005
28
0
0
lukeonweb ha scritto:
Meglio di cosi significa che devo farlo io :)

In giornata scrivo un articolo (con db Access, ma basta usare la stringa di connessione di SQL Server per adattarlo).

Lo faccio pubblicare in questi giorni.

Ciao!

Pefetto! fammi sapere quando l'hai pubblicato! Io intanto mi scervello ancora un po'...! :dipser:

;)
 

AdriDesigner

Nuovo Utente
22 Giu 2005
28
0
0
:eek: non ci crederai luke ma ce l'ho fatta! sai cos'era???

sulla riga dove aprivo il recordset, dopo CN mancava: ,3,3

io mi chiedo, a cosa servono ste due cifre?? della serie: ho scoperto il malanno ma voglio capirci di più!

grazie! ciao! :eek:
 

PoLe

MRW Moderator
6 Giu 2005
2.198
3
0
40
.: Venezia :.
www.bzconsulting.it
AdriDesigner ha scritto:
..sulla riga dove aprivo il recordset, dopo CN mancava: ,3,3

io mi chiedo, a cosa servono ste due cifre??...
Allora Adri, i numeri 3,3 che seguono rappresentano rispettivamente:
il CursorType
il LockType

Il CursorType definisce il tipo di "cursore", il quale è una rappresentazione dei dati (records) e definisce anche il tipo di viste possibili su di essi.

I cursori sono di 4 tipi:

_Cursore di default valore:0 è come un cursore statico ad eccezione del fatto che permette solo spostamenti in avanti e non indietro, poiché questo cursore non deve tener traccia dei record aggiunti, modificati o cancellati da atri utenti.

_Cursore Keyset valore: 1 possono vedere le modifiche apportate da altri utenti, nonché spostarsi tra i record in avanti ed indietro. Non possono vedere i record aggiunti o cancellati da gli altri utenti.

_Cursori Dinamici valore:2 possono vedere qualsiasi cosa: modifiche, aggiunte e cancellazioni fatte da altri utenti. Supportano, inoltre tutti gli spostamenti.

_Cursori Statici valore: 3 permettono gli spostamenti in avanti ed indietro. Non sono in grado di rilevare le modifiche ai dati apportate da altri utenti.

Il valore di LockType (o di BLOCCO) determina che tipo di blocco il fornitore di dati DBMS (Data Base Management System), ossia il database realizzato con Access, deve usare quando si apre un Recordset, questo ai fini del controllo di concorrenza sugli accessi ai dati da parte di più utenti contemporaneamente.


===============================
Ho tirato giù questa spiegazione tantissimo tempo fa non mi ricordo nemmeno da dove, comunque credo ti sarà utile! ;)

SaLuT!
:byebye:
 

AdriDesigner

Nuovo Utente
22 Giu 2005
28
0
0
grazie mille pole!! ora ho capito! pensa te che per questa cosa ho lavorato 3 giorni scrivendo e riscrivendo il codice.. roba da martellarsi i .... :hammer: :D

grazie mille ancora, questo forum andrebbe premiato :D

a presto! (anche se ho la netta sensazione che tornerò presto a consultarmi con voi :rolleyes: :D )
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Form ASP su MsSQL salvare 2 campi in 1 Classic ASP 4
C 10GB Free Hosting ASP/PHP/JSP/FTP MYSQL/MSSQL Hosting 0
C 1G PHP, MySQL, cPanel/1G ASP Mssql No post No Ads And free domain Hosting 0
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
Paolo69 Risolto reCAPTCHA v2 per ASP Classic ASP 0
P lanciare script asp (o php) da jquery Javascript 1
L Modifica file upload in ASP Classic ASP 2
felino ASP.net MVC: Exception e chiamata AJAX ASP.NET 1
W Rinominare Documenti Con Form Asp Classic ASP 9
G Registrazione utente su pagina asp Classic ASP 14
R Sviluppatore ASP.NET Offerte e Richieste di Lavoro e/o Collaborazione 0
seranto [ASP] Controllare il testo inserito in Textarea Classic ASP 6
F classic asp popolare combo box javascript Presentati al Forum 1
P Passagio dati complessi tra una ASP.NET webapi e Angular ASP.NET 1
A [ASP.Net] Gestire il profilo ADMIN in un progetto ASP NET e pattern MVC ASP.NET 0
P [ASP.Net] Problema ERR_INCOMPLETE_CHUNKED_ENCODING 206 (Partial Content) con Font ASP.NET 4
A [ASP] Confronto tra dati Form e DB Classic ASP 2
A Mantenere la validazione reindirizzandoci su un secondo sito WEb. (ASP.NET) ASP.NET 0
StephenSoftware [ASP.Net] Pagina Master ed eventi... ASP.NET 0
K [ASP] Visualizzare nome del file selezionato Classic ASP 3
S [ASP] rubrica telefonica Classic ASP 2
M MySQL e classic ASP Classic ASP 5
D [ASP] Eliminare gli zeri che nn servono Classic ASP 1
G [ASP] Ciclare i valori di 2 array Classic ASP 2
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
S elimina record sql asp classic Classic ASP 5
D [ASP] Autocomplete cerca su 2 campi del db Classic ASP 1
D [ASP] Leggere Campo decimal MYSQL Classic ASP 1
S [ASP] SALVARE VALORE SELECT OPTION SU CAMPO TABELLA ACCESS Classic ASP 9
NuviaSoftware [Retribuito] [Cerco] Programmatore ambienti ASP.NET,. Net Azure web apps, Javascript Offerte e Richieste di Lavoro e/o Collaborazione 0
D [ASP] scaricare articoli Classic ASP 8
D [ASP] Mysql insert e update Classic ASP 2
V [ASP.Net] avento keydown crh13 enter ASP.NET 0
A [ASP.Net] Dropdownlist ASP.NET 0
S [ASP.Net] [ASP] Upload Image ASP.NET 6
V Ricevere messaggi email certificata con CDO o altro oggetto in ASP Classic ASP 0
A [ASP] query wish list Classic ASP 3
riminese77 [ASP.Net] Popup Bootstrap in datagrid ASP.NET 0
D [ASP] si può fare? Classic ASP 29
D [ASP] ordinamento query Classic ASP 2
M [ASP] Upload file da form controllo Classic ASP 5
S SQL, ACCESS & ASP CLASSIC - QUERY Classic ASP 3
G [ASP] Incrementare un valore on the fly su selezione select Classic ASP 3
K [ASP.Net] Realizzazione menu a tendina dipendenti ASP.NET 1
Tommy03 Aprire un file .asp nel browser Classic ASP 5
E [ASP.Net] Access 2016 ? Non si usa Microsoft Jet 4.0 ma Engine 2016 o 2010. Non va ! ASP.NET 2
D csrf : Cross Site Request Forgery in classic asp Classic ASP 0
D [ASP] Motore di ricerca interno su 2 tabelle Classic ASP 3
M [ASP.Net] [ASP] geoblocking e web.config ASP.NET 3
N Cerco sviluppatore ASP per aggiornamento sito e-commerce esistente Offerte e Richieste di Lavoro e/o Collaborazione 0

Discussioni simili