ERRO EM EXECUCAO DE SQL

USUARIO.EXCLUIDOS 25/07/2005 09:00:56
#95856
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!!
LCSD 25/07/2005 11:51:37
#95880
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.
USUARIO.EXCLUIDOS 25/07/2005 12:00:27
#95885
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:

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!
LCSD 25/07/2005 12:57:34
#95905
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)
USUARIO.EXCLUIDOS 26/07/2005 12:22:53
#96039
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
USUARIO.EXCLUIDOS 26/07/2005 13:34:29
#96057
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
USUARIO.EXCLUIDOS 26/07/2005 14:08:35
#96063
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...
USUARIO.EXCLUIDOS 26/07/2005 14:12:49
#96064
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