28 messaggi dal 24 marzo 2001

Ho dei database Access relazionati tra di loro mediante il relativo contatore automatico (denominato ID e da me posto in tutti i database) - method=GET (se non non funziona la querystring)-. Se elaboro il listato della querystring su di un qualsiasi dato inserito, per es.:
<% Dim strUserid
strUserid=Request.Querystring("Userid")
%>
<%=strUserid%>
ottengo il valore della Userid. Però, se al posto di un dato inserito, metto ("ID"), non ottengo alcun valore. Eppure ho bisogno di tale valore per reinserirlo, come predefinito, nel nuovo form che è relazionato al primo. Non so se sono riuscito ad esprimermi. Se sì, come posso fare?
Grazie e saluti a tutti
coleporter

coleporter

coleporter
1.605 messaggi dal 06 settembre 2002
NO ma in che lingua parli.
non sono riuscito a capire.


FORZA LA MAGICA ROMA
28 messaggi dal 24 marzo 2001
In italiano sicuramente sì dal momento che ho due lauree; in "informatico" sicuramente no dal momento che sono un esordiente e di estrazione culturale completamente estranea, attendibilmente diversa dalla tua di sicuro più approfondita, dal tuo parlare, nel campo di specie. In ogni caso, ho cercato di esprimermi al meglio, evidentemente senza riuscirci. Ho studiato ASP su ASP 3.0 dell'Apogeo ed in tale testo per passare informazioni attraverso la stringa di interrogazione vengono riportate, a mo' (vuole dire "modo") di esempio, proprio le due righe da me immesse nel precedente post (quindi non mi sembra così trascendentalmente incomprensibile il mio "dialetto"). In sostanza, dopo aver letto i dati di un form con una pagina asp che li processa inserendoli in un database, se digito quelle tre linee per la querystring di listato al fine di ottenere quanto digitato in un campo, ad esempio "username", lo ottengo. Se viceversa la querystring la riferisco all'ID dello stesso database, non mi viene restituito alcun valore. A questo punto se, malgrado la mi "ignoranza" sono riuscito ad esprimermi, è bene e se puoi darmi una risposta, te ne sarò grato. Diversamente astieniti da commenti di carattere letterario perchè, oltrechè inutili, sono di dubbio gusto.
Grazie, comunque, per l'attenzione e saluti
coleporter

coleporter

coleporter
66 messaggi dal 05 giugno 2001
Scusa come fai a riferirti all'ID del database??Non è un contatore automatico??
Dovresti fare una query x ricavarlo?Forse nn ho capito il tuo problema!!!!
Ciao

Alessio Flaviani
http://digilander.iol.it/TYLER78
1.605 messaggi dal 06 settembre 2002
se ho capit bene tu vorresti inserire un record in una tabella con un campo id autonumber valorizzando i campi leggendoli da una form di inserimento.
per prima cosa quando si utilizza il get
con la request.Querystring puoi leggere solo i campi presenti nella form e valorizzati.

come seconda cosa secondo me ti converrebbe
usare method="post" in questo modo i valori passati non sono visibili sull'url e quindi più sicuri
quando poi li dovrai leggere invece che
request.Querystring dovrai usare
Request.Form("NomeCampo")

Come terza cosa l'id in una tabella che ha id autonumber non deve essere valorizzato nella stringadi insert es:
se abbiamo la tabella Alfa con due campi
Id Autonumber
Descrizione Testo(50)
valore numerico(4)

la stringa di inserimento sarà

insert into Alfa (Descrizione,numerico)
values('aaaa',22)

come vedi il campo id non viene nominato ma
essendo un autonumber viene calcolato automaticamente


ps:attenzione quando disegni una form che deve inviare dei dati contenuti nelle input al suo interno valorizza sempre le proprietà
ID e Name di ogni tag (Id Sarà uguale a name)
Es.:
Nome<input tipe="text" name="txtNome" id="txtNome">

Indirizzo<input tipe="text" name="txtInd" id="txtInd">

