26 messaggi dal 14 ottobre 2002
ciao a tutti, ho un problema che subito vi espongo:
in un form richiedo dei dati personali che servono per la registrazione ad un servizio interno; questi dati vanno ad aggiornare i campi della tabella del database di riferimento e fin qua tutto ok.
Ad ogni utente che si registra devo attribuire un codice personale che prelevo da un'altra tabella dello stesso database, solo però se questo codice è disponibile (in questa tabella ci sono due campi: codice [numerico] e disponibile [si/no] ).
Ogni volta che una persona si registra (e quindi gli viene attribuito il primo codice disponibile), il codice a lui attrribuito diventa quindi Non disponibile. E così via per tutte le persone che si registrano....
Come fare?
Grazie
879 messaggi dal 09 luglio 2002
www.i-studio.it
Io farei cosi':

1) dalla tabella dei codici chiedi il primo codice disponibile (ne puoi prendere uno qualunque, giusto?)
2) inserisci nella tabella dei dati tutte le informazioni dell'utente piu' il codice che hai letto
3) fai un update nella tabella dei codici e rendi quel codice "non-disponibile".

Per evitare problemi, metti i passi 2 e 3 sotto transazione

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
26 messaggi dal 14 ottobre 2002
Ok, però non credo di saper gestire la query SQL; potresti aiutarmi nel codice?
Grazie
879 messaggi dal 09 luglio 2002
www.i-studio.it
Allora, hai detto che la tabella dei codici ha i campi codice e disponibile, giusto?

1) "select codice from tabella_codici where disponibile = true"
poi, apri il cursore e, se ci sono record, prendi solo il primo e lo salvi in una tua variabile (diciamo "codice_utente")

prima di procedere, usa le transazioni:
se l'oggetto di tipo connection che hai creato si chiama, ad es., objConn:

objConn.BeginTrans

sql = "insert into tabella_dati (nome, cognome, ..., codice) values ('" & request("nome") & "', '" & request("cognome") & "', '", .... , ", " & codice_utente & ")"
err.clear
objConn.Execute sql, rec_aff
if err.number <> 0 then
sqlOK = false
else
sqlOK = true
sql = "UPDATE tabella_codici set disponibile=false where codice=" & codice_utente
err.clear
objConn.Execute sql, rec_aff
if err.number <> 0 then
sqlOK = false
end if
end if

if sqlOK then
objConn.CommitTrans
else
objConn.RollbackTrans
end if


Tutto chiaro?
Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
26 messaggi dal 14 ottobre 2002
io ho provato con questo codice, ma mi dice "Proprietà o metodo non supportati dall'oggetto" indicando come errore la riga che ti indico... AIUTO!!
dim objConn
dim objRs
dim strCognome
dim strNome
dim strCodice
dim Codice_Skills
set objConn = Server.CreateObject("ADODB.Connection")
objConn.connectionstring="DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=C:\inetpub\wwwroot\ecdl\ecdl.mdb"
objConn.Open
set objRs = Server.CreateObject("ADODB.Recordset")
objRs.Open "Kw_Registrati", objConn, adLockOptimistic, adCmdTable
objRs.AddNew
objRs("Cognome")=trim(request.form("Cognome"))
objRs("Nome")=trim(request.form("Nome"))
objRs("Indirizzo")=trim(request.form("Indirizzo"))
objRs("Cap")=trim(request.form("Cap"))
objRs("Città")=trim(request.form("Citta"))
objRs("Provincia")=trim(request.form("Provincia"))
objRs("Nazione")=trim(request.form("Nazione"))
objRs("Telefono")=trim(request.form("Telefono"))
objRs("E-mail")=trim(request.form("E-mail"))
objRs("Scolarità")=trim(request.form("Scolarita"))
objRs("Data_Nascita")=trim(request.form("Data_Nascita"))
objRs("Luogo_Nascita")=trim(request.form("Luogo_Nascita"))
objRs("occupazione")=trim(request.form("Occupazione"))
Set objRs("Codice_Skills")=objConn.execute("SELECT Codice FROM Codici_Nuovi WHERE utilizzato=False") --> [L'ERRORE INDICATO E' QUI]
IF Codice_Skills.EOF THEN
Response.Write "Si è verificato un errore"
ELSE
END IF
Set Codice_Skills = Nothing
objRs.Update
objRs.Close
set objRs=Nothing
objConn.Close
set objConn=Nothing
strCognome=request.form("Cognome")
strNome=request.form("Nome")
strCodice=objRs("Codice_Skills")
%>
<html>
<head><title>Pagina di conferma</title></head>
<body bgcolor="#3399FF">
<p>
Congratulazioni <%=strNome%>&nbsp;<%=strCognome%>, la fase di registrazione è andata a buon fine, ora puoi entrare nel pannello principale.
<p>
Ti ricordiamo che per la Skill card che hai appena acquistato è gratuita e che per il ritiro di essa dovrai_________________
<p>
<b>
Il tuo codice Skill Card è<%=strCodice%></b>
<p>
<a href="elenco_sedi.asp">Entra</a>
</body>
</html>
879 messaggi dal 09 luglio 2002
www.i-studio.it
Secondo me dovresti fare cosi':

