13 messaggi dal 29 agosto 2003
Su una routine di controllo di un titolo l'apostrofo viene riconosciuto come fine titolo, quindi non corrispondente al titolo scritto sul form.

*********************************************
ADODB.Recordset errore "800a0bb9'
Gli argomenti non sono di tipo valido, non sono compresi nell'intervallo consentito o sono in conflitto.
/Midibase/MidiBaseInsert.asp, riga 39
*********************************************

Quando nel FORM Titolo inserisco l'apostrofo ' es: L'auto, è nera (forma l'errore) Lauto, è nera (va bene)

Questa routine (MidiBaseInsert.asp) controlla se ci sono titoli uguali e se li trova ti da il Response.Write:

<%

Titolo=Request.Form("Titolo")

RsId0.Source = "MidiBase"
RsId0.Open = "SELECT Titolo FROM MidiBase order by id desc"

(Riga 39)
RsId0.Filter = "Titolo = '" & Titolo & "'"
If RsId0.Recordcount = 1 Then

Response.Write"Il titolo c'è"

Else

RsId0.Close
RsId0.Filter = adFilterNone

' continua routine

%>

Come posso ovviare a questa cosa!

Ho provato con:
strTitolo=cstr(NomeTitolo)
ma non trasforma --->>>> ( ' ) l'apostrofo !!!

Barone57




Modificato da Barone57 il 03 ottobre 2003 17.36 -

Modificato da Barone57 il 03 ottobre 2003 17.37 -
2.584 messaggi dal 14 maggio 2001
Prova con:

strTitolo=Replace(strTitolo,"'",chr(146))
13 messaggi dal 29 agosto 2003
Niente da fare!
Baipassa il controllo del titolo e va a fare direttamente
l'AddNew...

<%
Titolo=Request.Form("Titolo")

Dim strTitolo
strTitolo=Titolo

RsId0.Source = "MidiBase"
RsId0.Open = "SELECT Titolo, Autore FROM MidiBase order by id desc"

strTitolo=Replace(strTitolo,"'",chr(146))

RsId0.Filter = "Titolo ='" & strTitolo & "'"
If RsId0.Recordcount = 1 Then
Response.Write" il titolo c'è cambialo !"

Else

RsId0.Source = "MidiBase"
RsId0.Open

RsId0.AddNew
RsId0("Titolo") = request.form("Titolo")
RsId0.Update

%>

IL CONTROLLO DEL TITOLO E' IMPORTANTE
CIOE' NON FAR SOVRASCRIVERE UN TITOLO CHE POTREBBE CORRISPONDERE AD UN ALTRO AUTORE E CHE ABBIA UN BRANO CON LO STESSO TITOLO.

Questo fatto dell'apostrofo è anomalo anche quando si fa la ricerca di un titolo!

Qualche altra soluzione?
grazie della prima...
Barone57

Modificato da Barone57 il 05 ottobre 2003 10.55 -

Modificato da Barone57 il 05 ottobre 2003 11.15 -

Modificato da Barone57 il 05 ottobre 2003 11.22 -
2.584 messaggi dal 14 maggio 2001
Prova a modificare così:

<%
Titolo=Request.Form("Titolo")

Dim strTitolo
strTitolo=Titolo

RsId0.Source = "MidiBase"
strTitolo=Replace(strTitolo,"'",chr(146))
RsId0.Open = "SELECT Titolo, Autore WHERE Titolo ='" & strTitolo & "' FROM MidiBase order by id desc"

If rst.eof=False Then
Response.Write" il titolo c'è cambialo !"

Else

RsId0.Source = "MidiBase"
RsId0.Open

RsId0.AddNew
RsId0("Titolo") = request.form("Titolo")
RsId0.Update

%>
13 messaggi dal 29 agosto 2003
Macchè, la risposta è:
[Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query 'Autore WHERE Titolo ='La scuola dei serpenti''.
* anche con un titolo senza apostrofo.

Punto a capo:

<%
Dim strTitolo
strTitolo=cstr(Request.Form("Titolo"))

RsId0.Source = "MidiBase"
RsId0.Open = "SELECT Titolo, Autore FROM MidiBase order by id desc"

* Response di prova
Response.Write" il titolo " &strTitolo &" c'è, corrisponde ad all'autore "& RsId0("Autore") &", cambialo con ecc...ecc.. !"

* La risposta di esistenza del titolo con l'apostrofo (o senza) la da in questa riga
* ma chiaramente non ha nessun riferimento id per poter stabilire di che autore è,
* prendendo così l'ultimo inserito, è qui sotto che controllando il titolo deve fare riferimento
* anche all'autore per associargli il titolo esistente. Ma naturalmente da errore di conflitto.

RsId0.Filter = "Titolo='"&strTitolo&"'"
If RsId0.Recordcount = 1 Then

* Dopo il controllo di un titolo senza apostrofo:

Response.Write" il titolo " & strTitolo &" c'è, corrisponde ad all'autore "& RsId0("Autore") &", cambialo con ecc...ecc.. !"

* LA ROUTINE FUNGE BENISSIMO se il titolo, ripeto, è senza apostrofo ed è perfetta:
* se per es: l'autore che stai inserendo è la [PFM] e come Titolo del brano: [Il banchetto],
* se il titolo risulta già nel Database e fa capo ad un'altro autore, effettivamente
* la schermata di risposta è:

Spiacente, il titolo [Il banchetto] esiste nel DataBase ed è dell'autore [Pinco Pallino] dovrai cambiarlo in ecc.. ecc...

* e fino a qui è tutto ok!

* Da errore di conflitto solo se il titolo è es: L'imbarco, o L'impossibile vivere.
* insomma solo con questo maldidos di un apostrofo!
* è come se strTitolo non corrispondesse a quello del DB. boh!

****************************************

SE INVECE METTO COSì addirittura anche un titolo senza apostrofo da errore:

strTitolo=Replace(strTitolo,"'",chr(146))

* Qui da sempre la risposta di esistenza del titolo con l'apostrofo o senza,
* sempre senza nessun riferimento.
* poi da l'errore (sotto) alla riga RsId0.Filter anche con un titolo senza apostrofo:

RsId0.Filter = "Titolo='"&strTitolo&"'"
If RsId0.Recordcount = 1 Then

* Risposta di schermata:

ADODB.Recordset errore "800a0cc1'
impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto.

* sicuramente non associa strTitolo del form con strTitolo di RsId0.Filter, mah!
* ci sarà bisogno di qualche altro codice?

Grazie della pazienza
Barone57
2.584 messaggi dal 14 maggio 2001
Scusami non ho letto bene quanto ho scritto....
quello che volevo farti fare è togliere il filtro e mettere una condizione nella tabella l'Sql corretto è:

Titolo=Request.Form("Titolo")
Dim strTitolo
strTitolo=Titolo
strTitolo=Replace(strTitolo,"'",chr(146))
RsId0.Open = "SELECT Titolo, Autore FROM MidiBase WHERE Titolo ='" & strTitolo & "' FROM MidiBase order by id desc"
If rst.eof=False Then
Response.Write" il titolo c'è cambialo !"
Else
RsId0.AddNew
RsId0("Titolo") = request.form("Titolo")
RsId0.Update
...
13 messaggi dal 29 agosto 2003
IDEM

Titolo=Request.Form("Titolo")
Dim strTitolo
strTitolo=Titolo
strTitolo=Replace(strTitolo,"'",chr(146))
RsId0.Open = "SELECT Titolo, Autore FROM MidiBase WHERE Titolo ='" & strTitolo & "' FROM MidiBase order by id desc"

risposta:
[Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query 'Titolo ='L?auto corre lontana ma io corro da te' FROM MidiBase'.

If rst.eof=False Then

nc'è niente da fa, non funge!
2.584 messaggi dal 14 maggio 2001
Scusami ma oggi sono un po' raffreddato... ti sto facendo scrivere cose senza senso:

RsId0.Open = "SELECT Titolo, Autore FROM MidiBase WHERE Titolo ='" & strTitolo & "' order by id desc"

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.