Erro em Script Linha 5 BANCO DE DADOS

Boa tarde. Estou tentando fazer um editor de receita, e para isso preciso fazer uma pesquisa no banco de dados e jogar os valores para cada display. Ela já estava funcionando, porém tive que retirar a coluna “NOME DE PRODUTO” e deixar somente o “CÓDIGO DO PRODUTO”, pois as duas tinham o mesmo valor. Porém, todos os scripts de busca e query usavam como referência o “NOME DO PRODUTO”. Fiz a alteração de todas que o meu olho viu. Assim que fui executar a aplicação, ela deu um erro na linha 5 do script de busca, só que não há informação nenhuma do erro (FOTO). Porém ao meu ver, o script está normal, fui olhar a query que ele usa, está normal. Não sei o que pode ser, alguém me ajuda!!!

LINHA 5 DO SCRIPT

Set rs = Screen.Item(“CarregaRecipeEdit”).GetADORecordset()




image
image

A julgar pelo uso de <%Variable%> entendo que o campo COD seja numérico e não vazio. Logo, seria interessante validar a seleção.

Dim lCod
Dim oQuery

Set oQuery = Screen.Item("CarregaRecipeEdit")
lCod = Screen.Item("GrupoEdit").Item("ComboBox2").Value

If ( IsNumeric(lCod) ) Then
    oQuery.SetVariableValue "COD", lCod
    ' Retirar o Execute(): O método Execute executa um comando 
    ' SQL que não tenha retorno (como DELETE, UPDATE ou INSERT).

    Set rs = oQuery.GetADORecordset()

    ' continuacao...
End If

Se COD for um varchar, ou usa-se '<%Variable%>' ou adiciona as aspas simples via script.

oQuery.SetVariableValue "COD", "'" & CStr( lCod ) & "'"
1 Like

Boa tarde Leandro, tudo bem?

Estava nessa semana aprendendo mais no elipse e resolvi tirar essa combobox das receitas e colocar somente um display para puxar de uma tabela. Porém, na seleção de produtos, eu tenho uma combobox também, e nela está dando o mesmo erro que eu estava na tela de receita. Vou reformular minha ultima pergunta da combobox porque acho que ficou muito confusa. Tentei acrescentar seu script ao meu mas mesmo assim não funcionou, não sei se fiz errado ou não funcionou mesmo

Tenho essa combobox na tela de seleção (foto 1) e ela executa o mesmo script da última combobox com algumas alterações (foto 2), e ela está dando o mesmo erro nessa linha. Eu acho que poderia ser a query, mas já testei ela e está OK.

image


Trigger para executar esse script é o change da combobox, o script roda, porém da esse erro


image
image
image

1 Like

O erro está na consulta SQL, provavelmente na tipagem do COD, por isso o GetADORecordset() dá erro.

Na pasta c:\eeLogs deve haver um log mais detalhado desse erro. Se possível, reproduza o erro novamente e compartilhe o arquivo .etl com a data corrente.

1 Like
('C:\Users\clmar\OneDrive\Área de Trabalho\posterior 1 teste tabela\Database2.mdb') ExecuteSql Function Error	Error #0x80040E14: Erro de sintaxe (operador faltando) na expressão de consulta '[CODIGO DA PECA] ='. 	(Source: Microsoft JET Database Engine)  (SQL State: 3075)  (NativeError: -524553244) 	SQL string = SELECT Recipes.[CODIGO DA PECA],Recipes.[PRESSAO MAXIMA],Recipes.[VAZAO MAXIMA],Recipes.[Prog Gravad],Recipes.Dispositivo 	FROM Recipes	WHERE [CODIGO DA PECA] = 	ORDER BY Recipes.[CODIGO DA PECA]  DESC

acho que achei o erro, porém não entendo, a variável do banco de dados é essa mesmo, não está faltando nada, e o engraçado é que uma hora funciona, outra hora não funciona, de 5 em 5min

1 Like

Já tentei colocar Recipes.[CODIGO DA PECA] ou somente [CODIGO DA PECA], da na mesma

1 Like

O problema está ao passar o COD para consulta, que está indo vazio.

SELECT Recipes.[CODIGO DA PECA]
        ,Recipes.[PRESSAO MAXIMA]
        ,Recipes.[VAZAO MAXIMA]
        ,Recipes.[Prog Gravad]
        ,Recipes.[Dispositivo]  
FROM Recipes    
WHERE [CODIGO DA PECA] =    
--                       ^ (vazio)  <----------------
ORDER BY Recipes.[CODIGO DA PECA]  DESC

Por isso você deve validar seu input, faça o seguinte teste:

Set oQuery = Screen.Item("CarregaRecipeEdit")
lCod = Trim( Screen.Item("GrupoEdit").Item("ComboBox2").Value )

If ( lCod <> "" ) Then
    oQuery.SetVariableValue "COD", lCod
Else
    MsgBox "O campo 'Código da Peça' está vazio.", vbExclamation
    Exit Sub
End If

Set rs = oQuery.GetADORecordset()

# continucao...
1 Like


realmente deu o erro que o código está vazio, o que eu posso fazer? a combobox está carregando os valores. Gravei um vídeo antes de colocar o seu script que eu mostro um jeito que achei de contornar o erro, só que funciona 1x e dá o erro de novo

após colocar o script para validar o input, o método que fiz no vídeo acima não está mais funcionando, se isso ajuda em algo

1 Like

a ordem dos scripts está a seguinte, eu clico na seleção de produtos e o script para carregar os valores na combobox roda

image

assim, quando o valor dela muda, ou seja, quando seleciono uma peça, eu ativo o bit 00 da memória 2000 para rodar o script do getadorecordset (o outro bit é só para a visualização de mensagem) e reseto ele no final do script


ai no caso era para ele carregar os valores nos outros displays, mas antes mesmo de eu rodar o script, ele já da esse erro

1 Like

Por que executar o script quando o M2000.bit00 vai a True?

Não pode ser no evento Change() do Combobox?

2 Likes

não pensei nisso, eu peguei esse programa meio pronto e estou melhorando ele, vou tentar

1 Like

Funcionou, testei umas 10x e ele passa os valores para o display normalmente, porém se eu vou para o menu e volto na tela de seleção de produto, ele da a mesma mensagem que o código está vazio. Nesse caso, é só eu deixar esse script de validar o input e tirar a mensagem certo? porque se eu tirar o script inteiro ele vai dar a mensagem de erro na linha 5

1 Like

Aparentemente está tudo funcionando, vou fazer mais alguns testes mas provavelmente está resolvido. Muito obrigado mesmo! 2 semanas com esse problema já e eu não conseguia enxergar o que era, obrigado!

1 Like