dim objConn
dim objRs
dim strCognome
dim strNome
dim strCodice
dim Codice_Skills
set objConn = Server.CreateObject("ADODB.Connection")
objConn.connectionstring="DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=C:\inetpub\wwwroot\ecdl\ecdl.mdb"
objConn.Open
set objRs = Server.CreateObject("ADODB.Recordset")

objRs.open "SELECT Codice FROM Codici_Nuovi WHERE utilizzato=False", objConn, 0, 1
if not objRs.EOF then
codice_skill = objRs("codice")
else
Response.Write "Si è verificato un errore"
response.end
end if
objRs.close

objRs.Open "Kw_Registrati", objConn, adLockOptimistic, adCmdTable
objRs.AddNew
objRs("Cognome")=trim(request.form("Cognome"))
objRs("Nome")=trim(request.form("Nome"))
objRs("Indirizzo")=trim(request.form("Indirizzo"))
objRs("Cap")=trim(request.form("Cap"))
objRs("Città")=trim(request.form("Citta"))
objRs("Provincia")=trim(request.form("Provincia"))
objRs("Nazione")=trim(request.form("Nazione"))
objRs("Telefono")=trim(request.form("Telefono"))
objRs("E-mail")=trim(request.form("E-mail"))
objRs("Scolarità")=trim(request.form("Scolarita"))
objRs("Data_Nascita")=trim(request.form("Data_Nascita"))
objRs("Luogo_Nascita")=trim(request.form("Luogo_Nascita"))
objRs("occupazione")=trim(request.form("Occupazione"))
objRs("Codice_Skills")=codice_skill

objRs.Update
objRs.Close
set objRs=Nothing
objConn.Close
set objConn=Nothing
...


Internetworking Studio Srl
www.i-studio.it
26 messaggi dal 14 ottobre 2002
Grande!!, il codice ora lo prende, ma ora devo aggiornare il record da dove ho preso il codice rendendo il campo Utilizzato=Yes
Grande!
Questo ultimo aiuto e ti faccio un monumento
Mabel
879 messaggi dal 09 luglio 2002
www.i-studio.it
Come ti dicevo, la cosa piu' corretta e' usare le transazioni, perche' altrimenti potresti trovarti in situazioni "scorrette".
Quindi:

on error resume next

dim sqlOK

sqlOK = true

objConn.BeginTrans

err.clear
objRs.Open "Kw_Registrati", objConn, adLockOptimistic, adCmdTable
objRs.AddNew
objRs("Cognome")=trim(request.form("Cognome"))
objRs("Nome")=trim(request.form("Nome"))
objRs("Indirizzo")=trim(request.form("Indirizzo"))
objRs("Cap")=trim(request.form("Cap"))
objRs("Città")=trim(request.form("Citta"))
objRs("Provincia")=trim(request.form("Provincia"))
objRs("Nazione")=trim(request.form("Nazione"))
objRs("Telefono")=trim(request.form("Telefono"))
objRs("E-mail")=trim(request.form("E-mail"))
objRs("Scolarità")=trim(request.form("Scolarita"))
objRs("Data_Nascita")=trim(request.form("Data_Nascita"))
objRs("Luogo_Nascita")=trim(request.form("Luogo_Nascita"))
objRs("occupazione")=trim(request.form("Occupazione"))
objRs("Codice_Skills")=codice_skill

objRs.Update
objRs.Close
set objRs=Nothing

if err.number <> 0 then
sqlOK = false
end if

if sqlOK then
sql = "UPDATE Codici_Nuovi SET utilizzato=true WHERE Codice=" & codice_skill
err.clear
objConn.Execute sql
if err.number <> 0 then
sqlOK = false
end if
end if

if sqlOK then
objConn.CommitTrans
else
objConn.RollbackTrans
end if

objConn.Close
set objConn=Nothing


Ciao
Alessandro

Internetworking Studio Srl
www.i-studio.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.