Ir para conteúdo

POWERED BY:

Arquivado

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

asdruboows

Busca avançada em SQL?

Recommended Posts

Deu erro

 

Microsoft VBScript runtime error '800a000d'

 

Type mismatch

 

/ipsemg/busca.asp, line 179

 

178 - palavra2=split(request.form("busca")," ")179 - sqlstmt = "SELECT * FROM ARQUIVO WHERE palavra_chave LIKE '%" & palavra2 & "%'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

não é bem assim caravocê precisará usar um FOR para criar sua string SQL pois o array não poderá entrar ali diretamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

se poder me ajudar...

 

a que eu tenho é assim

 

key = request.form("busca")Dim palavra(10)mArray = 0x = Len(key)for i = 1 to xletra = Mid(key,i,1)if letra <> " " Thenpalavra(mArray) = palavra(mArray) & letraElsemArray = mArray + 1End IfNext

como fazer pra essa ai que você me passou rodar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

sqlstmt = "SELECT * FROM ARQUIVO WHERE"dim i 'declarando i. Só precisa se você estiver usando option explicitFOR i= LBOUND(palavra2 ) to UBOUND(palavra2 )sqlstmt = sqlstmt & "palavra_chave LIKE '%"&palavra2(i)&"%' AND"NEXT

Compartilhar este post


Link para o post
Compartilhar em outros sites

so que terá o problema que gerará um AND a mais do que deveria então você deverá retira-lo, veja se o codigo abaixo tirá o ultimo end . poe ele abaixo do FOR anterior

sqlstmt =LEFT(sqlstmt, len(sqlstmt )-4)&RIGHT(sqlstmt, 1)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficaria assim?

 

palavra2=split(request.form("busca")," ")sqlstmt = "SELECT * FROM ARQUIVO WHERE"FOR i= LBOUND(palavra2 ) to UBOUND(palavra2 )sqlstmt = sqlstmt & "palavra_chave LIKE '%"&palavra2(i)&"%' AND"NEXTSet RS3=Conn3.Execute(sqlstmt)

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha minha mensagem anterior poe aquela linha abixo do for e testa, se der erro me diz o que é

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso do OU seria só trocar o AND por OR e naquela linha corretora abaixo do for você trocaria o -4 por -3.Qualquer duvida ou erro pode postar

Compartilhar este post


Link para o post
Compartilhar em outros sites

palavra2=split(request.form("busca")," ")sqlstmt = "SELECT * FROM ARQUIVO WHERE"FOR i= LBOUND(palavra2 ) to UBOUND(palavra2 )sqlstmt =LEFT(sqlstmt, len(sqlstmt )-4)&RIGHT(sqlstmt, 1)sqlstmt = sqlstmt & " PALAVRAS_CHAVE LIKE '%"&palavra2(i)&"%' AND"NEXT

seria isso? tá dando erro...

error '80040e14'

/ipsemg/busca.asp, line 186

essa é a linha

Set RS3=Conn2.Execute(sqlstmt)

Compartilhar este post


Link para o post
Compartilhar em outros sites

palavra2=split(request.form("busca")," ")sqlstmt = "SELECT * FROM ARQUIVO WHERE"FOR i= LBOUND(palavra2 ) to UBOUND(palavra2 )sqlstmt =LEFT(sqlstmt, len(sqlstmt )-4)&RIGHT(sqlstmt, 1)sqlstmt = sqlstmt & " PALAVRAS_CHAVE LIKE '%"&palavra2(i)&"%' AND"NEXT

TROCA POR ISSO

palavra2=split(request.form("busca")," ")sqlstmt = "SELECT * FROM ARQUIVO WHERE"FOR i= LBOUND(palavra2 ) to UBOUND(palavra2 )sqlstmt = sqlstmt & " PALAVRAS_CHAVE LIKE '%"&palavra2(i)&"%' AND"NEXTsqlstmt =LEFT(sqlstmt, len(sqlstmt )-4)&RIGHT(sqlstmt, 1)

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando disse abaixo do FOR era abaixo dele todo até o NEXT, mas troca ai e vê o que dá

