Superwagtel 1 Denunciar post Postado Outubro 26, 2008 Sei fazer um sistema de busca simples no Dreamweaver Mas preciso criar um sistema de busca com dois campos No caso criei a pagina de busca com um menu de lista "marca" e um campo de texto "categoria" dentro do formulario "GET" e a action "resultado.asp" Na pg "resultado.asp" preenchi o Conjunto de Registros da seguinte forma: SQL: SELECT * FROM Categorias WHERE marca = 'MMColParam' AND categoria = 'categoria' Variáveis MMColParam 1 Request.QueryString("marca") categoria 1 Request.QueryString("categoria") A pg resultado está dando erro: Tipo de erro: Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério. /global/adm_clientes_upload_2.asp, line 251 Na linha 251 está escrito: Categorias.Open() O que faço para corrigir esta página resultado.asp, já fiz a busca neste fórum e no MXStudio também, tentei várias formas diferentes de configuração, mas sem bom resultado Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Outubro 27, 2008 Priemeiramente acredito que o seu seelct esteja errado deveria ser algo como SELECT * FROM Categorias WHERE marca = '" & MMColParam & "' AND categoria = '" & categoria & "'" Esta parte precisa estar antes de abrir a consulta com igual no lugar de 1 MMColParam = Request.QueryString("marca") categoria = Request.QueryString("categoria") modifique isso e teste se permancer o erro colocque aqui um pouco mais do seu codigo, tipo umas 10 linhas antes do erro, por favor nao poste o codigo todo pois pode ser desnecessario alem de atrapalhar uma analise do erro Abraços e no aguardo Compartilhar este post Link para o post Compartilhar em outros sites
Superwagtel 1 Denunciar post Postado Outubro 27, 2008 Fiz as alterações solicitadas no Conjunto de Registros, e o código ficou assim: <% Dim Categorias__MMColParam Categorias__MMColParam = "=" If (Request.QueryString("Marca") <> "") Then Categorias__MMColParam = Request.QueryString("Marca") End If %> <% Dim Categorias__Categoria Categorias__Categoria = "=" If (Request.QueryString("Categoria") <> "") Then Categorias__Categoria = Request.QueryString("Categoria") End If %> <% Dim Categorias Dim Categorias_numRows Set Categorias = Server.CreateObject("ADODB.Recordset") Categorias.ActiveConnection = MM_Global_STRING Categorias.Source = "SELECT * FROM Categorias WHERE Marca = ' " & " + Replace(Categorias__MMColParam, "'", "''") + " & " ' AND " + Replace(Categorias__Categoria, "'", "''") + " = ' " & " + Replace(Categorias__Categoria, "'", "''") + " & " '" Categorias.CursorType = 0 Categorias.CursorLocation = 2 Categorias.LockType = 1 Categorias.Open() Categorias_numRows = 0 %> Na página apareco o erro: Tipo de erro: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na seqüência de caracteres na expressão de consulta 'Marca = ' + Replace(Categorias__MMColParam,'. /global/adm_clientes_upload_2.asp, line 251 o a linha 251 é: Categorias.Open() Compartilhar este post Link para o post Compartilhar em outros sites
Morpheus#2005 1 Denunciar post Postado Outubro 27, 2008 Amigo, Um conselho , porque você nao coloca os dois como menu de lista ??? A chance do usuário errar na hora de digitar é enorme... Bom seguindo o exemplo, deve ficar assim : 1º - Faça a conexão novamente. 2º - Escolha a forma de pegar os dados, vide abaixo :: Request.Form - Para retornar de um form Request.Querystring - Para retornar de uma URL Request.Session - Para retornar de uma sessão Obs: O Mário Monteiro , me ensinou que nao se colocarmos somente Request, também funciona. 3º - Para obter o primeiro resultado coloque MMColParam como variável, clique em Test, irá aparecer uma caixa para você colocar a marca de um carro que esteja na sua base, caso a sua variavel esteja correta o teste irá ocorrer sem problemas. Lembre-se que você esta querendo retornar TEXTO, então não se descuide e escolha NUMERIC nas opçoes do DW. Caso tudo de certo, salve e teste ONLINE. Abraços e bons estudos. Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Outubro 27, 2008 Se eu pudesse, lhe sugeriria que usasse o DW apenas como editor e nao como gerador de codigos olha esse inicio Dim Categorias__MMColParam Categorias__MMColParam = "=" If (Request.QueryString("Marca") <> "") Then Categorias__MMColParam = Request.QueryString("Marca") End If %> <% Dim Categorias__Categoria Categorias__Categoria = "=" If (Request.QueryString("Categoria") <> "") Then Categorias__Categoria = Request.QueryString("Categoria") End If Isso seria o mesmo que Dim Categorias__MMColParam, Categorias__Categoria Categorias__MMColParam = Request.QueryString("Marca") Categorias__Categoria = Request.QueryString("Categoria") Sem contar este nomes de variaveis que ele usa Mas logico que isto nao gera erro mas alem de deixar feio o codigo copm certeza deixa mais lento O erro provavel esta aqui AND " + Replace(Categorias__Categoria, "'", "''") + " = ' " & " + Replace(Categorias__Categoria, "'", "''") + " & " '" Voce usa o que vem do form como nome do campo e valor do campo Compartilhar este post Link para o post Compartilhar em outros sites
Superwagtel 1 Denunciar post Postado Outubro 27, 2008 Alguém sabe como fazer este filtro diretamente no código ? Se puder me ensinar eu agradeço muito, por que estou desempregado e este cliente apareceu na hora certa, não posso perdê-lo !!! Compartilhar este post Link para o post Compartilhar em outros sites
Superwagtel 1 Denunciar post Postado Outubro 27, 2008 Em minha máquina a url fica assim: http://localhost/global/adm_clientes_uploa...p;Submit=Buscar Mas na página sempre á apresentado a Marca correta com a última Categoria do DB referente à marca Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Outubro 27, 2008 Nao tem como vermos o que roda na sua maquina que erro esta ocorrendo agora? Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Outubro 27, 2008 Superwagtel, Em relação a consulta q você postou no 1º post.. eu gostaria d sugerir a você tentar usar variaveis nos campos do form d busca. P/ isso, utilize nomes diferentes ("alias" ou apelidos) dos nomes dos campos originais.. por exemplo: em vez d marca e categoria eu usaria marca2 e categoria2. A consulta ficaria assim: SELECT * FROM categorias WHERE marca = 'MMColParam' AND categoria LIKE 'var' E, logo abaixo, em Variaveis: MMColParam 1 Request.QueryString("marca2") var % Request.QueryString("categoria2") obs: - esse "var" é 1 exemplo, d o nome q quiser, desde q nao seja igual a nenhum outro; você deve usa-la apenas nessa consulta. - é interessante usar o parametro "Like", e definir, na coluna do meio (Default Value), o operador coringa (%), pq assim facilita a busca d termos semelhantes. - verifique tb os tipos de dados (se forem texto, trabalhe como texto, se forem numeros como numeros, moedas, datas etc..) - verifique tb se o nome da tabela está grafado corretamente ("Categorias") - a msg d erro parece ter a ver c/ isso, mas tb pode ser 1 problema d conexão; as vezes é preciso fechar a pagina no dream p/ testa-la no IE - normalmente na 1ª vez - essa dica é da Infoexame.. - Outro problema q pode estar ocorrendo é q no 2º campo, sendo texto, se não for digitada a palava exata, a consulta poderá realmente não dar certo. então concordo com o Morpheus e tb sugiro q você use 1 menu de lista. em principio acho q seria isso; boa sorte e até.. Compartilhar este post Link para o post Compartilhar em outros sites
Superwagtel 1 Denunciar post Postado Outubro 28, 2008 Agradeço muito à todos, Fernando você acertou na mosca, na verdade eu nem precisei mudar os nomes dos campos no formulário, então ficou assim: SELECT * FROM Categorias WHERE Marca = 'MMColParam' AND Categoria LIKE 'var' E, logo abaixo, em Variaveis: MMColParam 1 Request.QueryString("Marca") var % Request.QueryString("Categoria") Graças à vocês todos, eu aprendi a fazer um filtro avançado, tenho em casa dois livros e várias apostilas à respeito, mas nenhum deles ensina. Este tópico está resolvido Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Outubro 28, 2008 Olá.. Então.. na verdade, aprendi sobre busca avançada no livro Dreamweaver MX, Fernando Medeiros, Érica, pgs. 217-227. E fico feliz q resolveu. Disponha e sucesso. Compartilhar este post Link para o post Compartilhar em outros sites
Superwagtel 1 Denunciar post Postado Novembro 1, 2008 Fernando: Agradeço sua boa vontade assim como a de todos que colaboram neste fórum ! Wagner Compartilhar este post Link para o post Compartilhar em outros sites