MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Iniciar o access com um código

    avatar
    Luís Antunes
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 394
    Registrado : 05/04/2016

    [Resolvido]Iniciar o access com um código Empty [Resolvido]Iniciar o access com um código

    Mensagem  Luís Antunes 12/4/2016, 15:54

    Precisava que o access arrancasse com um código.
    Tenho o programa a arrancar com uma macro que faz correr o código e abre um form.
    o código vai procurar vínculos nas tabelas. Se encontra dá uma mensagem "Erro nº 13 Type Mismatch.
    Se não encontra corre normalmente, em busca da bd com as tabelas.
    Verifiquei o código, do módulo, e confirmei que tem o tratamento de erro.
    Pesei em testar a abertura da bd com com código, que testa os vínculos, mas só sei com macros.

    Luís Antunes
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Iniciar o access com um código Empty Re: [Resolvido]Iniciar o access com um código

    Mensagem  JPaulo 12/4/2016, 16:20

    Para além de macro, pode fazer ainda de outra forma;

    Manda abrir um form em modo oculto, em que no evento ao abrir chame a função;

    Código:

    Private Sub Form_Open(Cancel As Integer)
        Call SuaFuncao
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Iniciar o access com um código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Iniciar o access com um código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Iniciar o access com um código Folder_announce_new Instruções SQL como utilizar...
    avatar
    Luís Antunes
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 394
    Registrado : 05/04/2016

    [Resolvido]Iniciar o access com um código Empty Iniciar o access com um código

    Mensagem  Luís Antunes 12/4/2016, 17:10

    J Paulo

    Já fiz o que sugeriu Criei um form e no open inseri o "Call função"
    Como o erro persiste, logo o problema vem da função ChecaVinculos.
    Quando corro a compilação não encontra nenhum erro.
    Podem me dar uma ajuda com tratamento de erro desta função?

    Luís Antunes



    Function ChecaVinculo(strNomesTab As String) As Boolean
    ' Autor: João Rodrigues
    ' E-mail: accessjr@bol.com.br
    ' Data: Maio/99
    ' Função que checa o vínculo da tabela strNomesTab.
    ' Retorna True ou False, dependendo do vínculo
    ' estar correto, ou não.
    On Error GoTo ChecaVinculo_Err
    Dim db As Database, fld As Field, prp As Property

    Set db = DBEngine(0)(0)
    ChecaVinculo = False 'Inicializa a função.

    'Tenta obter um campo da tabela vinculada strNomesTab.
    'Se der erro, é preciso revincular as tabelas.
    Set fld = db.TableDefs(strNomesTab).Fields(0)
    'Se chegou aqui é porque o vínculo é válido.
    ChecaVinculo = True

    ChecaVinculo_Sai:
    Set db = Nothing 'libera memória.
    Set fld = Nothing: Set prp = Nothing
    Exit Function

    Tenta_Vincular:
    MsgBox "Não foi possível abrir o arquivo" & vbCrLf _
    & "que contém as tabelas com os dados." _
    & vbCrLf & vbCrLf _
    & "Por favor, selecione um arquivo com os dados.", _
    vbInformation, "Informação"
    ' Abre o form frmMudaBackEnd, para que o usuário
    ' selecione o MDB contendo as tabelas com os dados
    ' na caixa de diálogo padrão "Abrir Arquivo" do Windows.
    DoCmd.OpenForm "frmMudaBackEnd", windowmode:=acDialog, _

    OpenArgs:=True
    'O frmMudaBackEnd irá definir o valor de fSucesso.
    ChecaVinculo = fSucesso
    GoTo ChecaVinculo_Sai

    ChecaVinculo_Err:
    Select Case Err.Number
    Case 3024, 3043, 3044, 3265
    'Não é um caminho válido, ou arq não encontrado.
    GoTo Tenta_Vincular
    Case Else
    Call InformaErro
    End Select
    Resume ChecaVinculo_Sai

    End Function
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Iniciar o access com um código Empty Re: [Resolvido]Iniciar o access com um código

    Mensagem  JPaulo 12/4/2016, 17:18

    função corrigida, teste por favor;

    Código:
    Function ChecaVinculo(strNomesTab As String) As Boolean
    ' Autor: João Rodrigues
    ' E-mail: accessjr@bol.com.br
    ' Data: Maio/99
    ' Função que checa o vínculo da tabela strNomesTab.
    ' Retorna True ou False, dependendo do vínculo
    ' estar correto, ou não.
    On Error GoTo ChecaVinculo_Err
    Dim db As Database, fld As Field, prp As Property

    Set db = DBEngine(0)(0)
    ChecaVinculo = False 'Inicializa a função.

    'Tenta obter um campo da tabela vinculada strNomesTab.
    'Se der erro, é preciso revincular as tabelas.
    Set fld = db.TableDefs(strNomesTab).Fields(0)
    'Se chegou aqui é porque o vínculo é válido.
    ChecaVinculo = True

    ChecaVinculo_Sai:
    Set db = Nothing 'libera memória.
    Set fld = Nothing: Set prp = Nothing
    Exit Function

    Tenta_Vincular:
    MsgBox "Não foi possível abrir o arquivo" & vbCrLf _
    & "que contém as tabelas com os dados." _
    & vbCrLf & vbCrLf _
    & "Por favor, selecione um arquivo com os dados.", _
    vbInformation, "Informação"
    ' Abre o form frmMudaBackEnd, para que o usuário
    ' selecione o MDB contendo as tabelas com os dados
    ' na caixa de diálogo padrão "Abrir Arquivo" do Windows.
    DoCmd.OpenForm "frmMudaBackEnd", windowmode:=acDialog, OpenArgs:=True
    'O frmMudaBackEnd irá definir o valor de fSucesso.
    ChecaVinculo = fSucesso
    GoTo ChecaVinculo_Sai

    ChecaVinculo_Err:
    Select Case Err.Number
    Case 3024, 3043, 3044, 3265
    'Não é um caminho válido, ou arq não encontrado.
    GoTo Tenta_Vincular
    Case Else
    Dim Msg$
        DoCmd.Hourglass False
        DoCmd.Echo True
    Msg = "Erro # " & Str(Err.Number) & " gerado na " & Err.Source _
            & vbNewLine & vbNewLine & "Descrição: " & Err.Description _
            & vbNewLine & vbNewLine & "Por favor contate o Administrador do Sistema."
        MsgBox Msg, vbMsgBoxHelpButton + vbCritical, "Erro", Err.HelpFile, Err.HelpContext
    End Select
    Resume ChecaVinculo_Sai
    End Function


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Iniciar o access com um código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Iniciar o access com um código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Iniciar o access com um código Folder_announce_new Instruções SQL como utilizar...
    avatar
    Luís Antunes
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 394
    Registrado : 05/04/2016

    [Resolvido]Iniciar o access com um código Empty Iniciar o access com um código

    Mensagem  Luís Antunes 12/4/2016, 17:44

    J Paulo
    Testei o código corrigido e dá-me outro tipo de erro:
    "Erro nº 13 Gerado na BD
    Discrição Type Mitsmatch
    Por favor contacte com o administador"

    Luís Antunes

    PS:
    Como é que ponho o código dentro da caixa?
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Iniciar o access com um código Empty Re: [Resolvido]Iniciar o access com um código

    Mensagem  JPaulo 12/4/2016, 17:47

    Dentro da caixa ?

    Você tem de chamar a função assim;

    Código:
    Call ChecaVinculo("SuaTabela")


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Iniciar o access com um código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Iniciar o access com um código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Iniciar o access com um código Folder_announce_new Instruções SQL como utilizar...
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Iniciar o access com um código Empty Re: [Resolvido]Iniciar o access com um código

    Mensagem  JPaulo 12/4/2016, 17:55

    Para si o mais facil é assim;

    Código:
    Public Sub RelinkTabelas(DiretorioBanco As String)
        Dim Dbs As Database
        Dim Tdf As TableDef
        Dim Tdfs As TableDefs
        Set Dbs = CurrentDb
        Set Tdfs = Dbs.TableDefs
           For Each Tdf In Tdfs
            If Tdf.SourceTableName <> "" Then
                Tdf.Connect = ";DATABASE=" & DiretorioBanco
                Tdf.RefreshLink
            End If
        Next
    End Sub

    Na abertura do form oculto, você chama o sub;

    Código:
    Call RelinkTabelas("C:\BancoExterno.accdb")


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Iniciar o access com um código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Iniciar o access com um código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Iniciar o access com um código Folder_announce_new Instruções SQL como utilizar...
    avatar
    Luís Antunes
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 394
    Registrado : 05/04/2016

    [Resolvido]Iniciar o access com um código Empty Iniciar o access com um código

    Mensagem  Luís Antunes 12/4/2016, 18:25

    J Paulo
    Pus o código num módulo e o call no form de abertura com o repetivo caminho para be
    dá a mesma mensagem de erro.

    Luís Antunes

    PS:
    A Caixa é onde o Paulo coloca o código
    avatar
    Luís Antunes
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 394
    Registrado : 05/04/2016

    [Resolvido]Iniciar o access com um código Empty Re: [Resolvido]Iniciar o access com um código

    Mensagem  Luís Antunes 12/4/2016, 22:20

    J Paulo
    Já consegui tirar o erro do código
    fiz uma MsgBox antes de cada comando, e detectei o código que dava o erro.
    fiz o tratamento de erro e resultou.

    Luís Antunes


    On Error GoTo Err
    'Tenta obter um campo da tabela vinculada strNomesTab.
    'Se der erro, é preciso revincular as tabelas.
    Set fld = db.TableDefs(strNomesTab).Fields(0)
    'Se chegou aqui é porque o vínculo é válido.
    ChecaVinculo = True
    Err:
    avatar
    Luís Antunes
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 394
    Registrado : 05/04/2016

    [Resolvido]Iniciar o access com um código Empty Re: [Resolvido]Iniciar o access com um código

    Mensagem  Luís Antunes 12/4/2016, 22:21

    J Paulo
    Já consegui tirar o erro do código
    fiz uma MsgBox antes de cada comando, e detectei o código que dava o erro.
    fiz o tratamento de erro e resultou.

    Luís Antunes


    On Error GoTo Err
    'Tenta obter um campo da tabela vinculada strNomesTab.
    'Se der erro, é preciso revincular as tabelas.
    Set fld = db.TableDefs(strNomesTab).Fields(0)
    'Se chegou aqui é porque o vínculo é válido.
    ChecaVinculo = True
    Err:
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Iniciar o access com um código Empty Re: [Resolvido]Iniciar o access com um código

    Mensagem  JPaulo 13/4/2016, 12:50

    Obrigado pelo retorno.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Iniciar o access com um código Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Iniciar o access com um código Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Iniciar o access com um código Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Iniciar o access com um código Empty Re: [Resolvido]Iniciar o access com um código

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 00:15