Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

JJPM

erro 3251

Mensagens Recomendadas

JJPM

Viva pessoal,

eu tou com um projecto de um programa desenvolvido por outra pessoa, mas que tenho vindo a efectuar alterações e correcções, para suportar algumas alterações solicitadas.

Este software vai buscar informações exteriormente por IP a um automato, e armazena numa base de dados.

Contudo começou-me a aparecer um erro, Erro número:  3251, Descrição erro: Operação não suportada para este tipo de objecto, que tem como source Erro Source: DAO.Recordset

Eu sei que aconteceu este erro neste local, pois tenho uma função de erro que armazena os erros num ficheiro de texto.

O erro acontece neste codigo:

On Error GoTo erro_mdb 'inicia o tratamento de erros

    Timer4.Enabled = False
    'Label7.Caption = txtQueima1.Text
    
    Label12.Caption = ""
    
    For i = 0 To 139
        array_queima(i) = 0
    Next i
    
    'Coloca no array array_queima() os valores lidos
    
    '0-19
    
    If txtQueima1.Text = "txtQueima1" Then
        Exit Sub
    End If
    
    str1 = txtQueima1.Text
    iStop1 = InStr(str1, "=")
    array_queima(0) = Left(str1, iStop1 - 1)
    iStop2 = InStr(iStop1 + 1, str1, "=")
    array_queima(1) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    
    For i = 2 To 18
        iStop1 = iStop2
        iStop2 = InStr(iStop1 + 1, str1, "=")
        array_queima(i) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    Next i
    
    iStop3 = Len(str1)
    array_queima(19) = Mid(str1, iStop2 + 1, iStop3 - iStop2)
    
    '20-39
    
    str1 = txtQueima2.Text
    iStop1 = InStr(str1, "=")
    array_queima(20) = Left(str1, iStop1 - 1)
    iStop2 = InStr(iStop1 + 1, str1, "=")
    array_queima(21) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    
    For i = 22 To 38
        iStop1 = iStop2
        iStop2 = InStr(iStop1 + 1, str1, "=")
        array_queima(i) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    Next i
    
    iStop3 = Len(str1)
    array_queima(39) = Mid(str1, iStop2 + 1, iStop3 - iStop2)
    
    '40-59
    
    str1 = txtQueima3.Text
    iStop1 = InStr(str1, "=")
    array_queima(40) = Left(str1, iStop1 - 1)
    iStop2 = InStr(iStop1 + 1, str1, "=")
    array_queima(41) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    
    For i = 42 To 58
        iStop1 = iStop2
        iStop2 = InStr(iStop1 + 1, str1, "=")
        array_queima(i) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    Next i
    
    iStop3 = Len(str1)
    array_queima(59) = Mid(str1, iStop2 + 1, iStop3 - iStop2)
    
    '60-79
    
    str1 = txtQueima4.Text
    iStop1 = InStr(str1, "=")
    array_queima(60) = Left(str1, iStop1 - 1)
    iStop2 = InStr(iStop1 + 1, str1, "=")
    array_queima(61) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    
    For i = 62 To 78
        iStop1 = iStop2
        iStop2 = InStr(iStop1 + 1, str1, "=")
        array_queima(i) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    Next i
    
    iStop3 = Len(str1)
    array_queima(79) = Mid(str1, iStop2 + 1, iStop3 - iStop2)
    
    '80-99
    
    str1 = txtQueima5.Text
    iStop1 = InStr(str1, "=")
    array_queima(80) = Left(str1, iStop1 - 1)
    iStop2 = InStr(iStop1 + 1, str1, "=")
    array_queima(81) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    
    For i = 82 To 98
        iStop1 = iStop2
        iStop2 = InStr(iStop1 + 1, str1, "=")
        array_queima(i) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    Next i
    
    iStop3 = Len(str1)
    array_queima(99) = Mid(str1, iStop2 + 1, iStop3 - iStop2)
    
    '100-119
    
    str1 = txtQueima6.Text
    iStop1 = InStr(str1, "=")
    array_queima(100) = Left(str1, iStop1 - 1)
    iStop2 = InStr(iStop1 + 1, str1, "=")
    array_queima(101) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    
    For i = 102 To 118
        iStop1 = iStop2
        iStop2 = InStr(iStop1 + 1, str1, "=")
        array_queima(i) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    Next i
    
    iStop3 = Len(str1)
    array_queima(119) = Mid(str1, iStop2 + 1, iStop3 - iStop2)
    
    '120-139
    
    str1 = txtQueima7.Text
    iStop1 = InStr(str1, "=")
    array_queima(120) = Left(str1, iStop1 - 1)
    iStop2 = InStr(iStop1 + 1, str1, "=")
    array_queima(121) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    
    For i = 122 To 138
        iStop1 = iStop2
        iStop2 = InStr(iStop1 + 1, str1, "=")
        array_queima(i) = Mid(str1, iStop1 + 1, iStop2 - iStop1 - 1)
    Next i
    
    iStop3 = Len(str1)
    array_queima(139) = Mid(str1, iStop2 + 1, iStop3 - iStop2)
    
    
    'Label4.Caption = ""
    'For i = 0 To 19
    '    Label4.Caption = Label4.Caption & array_queima(i) & " "
    'Next i
    
    
