Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

razs

rs.fields, recordcount=0 e order by não funcionam

Recommended Posts

Boas pessoal, estou com algumas duvidas neste novo projecto e gostaria de saber se alguem percebe o porque destes erros.

 

 

1) Num formulário eu tenho um campo chamado data_nasc e eu dou três selects dia,mês e ano, eu gostava que os 3 valores aparececem separados por - no campo data_nasc

 

esta é a minha ideia mas deve estar algo mal.

rs.fields("data_nasc")=request.form("Date_Birth_day")&"-"&request.form("Date_Birth_month")&"-"&request.form("Date_Birth_year")

 

2) Nesta situação a bd nao da nada apesar de eu ter la uns 16 users.

podem ver o resultado do codigo em baixo aqui:Clique aqui

set conn = CreateObject ("ADODB.Connection")
conn.Provider = "microsoft.jet.oledb.4.0"
conn.Open Server.MapPath ("db/12345678.mdb")
set rs = Server.CreateObject ("ADODB.Recordset")
instotal = "SELECT * FROM usuários WHERE '" & tbl & "' LIKE '" & tbl1 & "'"
rs.open instotal, conn, 1


Response.Write "(" & instotal & ")"
%> <br>% <
Response.Write "(" & rs.RecordCount & ")"

 

 

3) De modo a poder ordenar alfabeticamente fiz isto:

Username<a href="viewuser.asp?tbl2=username&dir=ASC"><img src="images/up.jpg"></a>	
<a href="viewuser.asp?tbl2=username&dir=DESC"><img src="images/down.jpg"></a>

 

A conexao esta feita assim e apesar de aparecerem os campos ele nao faz nada.

Podem ver aqui:Clique aqui

 

<%
Dim tbl
Dim dir
tbl2= request.queryString("tbl2")
dir= request.queryString("dir")


set conn = CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.Oledb.4.0"
   conn.Open Server.MapPath("db/12345678.mdb")
set rs=server.createobject("adodb.recordset")
instotal = "select * from users ORDER BY '" & tbl& " " & dir& "' " 
rs.open instotal,conn,3,3

Response.Write "("&rs.recordCount&")"	

if rs.recordcount > 0 then 


%>

 

Peço desculpa pelo longo post e por abordar 3 questões mas penso que seria melhor que estar a abrir 3 post de uma vez.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

para usar o RecordCount , seu cursortype tem k ser recordset.CursorType = 3 (AdOpenDynamic), e dê um response.write na sua string SQL para ver o que esta sendo passado, pois usando o LIKE ele irá trazer apenas os registros que satisfazem esse critério

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz essas alterações mas continua na mesma

 

(SELECT * FROM users WHERE 'username' LIKE 'ras')

(0)

 

 

e

 

 

Microsoft JET Database Engine error '80040e14'

 

Syntax error (missing operator) in query expression ''username' 'asc''.

 

/usercorc/viewuser.asp, line 26

Compartilhar este post


Link para o post
Compartilhar em outros sites

o like não está com o % para definir onde é que deve ser aplicada a regra. Da forma fizeste ele está fazendo o mesmo que username = 'ras'

 

Informação: não é necessário o uso de apóstrofo no nome da coluna já que ela não contem caracter especial, porém vi que a tabela está com nome de usuários e recomendaria não utilizar caracteres especiais em nomes de objetos do banco de dados(mesmo usando access considere 'objetos' e 'banco de dados') :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a linha de codigo do erro agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o field data continua a nao gravar os 3 formulários mas o mais importante é o seguinte:

 

Vou postar o código e o link para o erro de modo a poderem ver melhor.

irao precisar de fazer o login, pode utilizar

 

username:admin

pass:1234

 

 

<%
Dim tbl2
Dim dir
tbl2= request.queryString("tbl2")
dir= request.queryString("dir")

set conn = CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.Oledb.4.0"
   conn.Open Server.MapPath("db/12345678.mdb")
set rs=server.createobject("adodb.recordset")
instotal = "select * from users ORDER BY '" & tbl2& "' '" & dir& "' " 
rs.open instotal,conn,1,3

Response.Write "("&instotal&")"
%><br><%
Response.Write "("&rs.recordCount&")"		

if rs.recordcount > 0 then 

%>

http://users9.jabry.com/usercorc/viewuser.asp?tbl2=username&dir=asc

 

O outro é:

 

