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]Erro Select

    avatar
    PCAMARAL
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 16/02/2012

    [Resolvido]Erro Select Empty [Resolvido]Erro Select

    Mensagem  PCAMARAL 24/7/2012, 19:48

    Boa tarde,

    Não estou conseguindo fazer a instrução SELECT abaixo funcionar. Esta dando erro de execução 3075. erro de sintaxe no número da expressão de consulta 'Cpf_Cnpj =04.198.774/0001-2'.

    Não sei porque está comendo o último número do dígito do CNPJ.

    Estou usando o código abaixo:

    Dim rsSacado As Recordset
    Dim StrSql As String

    StrSql = "SELECT * FROM tblSacados WHERE Cpf_Cnpj =" & Me!Cpf_Cnpj
    Set rsSacado = CurrentDb.OpenRecordset(StrSql)
    rsSacado.Edit

    Alguma sugestão?

    Grato
    avatar
    Convidado
    Convidado


    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Convidado 24/7/2012, 21:06

    Tem que fechar a instrução...

    StrSql = "SELECT * FROM tblSacados WHERE Cpf_Cnpj =" & Me!Cpf_Cnpj & ";"
    Set rsSacado = CurrentDb.OpenRecordset(StrSql)
    rsSacado.Edit

    avatar
    PCAMARAL
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 16/02/2012

    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  PCAMARAL 24/7/2012, 21:28

    Continua dando o mesmo erro. Será que o erro não está na declaração das variáveis?

    Dim rsSacado As Recordset
    Dim StrSql As String

    StrSql = "SELECT * FROM tblSacados WHERE Cpf_Cnpj =" & Me!Cpf_Cnpj & ";"
    Set rsSacado = CurrentDb.OpenRecordset(StrSql)
    rsSacado.Edit

    Grato
    avatar
    Convidado
    Convidado


    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Convidado 24/7/2012, 21:45

    Veja as referencia do teu BD

    Ative a Microsoft DAO 3.6 Object Library

    Coloque o Rs como:

    Rs as DAO.Recordset

    Cumprimentos.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Alexandre Neves 24/7/2012, 21:59

    Boa noite, Amaral
    Poderá ser do tipo de dados
    StrSql = "SELECT * FROM tblSacados WHERE Cpf_Cnpj ='" & Me!Cpf_Cnpj & "';"
    avatar
    PCAMARAL
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 16/02/2012

    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  PCAMARAL 25/7/2012, 14:24

    Pessoal nada feito...

    Com a dica do Piloto continua dando o mesmo erro, já com a dica do Alexandre ele para na instrução rsSacado.Edit e não continua a executar o código.

    O campo Cpf_Cnpj contém o cpf ou cnpj do sacado, na depuração quando define a variável com SELECT....ele mostra direitinho, mas quando vai executar a função Set ele dá o erro de execução que eu falei: erro de execução 3075. erro de sintaxe no número da expressão de consulta 'Cpf_Cnpj =04.198.774/0001-2'.

    Usando o código abaixo a variável StrSql fica assim:

    StrSql = "SELECT * FROM tblSacados WHERE Cpf_Cnpj = 04.198.774/0001-20;"

    Dim rsSacado As DAO.Recordset
    Dim StrSql As String

    StrSql = "SELECT * FROM tblSacados WHERE Cpf_Cnpj = " & Me!Cpf_Cnpj & ";"
    Set rsSacado = CurrentDb.OpenRecordset(StrSql)
    rsSacado.Edit

    Alguma outra sugestão?

    Grato
    avatar
    Convidado
    Convidado


    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Convidado 25/7/2012, 14:34

    Esta utilizando mascaras ou o método ImputMask?

    Se possivel poste um exemplo conciso do BD para que possamos ver.


    Cumprimentos.
    avatar
    PCAMARAL
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 16/02/2012

    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  PCAMARAL 25/7/2012, 15:27

    Piloto, estou usando o método InputMask. Segue o BD no formato MDB.

    Formulário envolvido - frmSacados
    Tabela - tblSacados

    Grato
    Anexos
    [Resolvido]Erro Select AttachmentGIRO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (107 Kb) Baixado 6 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Alexandre Neves 25/7/2012, 18:08

    Não encontro a expressão que lhe aconselhei:
    StrSql = "SELECT * FROM tblSacados WHERE Cpf_Cnpj ='" & Me!Cpf_Cnpj & "';"
    avatar
    Convidado
    Convidado


    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Convidado 25/7/2012, 18:26

    U
    Código:

    Com a dica do Piloto continua dando o mesmo erro, já com a dica do Alexandre ele para na instrução rsSacado.Edit e não continua a executar o código.

    Significa que com a instrução do Mestre Alexandre resultou, porem após a edição do Recordset (Rs.Edit)
    Não tem mais nada para executar..

    Na instrução

    If DCount("Cpf_Cnpj", "tblSacados", "Cpf_Cnpj =""" & Me!Cpf_Cnpj & """") > 0 Then

    Codigo

    Else

    Outro Codigo

    End If

    Se a contagem for maior que 0 executa a primeira parte... (Edição)
    Em seguida a opção Else (Caso Contrário) significa dizer que em se o valor for = 0 executa a Adição

    Então executando a primeira parte ele parte pra o final do IF (End If)

    Ou seja... apos o rs.Edit
    Você precisa especificar os registros que irão ser atualizados
    e depois
    Rs.Update


    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Convidado 25/7/2012, 18:40

    Resultou aqui:


    Observe que na primeira instrução eu não verifico campos nulos, pois como é a edição pressupoe que os mesmos ja estão preenchidos.


    Private Sub btnsalvar_Click()

    Dim rsSacado As DAO.Recordset
    Dim StrSql As String


    If DCount("Cpf_Cnpj", "tblSacados", "Cpf_Cnpj =""" & Me!Cpf_Cnpj & """") > 0 Then

    StrSql = "SELECT * FROM tblSacados WHERE Cpf_Cnpj = '" & Me!Cpf_Cnpj & "';"
    Set rsSacado = CurrentDb.OpenRecordset(StrSql)

    rsSacado.Edit
    rsSacado!Tipo = Me!Tipo
    rsSacado!Cpf_Cnpj = Me!Cpf_Cnpj
    rsSacado!RazãoSocial = Me!RazãoSocial
    rsSacado!Status = Me!Status
    rsSacado!Endereço = Me!Endereço
    rsSacado!Bairro = Me!Bairro
    rsSacado!Cidade = Me!Cidade
    rsSacado!Estado = Me!Estado
    rsSacado!CEP = Me!CEP
    rsSacado!Endereço_Cob = Me!Endereço_Cob
    rsSacado!Bairro_Cob = Me!Bairro_Cob
    rsSacado!Cidade_Cob = Me!Cidade_Cob
    rsSacado!Estado_Cob = Me!Estado_Cob
    rsSacado!CEP_Cob = Me!CEP_Cob
    rsSacado!Igual = Me!Igual
    rsSacado.Update
    rsSacado.Close
    rsSacado.Update
    Set rsSacado = Nothing

    Else

    If IsNull(Me.Tipo) Then
    MsgBox "Entre com o tipo...", vbInformation, "Aviso"
    Me.Tipo.SetFocus
    Exit Sub
    End If

    If IsNull(Me.Cpf_Cnpj) Then
    MsgBox "Entre com o CPF ou CNPJ...", vbInformation, "Aviso"
    Me.Cpf_Cnpj.SetFocus
    Exit Sub
    End If

    If IsNull(Me.RazãoSocial) Then
    MsgBox "Entre com a Razão Social ou nome do cliente...", vbInformation, "Aviso"
    Me.RazãoSocial.SetFocus
    Exit Sub
    End If

    If IsNull(Me.Endereço) Then
    MsgBox "Entre com o endereço...", vbInformation, "Aviso"
    Me.Endereço.SetFocus
    Exit Sub
    End If

    If IsNull(Me.Cidade) Then
    MsgBox "Entre com a cidade...", vbInformation, "Aviso"
    Me.Cidade.SetFocus
    Exit Sub
    End If

    If IsNull(Me.Estado) Then
    MsgBox "Entre com o estado...", vbInformation, "Aviso"
    Me.Estado.SetFocus
    Exit Sub
    End If

    If IsNull(Me.CEP) Then
    MsgBox "Entre com o cep...", vbInformation, "Aviso"
    Me.CEP.SetFocus
    Exit Sub
    End If

    If IsNull(Me.Endereço_Cob) Then
    MsgBox "Entre com o endereço...", vbInformation, "Aviso"
    Me.Endereço.SetFocus
    Exit Sub
    End If

    If IsNull(Me.Cidade_Cob) Then
    MsgBox "Entre com a cidade...", vbInformation, "Aviso"
    Me.Cidade.SetFocus
    Exit Sub
    End If

    If IsNull(Me.Estado_Cob) Then
    MsgBox "Entre com o estado...", vbInformation, "Aviso"
    Me.Estado.SetFocus
    Exit Sub
    End If

    If IsNull(Me.CEP_Cob) Then
    MsgBox "Entre com o cep...", vbInformation, "Aviso"
    Me.CEP.SetFocus
    Exit Sub
    End If

    Set rsSacado = CurrentDb.OpenRecordset("tblSacados")
    rsSacado.AddNew

    If MsgBox("Dados incluídos com sucesso. Deseja salvar?", vbYesNo, "ATENÇÃO") = vbYes Then

    rsSacado!Tipo = Me!Tipo
    rsSacado!Cpf_Cnpj = Me!Cpf_Cnpj
    rsSacado!RazãoSocial = Me!RazãoSocial
    rsSacado!Status = Me!Status
    rsSacado!Endereço = Me!Endereço
    rsSacado!Bairro = Me!Bairro
    rsSacado!Cidade = Me!Cidade
    rsSacado!Estado = Me!Estado
    rsSacado!CEP = Me!CEP
    rsSacado!Endereço_Cob = Me!Endereço_Cob
    rsSacado!Bairro_Cob = Me!Bairro_Cob
    rsSacado!Cidade_Cob = Me!Cidade_Cob
    rsSacado!Estado_Cob = Me!Estado_Cob
    rsSacado!CEP_Cob = Me!CEP_Cob
    rsSacado!Igual = Me!Igual
    rsSacado.Update
    rsSacado.Close
    Set rsSacado = Nothing
    Call fncLimpaCampos
    Else
    DoCmd.CancelEvent
    End If
    End If
    End Sub
    avatar
    Convidado
    Convidado


    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Convidado 25/7/2012, 18:49

    Outro detalhe permitente a otimização das pesquisas utilizando o Dlookup..

    Obseve que na instrução que verifica se o CnpJ existe ou não...

    se preenche os campos caso exista utilizano o Dlookup, da forma como está faz várias pesquisas a tabela...

    Private Sub Cpf_Cnpj_BeforeUpdate(Cancel As Integer)

    If DCount("Cpf_Cnpj", "tblSacados", "Cpf_Cnpj =""" & Me!Cpf_Cnpj & """") > 0 Then
    'A função DCount() contou um ou mais registros existentes
    If MsgBox("Sacado já cadastrado, deseja alterar?", vbYesNo, "ATENÇÂO") = vbNo Then
    Me.Undo 'Limpa o campo
    Else
    Me.Tipo = DLookup("Tipo", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.RazãoSocial = DLookup("RazãoSocial", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Status = DLookup("Status", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Endereço = DLookup("Endereço", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Bairro = DLookup("Bairro", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Cidade = DLookup("Cidade", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Estado = DLookup("Estado", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.CEP = DLookup("CEP", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Endereço_Cob = DLookup("Endereço_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Bairro_Cob = DLookup("Bairro_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Cidade_Cob = DLookup("Cidade_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Estado_Cob = DLookup("Estado_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.CEP_Cob = DLookup("CEP_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    Me.Igual = DLookup("Igual", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
    If Me.Igual.Value = -1 Then Me.Endereço_Cob.enabled = False
    If Me.Igual.Value = -1 Then Me.Cidade_Cob.enabled = False
    If Me.Igual.Value = -1 Then Me.Estado_Cob.enabled = False
    If Me.Igual.Value = -1 Then Me.CEP_Cob.enabled = False
    If Me.Igual.Value = -1 Then Me.Bairro_Cob.enabled = False
    End If
    End If
    End Sub



    no entanto seguindo o excelente conselho do Avelino.. Basta apenas uma pesquisa a tabela, utilizando o carregamento de varios campos concatenados em uma Array, e depois separando com o split... e faz o preenchimento dos campos com a mesma e sua posição

    Ex:
    Me.Campo1 = VarArray(0)
    Me.Campo2 = VarArray(1)
    Me.Campo3 = VarArray(2)

    e assim sucessivamente.

    Eis a instrção, adapte as suas necessidades:
    Dim seq As String, K

    seq = "[NomeEmpresa] & '|' & [cpEndereco] & '|' & [cpEndereco] & '|' & [CpBairro] & '|' & [CpCidade] & '|' & [CpCEP]&'|' & [CpTelefone]& '|' & [CpEmail] & '|' & [CpCaminhoImagem]&'|' & [CpCNPJ]"
    seq = DLookup(seq, "tblEmpresa")
    K = Split(seq, "|")

    A variável é a K

    Assim na linha de raciocínio K(0), K(1), etc... para tantos campos quantos concatenados na variável Seq

    Cumprimentos.

    Conteúdo patrocinado


    [Resolvido]Erro Select Empty Re: [Resolvido]Erro Select

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 13:39