32 messaggi dal 06 settembre 2002
Gentili iscritti,

ho un database con 2 tabelle,

la prima che si chiama password, ha 3 campi:

Idutente "Chiave primaria"
Password
NomeUtente

la seconda ha:

Nome
Cognome
Email
.....
.....
Idutente "Deve contenere il valore della chiave primaria ma non lo è per questa tabella"

Ho poi un form dal quale dovrei compilare le due tabelle.

Come faccio ad inserire il valore Idutente nella seconda tabella, che sia lo stesso della prima?

Grazie per qualsiasi suggerimento

Ciao

Saulk

41 messaggi dal 15 maggio 2001
perchè non sposti le colonne
Idutente "Chiave primaria"
Password
NomeUtente
sulla seconda tabella?!
la gestione sarebbe anche più facile!
altrimenti devi avere una colonna idutente identica anche nella seconda tabella
ciao


32 messaggi dal 06 settembre 2002
forse è un pò scritto male, ma c'è anche nella seconda tabella.

mi servirebbe uno script per inserire quel valore anche nella seconda tabella.

ciao e grazie per l'interessamento

Saulk

41 messaggi dal 15 maggio 2001
spiegati meglio!
percaso i due campi chiave sono campi ambedue di tipo contatore?
cioe si autoincrementano?



32 messaggi dal 06 settembre 2002
no, il campo nella seconda tabella deve avere il valore di quello del primo.

il primo è autoincrementante.

il problema è che devo inserire quel valord autoincrementato, nella seconda tabella(l'incremento lo fà la prima tabella quando lo inserisco).

non riesco però, una volta che la prima tabella se lo è creato, a scriverlo nella seconda.

ti posto una parte del codice da guardare.

Grazie comunque di tutto
'*******************Inserimento nel database del nuovo utente***********

Set rsPassword = server.CreateObject ("ADODB.Recordset")
QueryPassword = "SELECT * FROM Password"
rsPassword.Open QueryPassword, ConnDB, adopenstatic, adlockoptimistic
rsPassword.AddNew
rsPassword.Fields("NomeUtente") = NomeUtente
rsPassword.Fields("Password") = Password

rsPassword.Update


Set rsUtente = server.CreateObject ("ADODB.Recordset")
QueryUtente = "SELECT * FROM Utenti"
rsUtente.Open QueryUtente, ConnDB, adopenstatic, adlockoptimistic
rsUtente.AddNew
rsUtente.Fields("Nome") = Nome
rsUtente.Fields("Cognome") = Cognome
rsUtente.Fields("Indirizzo") = Indirizzo
rsUtente.Fields("Citta") = Citta
rsUtente.Fields("Provincia") = Provincia
rsUtente.Fields("Telefono") = Telefono
rsUtente.Fields("E-Mail") = EMail
rsUtente.Fields("Eta") = Eta
rsUtente.Fields("Professione") = Professione
rsUtente.Fields("Studi") = Studi
rsUtente.Fields("IDUtente") = rsPassword.Fields("IDUtente")
rsUtente.Update

rsUtente.Close
rsPassword.Close

ConnDB.Close

'***********************************************************************


Quello che non fà è inserire il campo di questa riga

rsUtente.Fields("IDUtente") = rsPassword.Fields("IDUtente")

mette il campo vuoto.

GRAZIE DI NUOVO
Saulk

41 messaggi dal 15 maggio 2001
perchè non fai una
"select max(idutente) as massimo from tabella1" dopo il primo inserimento
butti il risultato in un recordset
(rs("massimo") e questultimo lo scrivi nella tabella.
attenzione a gestire la concorrenza!
e qui si apre un mondo!
capito?!
ciaoooooo

32 messaggi dal 06 settembre 2002
grazie per il consiglio, potrebbe funzionare, ma che succede se due utenti stanno facendo la stessa cosa contemporaneamente?????

cosa intendi per gestire la concorrenza???


ciao

Saulk


41 messaggi dal 15 maggio 2001
intendo che 2 o più utenti stanno facendo la stessa cosa per cui potrebbe sorgere il problema di avere una select max di un altro utente!!!!!
quello che puoi fare è
anteporre a tutte le transazioni
il codice
ConnDB.begintrans

e alla fine di tutto
ConnDB.committrans

questo dovrebbe bloccarti le tabelle ottimisticamente cioè lasciando l'arbitrario al database....
ciao



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.