[ yang @ 13.01.2004. 20:03 ] @
Prvi put sam na ovom forumu i moram priznati da me je izbor tema ugodno iznenadio. Vidim da početnici poput mene često dobivaju pomoć, pa se nadam da će i sa mnom biti isto.
Aplikacija je napisana u VB i radi s access bazom (Access 2000).
Cijela aplikacija je rađena tako da su prezentacijski sloj i sloj logike pomiješani u VBScript kodu asp stranice. Kod samog ulaska na home page registrirani posjetioc bi trebao biti pronađen u bazi podataka nakon što upiše svoje prezime i lozinku(zaporku), a svaki novi posjetioc ide prvo na registraciju.
E tu se javlja problem: u bazu "Razred" se učitavaju podaci novoregistriranoga, međutim ne čitaju se podaci postojećih članova u bazi ( npr.tablica Roditelji u kojoj su polja: RoditeljID, Ime, Prezime, Zaporka).
Gledam u svoj napisani kod već satima, ali mi ne ide, pa se nadam da ćete mi pomoći.
U ovom dijelu koda griješim:

<%@ Language=VBScript %>
<% if isempty(Request.Form("Zaporka")) then
Poruka="Unesite tra&#382ene podatke, te kliknite na sliku lijevo."
else
set conn = server.createobject ("adodb.connection")
conn.open "Razred"
set rsRoditelj = conn.execute ("SELECT RoditeljID FROM Roditelji where Prezime =' " _
&Request.Form("Prezime") & " ' and Zaporka ='" _
&Request.Form("Zaporka") & " ' ")
if rsRoditelj.EOF then
Poruka="Vi niste u našoj bazi podataka.Registrirajte se."
else
Session("RoditeljID") = rsRoditelj("RoditeljID")
Response.Redirect "sadrzaj.asp"
end if
end if
%>

Hvala
[ degojs @ 13.01.2004. 20:53 ] @
Pretpostavljam da je ime fajla "razred.mdb" ?

Code:

Dim conn
Set conn = Server.CreateObject("ADODB.Connection") 
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\putanja_do_baze\razred.mdb;Persist Security Info=False"


Dim rsRoditelj
Set rsRoditelj = Server.CreateObject("ADODB.Recordset") 

Dim SQL
SQL = "SELECT RoditeljID FROM Roditelji where Prezime =' " _
       & Request.Form("Prezime") & " ' and Zaporka ='" _
       & Request.Form("Zaporka") & " ' "

conn.Open     
rsRoditelj.Open SQL, conn

If rsRoditelj.EOF Then
  Poruka = "Vi niste u našoj bazi podataka.Registrirajte se."
Else
  Session("RoditeljID") = rsRoditelj("RoditeljID")
  Response.Redirect "sadrzaj.asp"
End If


Tako nekako. Problem je bio, čini mi se, kod definisanja connection string-a.


[ byTer @ 14.01.2004. 12:04 ] @
Ili ako ides sa ODBC samo dodaj
conn.opne "baza", "", ""

druga dva parametra su ti login i sifra.
[ yang @ 14.01.2004. 18:51 ] @
Hvala vam.
Probala sam, ali nažalost nije došlo ni do kakve promjene. Mislila sam da je možda problem u nekompatibilnosti VB6 i Accessa 2000 (u kojem je baza pravljena), pa sam probala i sa drugim bazama pravljenim u Accessu '97, međutim problem je isti.
Ako biste bili tako susretljivi da analizirate kod direktno uz uvid u bazu, mogu vam zipovati sporni dio aplikacije i bazu jer ja stvrano ne znam što da radim, jer sve dalje zahtjeva povezivanje s bazom i iščitavanje podataka iz iste.

Hvala još jednom.
[ degojs @ 14.01.2004. 19:06 ] @
Postavi zipovan fajl ovde na ES (prikači ga uz poruku) pa će verovatno neko da odvoji malo vremena da pogleda.
[ mladenovicz @ 15.01.2004. 11:17 ] @
Mislim da ti je ovde problem.

Code:

&Request.Form("Prezime") & " ' and Zaporka ='" _
&Request.Form("Zaporka") & " ' ")


iz ovoga dobijas

Code:

Prezime = ' vrednost1 ' and Zaporka = ' vrednost2 '


a ovo ti nece vratiti nista, jer imas spaceove na pocetku i kraju. Ovo treba da izgleda ovako.

Code:

