Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
JJPM

erro 3251

Recommended Posts

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.