FORZA LA MAGICA ROMA
28 messaggi dal 24 marzo 2001
Ti ringrazio, Albis: forse comincio a capire (probabilmente ho o avevo in mente un preconcetto). Insomma: quando creo la querystring, mi sembra di aver compreso che il valore dell'autonumber viene trasmesso automaticamente. Ma allora mi chiedo: se mi servo della querystring in un collegamento ipertestuale, come mai nella url non si vede il valore dell'autonumber ma, dopo il punto interrogativo, si legge il valore del primo campo e dei successivi? Cerco di essere più chiaro: ho creato 4 database in Access: Utenti, Categoria, Argomento (Titolo) e Messaggio e li ho messi in relazione tra di loro "uno a molti" in modo che (nell'ambito della stessa sessione dell'utente che deve trasmettere un messaggio) l'ID (autonumber) di Utenti venga trasfuso in un campo di Categoria, Argomento e Messaggio; l'ID di Categoria sia immesso in un campo di Argomento e Messaggio e l'ID di Argomento venga immesso in un campo di Messaggio.
Ritenevo, quindi, che dopo aver raccolto con il primo form i dati dell'utente ed averli immessi nel database Utenti potessi ricavare con la querystring il valore dell'autonumber per trasportarlo, con un collegamento ipertestuale, nella pagina successiva dove si raccolgono i dati di Categoria e così via fino a Messaggio dove l'ID dellUtente dovrà essere sempre lo stesso iniziale [così dicasi per gli altri due ID (Categoria e Argomento)].
Così, senza perdermi in chiacchiere (magari incomprensibili): come faccio per riportare, nel form che richiede i dati di Categoria, l'ID di Utenti che si è creato automaticamente nel relativo database e così via per l'ID di Categoria da far finire in Argomento insieme al precedente ID Utenti etc.? Ci vanno a finire da soli a causa delle relazioni che ho creato o devo fare qualcosa?
Le relazioni in Access già le ho create. Tutto sta capire (da parte mia) come attuare il passaggio degli ID da ASP ad Access. Speriamo che riusciate ad interpretare quanto sopra. Salutoni, grazie e scusate lo...sproloquio.
coleporter

coleporter

coleporter
caro Renato (visto che mi ricordo?  ) prova a postare un po' di codice, in modo da aiutarti meglio.

cmq, a te serve inserire l'ID del record appena inserito nel database, esatto?
se è così, nell'archivio di unoscript@lgiorno puoi trovarne un primo esempio.

--
Daniele Bochicchio
<b>Content manager di http://www.aspitalia.com</b>
http://store.aspitalia.com/scheda.asp?codice=255
ASP 3 per esempi - il mio libro

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
1.605 messaggi dal 06 settembre 2002
Per prima cosa ti devo dire che quelli che tu chiami db o database
in realtà sono tabelle ( questo per un problema di comprensibilità anche in futuro )

in secondo luogo il collegamento che tu ai creato trà queste TABELLE controlla semplicemente l'integrità dei dati

ossia se nella tabella argomento esistono solo due elementi con id 1 e 2
e nella tabella titoli esiste un collegamento alla tabella categorie(foreign key) tale collegamento non permette che tu inserisca un elemento (record) nella tabella titolo sel il valore del campo di collegamento (es.:IdCategoria) non è 1 o 2.

comunque il fatto che tu abbia strutturato il database in questo modo non ha nessun effetto sul passaggio di dati da una pagina
e l'alra . le uniche informazioni che passa la prima pagina e che può leggere la seconda
pagina con la request.form o request.querystring sono gli ogetti (textbox,combo,...)contenuti nella form della prima pagina che non ha nessun collegamento con il Db e non può sapere quale sarà il Valore che calcolerà il Db per l'ID dell'utente.

se quello che ti serve è sapere quale ID il db ha assegnato al record che hai appena inserito

dopo aver eseguito la quary (istruzione nel database) che inserisce i valori nella tabella Utenti dovray eseguire una query che ti restituisca il valore dell'Id appena inserito

la query dovrà essere di questo tipo

"SELECT MAX(ID) from Utenti where Userid = '"
& Request.Querystring("Userid") & "'"

la funzione max restituisce il valore massimo
(in questo caso del campo ID della Tabella Utenti) e siccome il campo autonumber non fà
altro che inserire nel campo ID Il massimo che trova più 1 il risultato di questa query sarà il valore ID assegnato al record appena inserito .Per sicurezza ho inserito un ulteriore controllo ovvero gli ho chiesto di dirmi l'Id più elevato di quelli che hanno il campo UserId Uguale a quello appena inserito, questo perche nel tempo (anche se infinitesimale) che trascorre trà l'inserimento e l'esequzione della seconda quary potrebbe capitare che venga inserito un'altro utente e quindi aumenti il campo ID.

ti faccio un esempio:
presupponendo che nella tabella degli utenti ci siano 3 elementi
1° Userid="alfio" ID = 1
2° Userid="mario" ID = 2
3° Userid="Gino" ID = 3

nella pagina di inserimento inserisci un utente che si chiama antonio
Il DB assegnerà a questo elemento l'ID 4
perche il più grande fino ad ora è 3 e 3+1 fà 4
quindi 4° Nome="antonio" ID = 4
se nel frattempo qualqunaltro ha inserito un'altro utente per esempio Peppone
nel db Risulterà
1° Userid="alfio" ID = 1
2° Userid="mario" ID = 2
3° Userid="Gino" ID = 3
4° Nome="antonio" ID = 4
5° Nome="Peppone" ID = 5

quindi se ora con la seconda quary chiedi semplicemente qule è il maggiore(MAX(ID)) allora ti verrà risposto 5
mentre se specifichi quale è il maggiore con userId = "antonio" ti verrà risposto 4







FORZA LA MAGICA ROMA

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.