Ir para conteúdo

POWERED BY:

Arquivado

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

matewz

Problema com string SQL

Recommended Posts

Bom, o que ocorre é o seguinte, tenho um recordset assim:Set RSLocaliza = Server.CreateObject("ADODB.Recordset")RSLocaliza.ActiveConnection = MM_Agora_STRINGRSLocaliza.Source = "SELECT Caminhoes.Id as CaminhoesId, Caminhoes.PesosLMCUC, Caminhoes.ModeloCaminhao, Caminhoes.MotorTipo, Caminhoes.MotorPotencia, Caminhoes.TransmModelo, Caminhoes.PesosLMPED, Caminhoes.PesosLMPET, Caminhoes.Tonelagem, Caminhoes.RRET, Caminhoes.MotorMarca_Motor, Caminhoes.DimemMDEDC, Caminhoes.DimenEE, Caminhoes.ChassiBT60, Caminhoes.ChassiBT, Caminhoes.FotoCaminhoes, Caminhoes.PBT, Caminhoes.PesosPVOMD, Caminhoes.PesosPVOMT, Caminhoes.FotoPrincipal, Implementos.ID as ImplementosId, Implementos.Impl_Fabr, Implementos.Impl_Comp, Implementos.Impl_Peso,Implementos.Foto_Impl, Implementos.Impl_EE, Implementos.Capacidade, Tipo_Implementos.Id as TImplementosId, Tipo_Implementos.Impl_Tipo, Tipo_Implementos.Status FROM (Implementos INNER JOIN Caminhoes ON Implementos.Impl_EE = Caminhoes.DimenEE) INNER JOIN Tipo_Implementos on Implementos.Impl_Tipo = Tipo_Implementos.Id WHERE " + Replace(RSLocaliza__Peso, "'", "''") + " + " + Replace(RSLocaliza__pesoe, "'", "''") + " + PesosPVOMD + PesosPVOMT <= Caminhoes.PBT + ((Caminhoes.PBT / 100) * 5) and (((" + Replace(RSLocaliza__pesoe, "'", "''") + " + " + Replace(RSLocaliza__Peso, "'", "''") + ") * (Caminhoes.DimenEE - ((" + Replace(RSLocaliza__compe, "'", "''") + " / 2) + Caminhoes.DimemMDEDC)) / Caminhoes.DimenEE) + Caminhoes.PesosPVOMD) <= Caminhoes.PesosLMPED + ((Caminhoes.PesosLMPED / 100) * 7.5) AND ((" + Replace(RSLocaliza__pesoe, "'", "''") + " + " + Replace(RSLocaliza__Peso, "'", "''") + ") * ((" + Replace(RSLocaliza__compe, "'", "''") + " / 2) + caminhoes.DimemMDEDC) / caminhoes.DimenEE) + Caminhoes.PesosPVOMT <= Caminhoes.PesosLMPET + ((Caminhoes.PesosLMPET / 100) * 7.5) and Tipo_Implementos.ID = " + Replace(RSLocaliza__Tipo, "'", "''") + " ORDER BY Caminhoes.Tonelagem, Caminhoes.DimenEE, Caminhoes.MotorPotencia asc"ele da o seguinte erro:Microsoft OLE DB Provider for ODBC Drivers erro '80040e14' [Microsoft][Driver ODBC para Microsoft Access]Divisão por zero (null) filtro_Comp.asp, line 61 onde a linha 61 é o recordset.open.... acredito que o erro esteja em ((" + Replace(RSLocaliza__compe, "'", "''") + " / 2) alguem sabe como resolver? ajudaria muito

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça o seguinte antes de abrir o recordset imprima o seu sql na tela...

 

alguma de suas variveis ta assumindo valor zero na hora de dividir ai não ta dando

 

antes da linha do erro copei e cole isso aqui

 

response.write("SELECT Caminhoes.Id as CaminhoesId, Caminhoes.PesosLMCUC, Caminhoes.ModeloCaminhao, Caminhoes.MotorTipo, Caminhoes.MotorPotencia, Caminhoes.TransmModelo, Caminhoes.PesosLMPED, Caminhoes.PesosLMPET, Caminhoes.Tonelagem, Caminhoes.RRET, Caminhoes.MotorMarca_Motor, Caminhoes.DimemMDEDC, Caminhoes.DimenEE, Caminhoes.ChassiBT60, Caminhoes.ChassiBT, Caminhoes.FotoCaminhoes, Caminhoes.PBT, Caminhoes.PesosPVOMD, Caminhoes.PesosPVOMT, Caminhoes.FotoPrincipal, Implementos.ID as ImplementosId, Implementos.Impl_Fabr, Implementos.Impl_Comp, Implementos.Impl_Peso,Implementos.Foto_Impl, Implementos.Impl_EE, Implementos.Capacidade, Tipo_Implementos.Id as TImplementosId, Tipo_Implementos.Impl_Tipo, Tipo_Implementos.Status FROM (Implementos INNER JOIN Caminhoes ON Implementos.Impl_EE = Caminhoes.DimenEE) INNER JOIN Tipo_Implementos on Implementos.Impl_Tipo = Tipo_Implementos.Id WHERE " + Replace(RSLocaliza__Peso, "'", "''") + " + " + Replace(RSLocaliza__pesoe, "'", "''") + " + PesosPVOMD + PesosPVOMT <= Caminhoes.PBT + ((Caminhoes.PBT / 100) * 5) and (((" + Replace(RSLocaliza__pesoe, "'", "''") + " + " + Replace(RSLocaliza__Peso, "'", "''") + ") * (Caminhoes.DimenEE - ((" + Replace(RSLocaliza__compe, "'", "''") + " / 2) + Caminhoes.DimemMDEDC)) / Caminhoes.DimenEE) + Caminhoes.PesosPVOMD) <= Caminhoes.PesosLMPED + ((Caminhoes.PesosLMPED / 100) * 7.5) AND ((" + Replace(RSLocaliza__pesoe, "'", "''") + " + " + Replace(RSLocaliza__Peso, "'", "''") + ") * ((" + Replace(RSLocaliza__compe, "'", "''") + " / 2) + caminhoes.DimemMDEDC) / caminhoes.DimenEE) + Caminhoes.PesosPVOMT <= Caminhoes.PesosLMPET + ((Caminhoes.PesosLMPET / 100) * 7.5) and Tipo_Implementos.ID = " + Replace(RSLocaliza__Tipo, "'", "''") + " ORDER BY Caminhoes.Tonelagem, Caminhoes.DimenEE, Caminhoes.MotorPotencia asc")response.end

e cole aqui no forum o que aparecer lá...

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT Caminhoes.Id as CaminhoesId, Caminhoes.PesosLMCUC, Caminhoes.ModeloCaminhao, Caminhoes.MotorTipo, Caminhoes.MotorPotencia, Caminhoes.TransmModelo, Caminhoes.PesosLMPED, Caminhoes.PesosLMPET, Caminhoes.Tonelagem, Caminhoes.RRET, Caminhoes.MotorMarca_Motor, Caminhoes.DimemMDEDC, Caminhoes.DimenEE, Caminhoes.ChassiBT60, Caminhoes.ChassiBT, Caminhoes.FotoCaminhoes, Caminhoes.PBT, Caminhoes.PesosPVOMD, Caminhoes.PesosPVOMT, Caminhoes.FotoPrincipal, Implementos.ID as ImplementosId, Implementos.Impl_Fabr, Implementos.Impl_Comp, Implementos.Impl_Peso,Implementos.Foto_Impl, Implementos.Impl_EE, Implementos.Capacidade, Tipo_Implementos.Id as TImplementosId, Tipo_Implementos.Impl_Tipo, Tipo_Implementos.Status FROM (Implementos INNER JOIN Caminhoes ON Implementos.Impl_EE = Caminhoes.DimenEE) INNER JOIN Tipo_Implementos on Implementos.Impl_Tipo = Tipo_Implementos.Id WHERE 2100 + 2000 + PesosPVOMD + PesosPVOMT <= Caminhoes.PBT + ((Caminhoes.PBT / 100) * 5) and (((2000 + 2100) * (Caminhoes.DimenEE - ((5000 / 2) + Caminhoes.DimemMDEDC)) / Caminhoes.DimenEE) + Caminhoes.PesosPVOMD) <= Caminhoes.PesosLMPED + ((Caminhoes.PesosLMPED / 100) * 7.5) AND ((2000 + 2100) * ((5000 / 2) + caminhoes.DimemMDEDC) / caminhoes.DimenEE) + Caminhoes.PesosPVOMT <= Caminhoes.PesosLMPET + ((Caminhoes.PesosLMPET / 100) * 7.5) and Tipo_Implementos.ID = 27 ORDER BY Caminhoes.Tonelagem, Caminhoes.DimenEE, Caminhoes.MotorPotencia ascapareceu assim mario

Compartilhar este post


Link para o post
Compartilhar em outros sites

duas vezes você divide algumas coisas por Caminhoes.DimenEETem certeza que tem algum valor diferente de zero atribuido a esta variável???

Compartilhar este post


Link para o post
Compartilhar em outros sites

relamente abra seu db e veja se neste campo (caminhoes.DimenEE) sempre tem valor e valor diferente de zero senão não vai funcionar assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito obrigado, era esse o problema mesmo, mas agora estah dando o erroMicrosoft OLE DB Provider for ODBC Drivers erro '80040e10' [Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1. filtro_Comp.asp, line 62 na mesma linha open :/o que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na boa, achei que fosse alguma aspas a mais ou a menos, mas resolvi analisar um pouco mais o teu código e estás com problemas nos parenteses.

and (((2000 + 2100) * (Caminhoes.DimenEE - ((5000 / 2) + Caminhoes.DimemMDEDC)) / Caminhoes.DimenEE) + Caminhoes.PesosPVOMD) <= Caminhoes.PesosLMPED + ((Caminhoes.PesosLMPED / 100) * 7.5) AND ((2000 + 2100) * ((5000 / 2) + caminhoes.DimemMDEDC) / caminhoes.DimenEE) + Caminhoes.PesosPVOMT <= Caminhoes.PesosLMPET + ((Caminhoes.PesosLMPET / 100) * 7.5) and Tipo_Implementos.ID = 27 ORDER

Tens mais parenteses abrindo do que fechando. Executa primeiro até o WHERE e vê se dá erro, depois vai acrescentando clausula a clausula e daí fica mais fácil ver aonde esta o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parâmetros insuficientesveja ai os parenteses mesmo mas este tipo de erro ocorre quando voce usa algum nome de campo ou tabela que não existe em seu db ou quando voce não passa valor para algum campo usado na clausula WHERE

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.