57 messaggi dal 29 settembre 2001
Qualcuno mi aiuta a capire cosa c'è che non funziona?
l'errore è:
Microsoft OLE DB Provider for ODBC Drivers errore "80004005"

[Microsoft][Driver ODBC Microsoft Access] Il riferimento al campo specificato 'Username' potrebbe essere relativo a più tabelle elencate nella proposizione FROM dell'istruzione SQL.

<%
dim Username, Password, Email

Username = trim(request.form("Username"))
Password = trim(request.form("Password"))
Email = trim(request.form("Email"))

If len(Username) = 0 OR len(Password)= 0 OR len(Email) = 0 Then

%>
I campi E-mail, Username e Password sono obbligatori
<%

Else

SQL = "SELECT Username, Password FROM tabellaA, tabellaB WHERE tabellaA.Username = '"&Username&"' OR tabellaA.Password = '"&Password&"' AND tabellaB.Username = '"&Username&"' OR tabellaB.Password = '"&Password&"' "

Set rs = conn.execute(SQL) 'qui c'è l'errore
If not rs.EOF then
rs.close
Set rs = nothing
Conn.close
Set Conn = nothing
response.redirect "utente_esistente.asp"

Else

dim SQL

rs.close
Set rs = nothing
SQL = "INSERT into tabellaB (Nome, Cognome, Azienda, Telefono, Email, Username, Password, Data) values('" & Request.Form("Nome") & "', '" & Request.Form("Cognome") & "', '" & Request.Form("Azienda") & "', '" & Request.Form("Telefono") & "', '" & Email & "', '" & Username & "', '" & Password & "')"

Conn.execute(SQL)

Conn.close
Set conn = nothing

HTML = "<html>..." &_
"...</html>"


Set myMail = Server.CreateObject("CDONTS.NewMail")
myMail.From = "info@sito.it"
myMail.To = Email
myMail.Subject = "Conferma registrazione"
myMail.BodyFormat = 0
myMail.MailFormat = 0
myMail.Body = HTML
myMail.Send()
Set myMail = Nothing

response.redirect "benvenuto.asp"

end if

end if

%>

Qualcuno puo' darci un'occhiata? L'errore è nella prima query, il problema è che devo fare una query che controlli due tabelle per poi eventualmente inserire i dati nella seconda di queste due.
Grazie!

aiutooo



55 messaggi dal 06 settembre 2002
La tua versione è:
SQL = "SELECT Username, Password FROM tabellaA, tabellaB WHERE tabellaA.Username = '"&Username&"' OR tabellaA.Password = '"&Password&"' AND tabellaB.Username = '"&Username&"' OR tabellaB.Password = '"&Password&"' "

Modifica in:
SQL = "SELECT TabellaA.Username, TabellaA.Password FROM tabellaA, tabellaB WHERE tabellaA.Username = '"&Username&"' OR tabellaA.Password = '"&Password&"' AND tabellaB.Username = '"&Username&"' OR tabellaB.Password = '"&Password&"' "

Devi specificare anche nei campi di destinazione a quale tabella fai riferimento.

Ciao

AndreaB29

57 messaggi dal 29 settembre 2001
E' vero hai ragione. !

Qualcuno mi dice che se faccio una query su due tabelle senza il join potrei avere dei problemi, ne sai qualcosa? Forse pero' non ha capito bene perché a me serve solo controllare l'esistenza di username e password in entrambe le tabelle.


1.605 messaggi dal 06 settembre 2002
se fai una select su più tabelle senza metterle in join
ti viene restituito un prodotto cartesiano
dei risultati delle varie tabelle

nel tuo caso filtrando su entrambe le tabelle la tua select
funziona pure però è sempre corretto mettere in join le tabelle

in oltre facendo la select come la fai tu il database estrae tutti i dati (e facendo il prodotto cartesiano i dati possono essere moltissimi) e poi su questo risultato elimina i record che non soddisfano la condizione where
questo rallenta l'esecuzione della query

se invece le metti in join i dati vengono prefiltrati (le condizioni delle join vengono controllati prima di quelli delle where )

la tua select diventerebbe così


SQL = "SELECT TabellaA.Username, TabellaA.Password FROM tabellaA inner join
tabellaB on (tabellaA.Username = tabellaB.Username and tabellaA.Password = tabellaB.Username )
WHERE tabellaA.Username = '"&Username&"' OR tabellaA.Password = '"&Password&"' "

FORZA LA MAGICA ROMA

FORZA LA MAGICA ROMA
57 messaggi dal 29 settembre 2001
ho il problema che se username ( ad esempio Gallo) e password (ad esempio gallina) non sono entrambi presenti nelle due tabelle il codice qui sotto va ad inserire i dati anche se ci sono già.

SQL = "SELECT tabellaA.Username, tabellaA.Password FROM tabellaA inner join tabellaB on (tabellaA.Username = tabellaB.Username AND tabellaA.Password = tabellaB.Password) WHERE tabellaA.Username = '"&Username&"' OR tabellaB.Password = '"&Password&"'"

Set rs = conn.execute(SQL)

If not rs.EOF then
rs.close
Set rs = nothing
Conn.close
Set Conn = nothing
response.redirect "utente_esistente.asp"

Else

dim SQL

rs.close
Set rs = nothing
SQL = "INSERT into tabellaB (Nome, Cognome, Azienda, Telefono, Email, Username, Password, Data) values('" & Request.Form("Nome") & "', '" & Request.Form("Cognome") & "', '" & Request.Form("Azienda") & "', '" & Request.Form("Telefono") & "', '" & Email & "', '" & Username & "', '" & Password & "', '" & Date() & "')"

Conn.execute(SQL)



come posso fare?


57 messaggi dal 29 settembre 2001
intendo dire che un username e una password possono anche non esserci su entrambe le tabelle ma il select dovrebbe comunque prendere i dati, forse non riesco a spiegarmi bene.

57 messaggi dal 29 settembre 2001
risolto! come mi era già stato consigliato ho usato il comando UNION.

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.