Prezime = 'vrednost1' and Zaporka = 'vrednost2'


Znaci, ovo:
Code:

set rsRoditelj = conn.execute ("SELECT RoditeljID FROM Roditelji where Prezime =' " _
&Request.Form("Prezime") & " ' and Zaporka ='" _
&Request.Form("Zaporka") & " ' ")


zameni sa

Code:

set rsRoditelj = conn.execute ("SELECT RoditeljID FROM Roditelji where Prezime ='" _
&Request.Form("Prezime") & "' and Zaporka ='" _
&Request.Form("Zaporka") & "'")


Ovo sve pod uslovom da ti je connection string dobar, sto mozes testirati izbacivanjem WHERE dela iz SQL upita (probaj da ti upit vrati bilo sta).
[ yang @ 16.01.2004. 18:58 ] @
Nažalost to nije greška u kodu jer u orginalonoj aplikaciji nema spaceova unutar navodnika, tako da ni dalje ne znam u čemu je problem, pa ću poslati attachment s dijelom apliacije uz ovu poruku.
[ mladenovicz @ 17.01.2004. 13:39 ] @
Prikacio sam uz poruku asp fajl koji kod mene radi (kad sam testirao baza i ASP fajl su se nalazili u istom folderu-Inetpub\wwroot\). Napravio sam par sitnih izmena, pa pogledaj. I dalje nisam siguran sta je greska, ali probaj kao sto imas u izmenjenom asp fajlu da ispisujes SQL upit, pa da vidis kako izgleda i da li je tu problem. Meni na pocetku nije radilo jer textbox Prezime ima default vrednost " ", pa ako ukucam, na primer, pera, u SQL upitu je stajalo ' pera', tako da je moguce da je to problem.

[ yang @ 17.01.2004. 20:36 ] @
Željko hvala, hvala, hvala......!!!!!!!
Greška je zaista bila u space-u unutar navodnika kod textbox-a.
Nitko sretniji od mene sad. Adio.
Forum je sjajan i dobili ste još jednog stalnog posjetitelja.
[ mladenovicz @ 18.01.2004. 01:15 ] @

Ovo je bio jedan od onih problema cije resavanje zahteva 2 sekunde, a pronalazenje 5 dana.
[ yang @ 20.01.2004. 20:06 ] @
Evo me opet.I naravno opet s pitanjem: gdje sam falila ?
Greškaata type mismatch in criteria expression.
dnevnik.asp, line 20 ( set rsDetalji = conn.execute (Qry) )
U prilogu attachment.
Pozdrav, Mišel
[ mladenovicz @ 21.01.2004. 10:47 ] @
Code:

If isempty(Session("UcenikID")) Then
    Response.Write "dozvola_pristupa.asp"
End If


Pretpostavljam da ovde ide Redirect umesto Write. Ovako ce ako je isempty(Session("UcenikID")) nastaviti sa izvrsavanjem SQL upita i onda nastane type mismatch jer u SQLu imas samo UcenikID =, nema cemu to treba da bude jednako.

Ako ovo nije greska, onda nam treba vise detalja, npr. kog tipa je polje UcenikID?
[ yang @ 21.01.2004. 19:36 ] @
Ovaj put šaljem cijelu "aplikaciju" pa će greška bit vidljivija.
Hvala
[ mladenovicz @ 22.01.2004. 11:50 ] @
Svuda treba linije ovog tipa

Code:

<%rsDetalji("Ocjene") %>


da zamenis sa:

Code:

<%=rsDetalji("Ocjene") %>


znaci treba ubaciti znak =

Data type mismatch in criteria expression greska ocigledno ima veze sa upitom. S obizorm da je u WHEREu samo UcenikID, znaci da je to problem. Ako je polje UcenikID u tabeli Predmet tipa Text, onda ovo

Code:

Qry = "SELECT Naziv, Ocjene " _
& "FROM Predmet " _
& "WHERE UcenikID = " _
& Session("UcenikID")


treba da izgleda ovako

Code:

Qry = "SELECT Naziv, Ocjene " _
& "FROM Predmet " _
& "WHERE UcenikID = '" _
& Session("UcenikID") & "'"


Ako ovo ne pomogne, onda moras da okacis bazu, pa da vidimo sta je.
[ yang @ 22.01.2004. 19:15 ] @
Pa što da ti kažem Željko nego opet HVALA i to veliko HVALA!!!!

Mišel