ERRO EM EXECUCAO DE SQL
Olá amigos do VBMania!
Aqui onde trabalho tem uma aplicação em VB que acessa um banco de dados Oracle via DAO. Estava funcionando perfeitamente até que de uma hora para outra começou a apresentar o seguinte erro:
Too few parameters: Expected 1
Falei com o pessoal do suporte ao banco de dados e me garantiram que nada no banco mudou. Mas o mais estranho é que esse erro só acontece quando o programa está compilado!! Fui debugar o programa e nenhum erro aconteceu, quando re-conpilei e executei o dito cujo, o erro voltou a apresentar.
Alguém ja viu ou sabe o que pode ser isso?
Obrigado gente!!
Aqui onde trabalho tem uma aplicação em VB que acessa um banco de dados Oracle via DAO. Estava funcionando perfeitamente até que de uma hora para outra começou a apresentar o seguinte erro:
Too few parameters: Expected 1
Falei com o pessoal do suporte ao banco de dados e me garantiram que nada no banco mudou. Mas o mais estranho é que esse erro só acontece quando o programa está compilado!! Fui debugar o programa e nenhum erro aconteceu, quando re-conpilei e executei o dito cujo, o erro voltou a apresentar.
Alguém ja viu ou sabe o que pode ser isso?
Obrigado gente!!
Uma alternativa que VC poderá fazer pra tentar chegar no local do erro, é colocar MSGBOXÂÂÂ's no seu sistema, e ver em qual delas ele passa, e em qual ele não vai passar.
AÃ, VC saberá em que ponto ele ocorre este tipo de erro.
Já passei por isso, e fazendo este tipo de teste, eu descobrà que era uma DLL que estava faltando no micro que estava instalando. Pois no meu rodava perfeitamente (até o compilado), e no do cliente ora rodava e ora não rodava. Quando não rodava, sabia em que ponto ele não rodava e assim resolvà o meu problema.
AÃ, VC saberá em que ponto ele ocorre este tipo de erro.
Já passei por isso, e fazendo este tipo de teste, eu descobrà que era uma DLL que estava faltando no micro que estava instalando. Pois no meu rodava perfeitamente (até o compilado), e no do cliente ora rodava e ora não rodava. Quando não rodava, sabia em que ponto ele não rodava e assim resolvà o meu problema.
LCSD, entendi sua sugestão, mas acontece que o programa vem funcionando a mais de 2 naos sem problemas nesse micro, que na verdade é um servidor e de uma hora para outra deixou de funcionar e fica apresentando esse erro na hora da execução da consulta.
Vou colocar a baixo parte do código:
Vlw!
Vou colocar a baixo parte do código:
Sub carga_ARS()
On Error GoTo erro
Dim rs As ADODB.Recordset
Dim soma As Integer
Dim dataHoje As String
Dim aux As Variant
cTray.PopupBalloon "Carregando dados do ARS...", "Carga ARS", NIIF_INFO
vCarga.MousePointer = vbHourglass
aux = Split(FormatDateTime(Now, vbShortDate), "/")
dataHoje = aux(1) & "/" & aux(0) & "/" & aux(2)
dataHoje = dataHoje & " 00:00:01"
sql = "delete from tbl_tecnico"
minha_con.Execute sql
'AQUI OS DADOS SÃO CARREGADOS PARA A TABELA DE ABERTOS
lblInfo.Caption = "Carregando..."
sql = "delete from abertos"
minha_con.Execute sql
Data1.Enabled = True
sql = "SELECT [Numero do ARS], [Create Date], [Status], [Agente de Solucao 2], [Agente de Solucao], " & _
"[Local], [Tecnico Responsavel] FROM [TELEM:AberturaDeOS] WHERE ([Agente de Solucao 2] = 'SUPORTE_ONSITE_RJ' OR " & _
"[Agente de Solucao 2] = 'SUPORTE_LABORATORIO_RJ' OR [Agente de Solucao 2] = 'OPERACAO_ONSITE_RJ' OR [Agente de Solucao 2] = 'SUPORTE_IMAC_RJ' OR " & _
"[Agente de Solucao 2] = 'OI_SUP_ONSITE_RJ' OR [Agente de Solucao 2] = 'OI_SUP_REMOTO') and " & _
"([Create Date] >= #" & dataHoje & "#)"
Data1.RecordSource = sql
Data1.Refresh <- O erro acontece aqui quando é feita a pesquisa no banco
Data1.Recordset.MoveFirst
With Data1.Recordset
Do While Not .EOF
sql = "insert into abertos " & _
"(ars, data_abertura, status, agente_fim, agente_orig, localidade, tecnico) values " & _
"(" & "'" & .Fields(0) & "'" & ", " & "'" & .Fields(1) & "'" & ", " & "'" & .Fields(2) & "'" & ", " & "'" & .Fields(3) & "'" & _
"," & "'" & .Fields(4) & "'" & ", " & "'" & .Fields(5) & "'" & ", " & "'" & .Fields(6) & "')"
minha_con.Execute sql
.MoveNext
Loop
End With
--- o procedimento continua, mas o erro é apresentado ai em cima---
Vlw!
Primeiro, VC precisa realmente utilizar o objeto DATA??? Se sim, tente baixar o MDAC da INTERNET (Site MICROFOST) e re-instale neste micro. Se o erro persistir, tente baixar alguns Services Pack pro VB e pro seu Windows.
Se VC não precisa utilizar o objeto data, acho que funcionará MAIS RÃ ÂPIDO, e sem este problema que está acontecendo agora. Mas acredito que pra VC tirar o objeto Data do seu sistema, a princÃpio ficará mais complicado. Tente a solução acima. Se não funcionar, faça um teste e conecte sem o objeto DATA e veja se funciona. (só nesta tela/procedimento)
Se VC não precisa utilizar o objeto data, acho que funcionará MAIS RÃ ÂPIDO, e sem este problema que está acontecendo agora. Mas acredito que pra VC tirar o objeto Data do seu sistema, a princÃpio ficará mais complicado. Tente a solução acima. Se não funcionar, faça um teste e conecte sem o objeto DATA e veja se funciona. (só nesta tela/procedimento)
Bom, não fui eu quem desenvolveu o sistema, mas a máquina ja está toda atualizada (tanto o VB como o MDAC.
Tirei o componente data e tentei "na mão" com o ADO e DAO, mas continua o mesmo erro.
Estou pesquisando na net, mas tb não encontrei nada ainda
Tirei o componente data e tentei "na mão" com o ADO e DAO, mas continua o mesmo erro.
Estou pesquisando na net, mas tb não encontrei nada ainda
Véio..este erro ocorre, não sei se seria no Oracle, mas pq o campo que esta sendo referenciado na sql não existe na tabela. Verifica se todos esses campos relacionados no seu sql existem nas tabelas, se as tabelas existem....me parece que vc tb usa tabela de outro banco no select, verifique este outro banco, se existe o campo na tabela.
Vc ja pegou esta string depois de montada pelo vb, copiou e jogou no oracle pra ver se funciona o sql ? tipo..dá um breakpoint antes do Data1.RecordSource = sql ....mandar printar esta sql no debug, pega ela e joga no oracle pra ver se funciona. Faz este procedimento e avisa a gente
Vc ja pegou esta string depois de montada pelo vb, copiou e jogou no oracle pra ver se funciona o sql ? tipo..dá um breakpoint antes do Data1.RecordSource = sql ....mandar printar esta sql no debug, pega ela e joga no oracle pra ver se funciona. Faz este procedimento e avisa a gente
Eu desconfiei de uma alteração no banco de dados, mas o povo do suporte BD me jurou de pé junto que nada mudou.
Fiz a seguinte coisa, realizei um select pegando tuda da tabela (select * from tabela where numero = xxx) e peguei o total de campos (255 no total) e mandei grava em um TXT o nome de todos os campos da tabela. Ai descobri que realmente o campo Tecnico Responsavel, não existe mais (é, o povo do suporte BD estava escondendo o jogo). Mas ai que aconteceu algo realmente estranho, se executado pelo VB, ele retorna todos os campos e o campo Tecnico Responsavel!!!! mas quando compilei para execução em outro micro ou até mesmo no meu, esse campo parou de aparecer!!
O campo só aparece se o programa ser executado pelo VB! Chega até ser engraçado, nunca vi isso... mas vcs sabem como é a informática...
De qualquer forma, vou continuar pesquisando...
Fiz a seguinte coisa, realizei um select pegando tuda da tabela (select * from tabela where numero = xxx) e peguei o total de campos (255 no total) e mandei grava em um TXT o nome de todos os campos da tabela. Ai descobri que realmente o campo Tecnico Responsavel, não existe mais (é, o povo do suporte BD estava escondendo o jogo). Mas ai que aconteceu algo realmente estranho, se executado pelo VB, ele retorna todos os campos e o campo Tecnico Responsavel!!!! mas quando compilei para execução em outro micro ou até mesmo no meu, esse campo parou de aparecer!!
O campo só aparece se o programa ser executado pelo VB! Chega até ser engraçado, nunca vi isso... mas vcs sabem como é a informática...
De qualquer forma, vou continuar pesquisando...
Vc verificou qual Database ou servidor está sendo feita a conexão na sua string de conexão ?..Talvez esse campo pode ter sido retirado por exemplo em produção, mas em desenvolvimento fiou ou vice versa...E seilá..hehehe..realmente estranho isso
Tópico encerrado , respostas não são mais permitidas