Compartilhar este post


Link para o post
Compartilhar em outros sites

FUNCIONOU??OU DEU NOVO ERRO??

Compartilhar este post


Link para o post
Compartilhar em outros sites

palavra2=split(request.form("busca")," ")sqlstmt = "SELECT * FROM ARQUIVO WHERE"FOR i= LBOUND(palavra2 ) to UBOUND(palavra2 )sqlstmt = sqlstmt & " PALAVRAS_CHAVE LIKE '%"&palavra2(i)&"%' AND"NEXTsqlstmt =LEFT(sqlstmt, len(sqlstmt )-4)&RIGHT(sqlstmt, 1)Set RS3=Conn2.Execute(sqlstmt)

erro:

error '80040e14'

/ipsemg/busca.asp, line 187

linha 187: Set RS3=Conn2.Execute(sqlstmt)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Set RS3=Conn2.Execute(sqlstmt)

 

Não sei se precisa do Set RS3= , pelo menos ai nessa parte do codigo não.

 

você já definiu esta conexão Conn2 acima??

 

Se já coloque apenas Conn2.Execute(sqlstmt)

 

Se não defina antes de executa-la

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok... mas como que vai exibir os resultados?

tipo;

response.write("<Table border=""1"" cellpadding=""0"" cellspacing=""0"" Align=""Center""  borderColor=""#000000"" Background="""" Width=""100%""> ")response.write("<TR>")response.write("<TD Width=""100%"" BGCOLOR="""  & Coloralt  & """><Font Face=""Arial"" Color=""#000000"">[B]" & RS3("TITULO") & "[/B]</Font></TD>")response.write("</TR>")response.write("</Table>")

Compartilhar este post


Link para o post
Compartilhar em outros sites

FAZ ASSIM

 

TROCA O SEU CODIGO DE CONEXÃO POR ESTE

 

A PARTE EM AZUL DESCONSIDERE, É SO COMENTARIOS, O RESTO É CODIGO

 

'------------------------------------------------------------------------------------------

 

palavra2=split(request.form("busca")," ")

 

sqlstmt = "SELECT * FROM ARQUIVO WHERE"

 

FOR i= LBOUND(palavra2 ) to UBOUND(palavra2 )

sqlstmt = sqlstmt & " PALAVRAS_CHAVE LIKE '%"&palavra2(i)&"%' AND"

NEXT

 

sqlstmt =LEFT(sqlstmt, len(sqlstmt )-4)&RIGHT(sqlstmt, 1)

 

 

' Cria a conexão com o banco de dados.

set rs = Server.CreateObject("ADODB.Recordset")

rs.ActiveConnection = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("bd.mdb")

'Na linha acima não esqueça de colocar o caminho correto do bd

' Cria a string SQL responsável por inserir os dados no banco de dados.

rs.Source = sqlstmt

rs.CursorType = 0

' CursorLocation informa o local onde será armazenado

rs.CursorLocation = 2

' Tipo de bloqueio ( somente leitura, escrita ...) no modo abaixo, pode-se inserir no bd.

rs.LockType = 2

' Abre a conexão com o banco de dados.

rs.Open()

 

'------------------------------------------------------------------------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

AI PRONTO É SÓ MOSTRAR NA TELA

 

response.write("<Table border=""1"" cellpadding=""0"" cellspacing=""0"" Align=""Center"" borderColor=""#000000"" Background="""" Width=""100%""> ")

response.write("<TR>")

response.write("<TD Width=""100%"" BGCOLOR=""" & Coloralt & """><Font Face=""Arial"" Color=""#000000"">" & RS("TITULO") & "</Font></TD>")

response.write("</TR>")

response.write("</Table>")

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%Set Conn = Server.CreateObject("Adodb.Connection")Dim DSNtempDSNtemp="Provider=sqloledb;"DSNtemp=DSNtemp & "Data Source=bonito;Initial Catalog=ipsemg;User Id=****;Password=****"Conn.open DSNtemp%>

esse é meu arquivo de conexão!

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.