<%
Dim tbl
Dim tbl1
tbl= request.queryString("tbl")
tbl1= request.queryString("tbl1")

		set conn = CreateObject("ADODB.Connection")
		conn.Provider = "Microsoft.Jet.Oledb.4.0"
		conn.Open Server.MapPath("db/12345678.mdb")
		set rs=server.createobject("adodb.recordset")
		instotal = "SELECT * FROM users WHERE '" & tbl& "' LIKE '%" &tbl1& "%'" 
		rs.open instotal,conn,1,3

		Response.Write "("&instotal&")"
		%><br><%
		Response.Write "("&rs.recordCount&")"	

	if rs.recordcount > 0 then 		
%>			

 

http://users9.jabry.com/usercorc/generalview.asp?tbl=username&tbl1=ras

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada.

 

dá um response.write na string SQL, para ver o que esta sendo passado

response.write(SQL)

response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu ja fiz isso.

 

(SELECT * FROM users WHERE 'username' LIKE '%ras%')

(0)

 

 

 

Microsoft JET Database Engine error '80040e14'

 

Syntax error (missing operator) in query expression ''username' 'asc''.

 

/usercorc/viewuser.asp, line 25

 

Os nomes dos campos foi a primeira coisa que fiz, estao todos correctos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

este erro é esquisito, apesar de não lembrar ser verifique se a palavra users não é reservada

 

coloque-a entre colchetes

 

Onde está este ASC que o erro aponta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, entre o que? colchetes, o que é isso?

 

user é reservado mas eu uso users por isso nao pode ser dai

 

 

o erro aponta para esta linha

rs.open instotal,conn,1,3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tire o ORDER BY temporariamente para ver se apenas SELECT * FROM users dá erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

 set rs=server.createobject("adodb.recordset")
       instotal = "select * from users ORDER BY '" & tbl2& "' '" & dir& "' " 
       rs.open instotal,conn,1,3

Acho que isso está errado porque deveria existir uma virgula em ORDER BY '" & tbl2& "','" & dir& "' "

Compartilhar este post


Link para o post
Compartilhar em outros sites

viva, com a virgula funcionou os dados aparecem mas nao ordena.

aparece do mesmo modo que nao tendo la o order by

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na string SQL, para ver o que esta sendo passado

response.write(SQL)

response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que nem é isso Daniel pois pelo que vi o DIR é aspenas como ordenará ASC ou DESC ou seja não deve ter virgula

 

Ou estou enganado?

 

O razs nunca posta o que pedimos por isso não dá para fechar a questão que deve ser apenas uma bobagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que precisam, eu tenho tentado responder a todas a vossas questoes, peço desculpa se deixei passar alguma coisa.

 

response.write (sql) da isto

(select * from users ORDER BY 'username', 'asc')

 

Dim tbl2
Dim dir
tbl2= request.queryString("tbl2")
dir= request.queryString("dir")

set conn = CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.Oledb.4.0"
   conn.Open Server.MapPath("db/12345678.mdb")
set rs=server.createobject("adodb.recordset")
instotal = "select * from users ORDER BY '"&tbl2&"', '"&dir&"'"  
rs.open instotal,conn,1,3


Response.Write "("&instotal&")"

 

Se precisarem de mais alguma coisa é só dizer, peço desculpa se me esqueci de algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

As aspas estão a mais ali

 

Tente por isso

 

instotal = "select * from users ORDER BY " & tbl2 & " " & dir

 

Deve resolver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resultou :D apenas acrescentei &"" a tua linha, muito obrigado já andava a dar em doido...

 

 

Em relação a esta situação:

 

set conn = CreateObject("ADODB.Connection")
		conn.Provider = "Microsoft.Jet.Oledb.4.0"
		conn.Open Server.MapPath("db/12345678.mdb")
		set rs=server.createobject("adodb.recordset")
		instotal = "SELECT * FROM users WHERE '" & tbl& "' LIKE '%" &tbl1& "%'" 
		rs.open instotal,conn,1,3

 

os response.write sql da

(SELECT * FROM users WHERE 'username' LIKE '%admin%')

 

Mesmo tirando as % do select da isto

(SELECT * FROM users WHERE 'username' LIKE 'admin')

 

se eu fizer um record count ele devolve 0 embora aquele user exista

 

se tirar as plicas como no caso anterior ele da erro

Microsoft JET Database Engine error '80040e10'

 

No value given for one or more required parameters.

 

/usercorc/generalview.asp, line 25

a linha 25 é esta

 

rs.open instotal,conn,1,3

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.