'Guardar os valores na BD
    '*******************************CRIAR CONDIÇÂO PARA DETECTAR CODIGO DE QUEIMA ERRADO************************
    
    'codigo queima
    
    cod_queima$ = ""
    
    If array_queima(0) < 10 Then
        cod_queima = "0" & array_queima(0)
    Else
        cod_queima = array_queima(0)
    End If
    
    cod_queima = cod_queima & array_queima(1) & array_queima(2)
    
    If array_queima(3) < 10 Then
        cod_queima = cod_queima & "0" & array_queima(3)
    Else
        cod_queima = cod_queima & array_queima(3)
    End If
    
    If array_queima(4) < 10 Then
        cod_queima = cod_queima & "0" & array_queima(4)
    Else
        cod_queima = cod_queima & array_queima(4)
    End If
    
    If array_queima(5) < 10 Then
        cod_queima = cod_queima & "0" & array_queima(5)
    Else
        cod_queima = cod_queima & array_queima(5)
    End If
    
    If cod_queima = "0000000000" Or Len(cod_queima) > 10 Then
        'MsgBox "Foi importado um código de queima inválido. A Queima foi eliminada do Automato. Por favor informe o instalador desta ocorrencia."
        
        Wrap$ = Chr$(13) + Chr$(10)
        path_txt = App.path & "\Data\log.dat"
        'path_txt = "D:\investigação\VB6\error treatment\error_1\log.txt"
        
        Open path_txt For Input As #4
        Do Until EOF(4)
        Line Input #4, lineoftext$      '***registo no log file
        If EOF(4) Then
           Alltext$ = Alltext$ & lineoftext$
        Else
           Alltext$ = Alltext$ & lineoftext$ & Wrap$
        End If
        Loop
        Close #4
            
        Open path_txt For Output As #5
        Print #5, Alltext$
        Print #5, "****CÓDIGO DE QUEIMA INVÁLIDO****" & "," & "Código Recebido:" & cod_queima & " ; " & Time & " ; " & Date & " ; "
        Close #5
        
        GoTo rejeitaqeuima
    End If
    
    Wrap$ = Chr$(13) + Chr$(10)
    path_txt = App.path & "\Data\log.dat"
    'path_txt = "D:\investigação\VB6\error treatment\error_1\log.txt"
    
    Open path_txt For Input As #4
    Do Until EOF(4)
    Line Input #4, lineoftext$      '***registo no log file
    If EOF(4) Then
       Alltext$ = Alltext$ & lineoftext$
    Else
       Alltext$ = Alltext$ & lineoftext$ & Wrap$
    End If
    Loop
    Close #4
        
    Open path_txt For Output As #5
    Print #5, Alltext$
    Print #5, "------QUEIMA IMPORTADA-----" & "," & "Código Recebido:" & cod_queima & " ; " & Time & " ; " & Date & " ; "
    Close #5
        
    'Codigo queima
    
    'Data2.Recordset.Index = "Cod_queima"
    
    Data2.Recordset.AddNew
    
    Text6.DataField = "Cod_queima"
        
    Text6.Text = cod_queima
    
    Data2.Recordset.Update
    
    Data2.Recordset.MoveLast
    
    'Tipo de queima
    
    Data2.Recordset.Edit
        
    Text6.DataField = "Tipo_queima"
    
    Text6.Text = array_queima(1)
    
    Data2.Recordset.Update
    
    'Sonda
    
    Data2.Recordset.Edit
        
    Text6.DataField = "Sonda"
    
    Text6.Text = array_queima(2)
    
    Data2.Recordset.Update
    
    'Data
    
    Data2.Recordset.Edit
        
    Text6.DataField = "Data_fabrico"
    
    data_fabrico = Mid(cod_queima, 5, 2) & "-" & Mid(cod_queima, 7, 2) & "-20" & Mid(cod_queima, 9, 2)
        
    Text6.Text = data_fabrico
        
    Data2.Recordset.Update
        
    'Temperatura minima predefenida
    
    Data2.Recordset.Edit
    
    Text6.DataField = "Temp_minima"
    
    Text6.Text = array_queima(9)
    
    Data2.Recordset.Update
        
    'Temperatura maxima predefenida
    
    Data2.Recordset.Edit
    
    Text6.DataField = "Temp_maxima"
    
    Text6.Text = array_queima(10)
    
    Data2.Recordset.Update
       
    'Codigo queima
        
    Data1.Recordset.Index = "Num_queima"
        
    Data1.Recordset.AddNew
    
    Text5.DataField = "Num_queima"
    
    Text5.Text = cod_queima
    
    Data1.Recordset.Update
    
    Data1.Recordset.MoveLast
    
    'Tempo de queima
    
    Data1.Recordset.Edit
        
    Text5.DataField = "Tempo"
    
    Text5.Text = array_queima(8)
    
    Label7.Caption = array_queima(8)
    
    Data1.Recordset.Update
    
    'valores da queima
    
    For i = 1 To 120
    
        Data1.Recordset.Edit
        
        d_field = "Temp" & i
        
        Text5.DataField = d_field
        
        Text5.Text = array_queima(10 + i)
        
        Data1.Recordset.Update
        
    Next i
    
    'Data1.Recordset.AddNew
    'Data2.Recordset.AddNew
    
rejeitaqeuima:
    flg_limpa$ = "MMW" & pos_ini - 1 & "=3"
    
    Winsock1.SendData flg_limpa
    
    Exit Sub
    
erro_mdb:
        resposta = log_error("frmInicio", "Timer4", str$(Err.Number), Err.Description)
        If resposta = "seguinte" Then
            Resume Next
        Else
            If resposta = "fim" Then
                Resume fim
            End If
        End If
        
fim:
            
End Sub

estive as voltas com isto e não consigo perceber onde está a acontecer o erro.

Podem-me ajudar.

Obrigado.

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.