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


    [Resolvido]Escrever Nz(Dlookup) em SQL?

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  RneoX 7/11/2012, 13:25

    Bom dia a todos,

    Estou tendo conflitos cerebrais.

    Como faço para usar um NZ(Dlookup) em SQL? é a mesma coisa que somente usar um DLookUp? o que eu tenho que adicionar para se devolver um NZ? False or True?

    Exemplo:
    Eu tenho esse código e quero transforma-lo em SQL

    Código:
    Public Function fncPermissões(NomeForm As Form)
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rs2 As DAO.Recordset

    Dim xC As String
    xC = DLookup("Path_0", "tblCaminhoBe", "[NomeBE] = 'Dados.accdb'")
    Set db = OpenDatabase(xC)
    Set rs = db.OpenRecordset("tblPermissõesUsuários")
    Set rs2 = db.OpenRecordset("tblFunções")

    Dim filtro As String
    On Error Resume Next
    filtro = "objeto = '" & NomeForm.Name & "'"  '<<<Esse
    filtro = "Idfuncao = " & Nz(DLookup("idFuncao", "tblFunções", filtro), 0) & " AND idUsuario =" & CLng(login.ID)  '<<<Esse

    SQL = "SELECT idFuncao FROM tblFunções IN '" & xC & "' WHERE objeto = '" & NomeForm.Name & "'" '<<< O que eu estou Tentando
    SQL = "SELECT * FROM tblFunções IN '" & xC & "' WHERE objeto = '" & NomeForm.Name & "' and Idfuncao = '" <<< O que eu estou Tentando

    If Nz(DLookup("bloqueada", "tblpermissõesUsuários", filtro), True) = True Or CLng(login.ID) = 0 Then
        msgbox "Acesso bloqueado...", vbInformation, "Aviso"
        DoCmd.Close acForm, NomeForm.Name
        Exit Function
    End If
    NomeForm.AllowEdits = Nz(DLookup("atualizar", "tblpermissõesUsuários", filtro), "false") '<<<Esse
    NomeForm.AllowDeletions = Nz(DLookup("excluir", "tblpermissõesUsuários", filtro), "false") '<<<Esse
    NomeForm.AllowAdditions = Nz(DLookup("inserir", "tblpermissõesUsuários", filtro), "false") '<<<Esse
    Set rs = Nothing
    Set rs2 = Nothing
    Set db = Nothing
    End Function


    Última edição por dhtm15 em 9/11/2012, 12:41, editado 1 vez(es)


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    avatar
    Convidado
    Convidado


    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  Convidado 7/11/2012, 14:02

    Boas dhtm, se não me engano este código é do Colega Avelino... O que pretende com a alteração?

    Este código funciona perfeitamente..


    Cumprimentos.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  RneoX 7/11/2012, 14:18

    Boas novas Piloto,
    Então estou tentando migrar o sistema do avelino em tabelas totalmente desvenculadas, é que ele usa tabelas vinculadas e então faz a consulta em NZ(Dlookup)

    Já eu estou trazendo a tabela por código, e tentando fazer que esses DLookUp se tornem SQL

    *também ainda vem o caso se do jeito que estou fazendo o desempenho é melhor ou se tendo elas vinculadas igual ele usa no MaestroV4 a performance é a mesma?


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    avatar
    Convidado
    Convidado


    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  Convidado 7/11/2012, 14:36

    Então... as funções D (Dlookup, Dcount...etc) não funcionam em back-end, para isso o Avelino criou uma função semelhante para utilização em back-end, esta função intitulada DlookupX está em uma das salas de repositório como Tópico FIxo...

    De uma olhada.


    Cumprimentos.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  RneoX 8/11/2012, 10:43

    obrigado piloto, eu apanhei bastante para achar mas está na sala de vba e modulos, e não no repositório rsrs.


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  RneoX 8/11/2012, 13:48

    não ajudou muito sobre a inteção acima, então vamos a outra alternativa.

    eu vi que ele usa um sistema para reduzir as escritas

    DE:
    Código:
    me!campoA = Dlookup("campo1","NomeDaTabela",filtro)
    me!campoB = Dlookup("campo2","NomeDaTabela",filtro)
    me!campoC = Dlookup("campo3","NomeDaTabela",filtro)
    me!campoD = Dlookup("campo4","NomeDaTabela",filtro)
    me!campoE = Dlookup("campo5","NomeDaTabela",filtro)
    Para:
    Código:

    Dim seq As String, k
    seq = "[campo1] & '|' & [campo2] & '|' & [campo3] & '|' & [campo4] & '|' & [campo5]"
    seq = Dlookup(seq, "NomeDaTabela", Filtro)
    k = Split(seq, "|")
    Me!campoA = k(0)
    Me!campoB = k(1)
    Me!CampoC = k(2)
    Me!CampoD = k(3)
    Me!CampoE = k(4)

    1: Como faço isto em SQL?
    2: Como retorno valores False e Verdadeiro no SQL?


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    avatar
    Convidado
    Convidado


    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  Convidado 8/11/2012, 16:12

    Leia a menssagem que enviei la acima sobre o Dlookup....

    Cumprimentos.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  RneoX 8/11/2012, 16:44

    eu peguei o banco dele mais nao entendi nada, nao sei como aplicar, nem como entender... vou tentar amanha com a minha mente mais relaxada, hoje estou um pouco alterado...

    como eu disse, estou querendo fazer aquele codigo la em cima funcionar em back end, se voce tem uma ideia de como eu poss fazer isto, ja agradeço desde ja, pois talvez a minha opção não seja a boa...


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    avatar
    Convidado
    Convidado


    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  Convidado 8/11/2012, 17:09

    E simples.. copie os módulos das funções que o Avelino criou...

    e no lugar dessa:

    xC = DLookup("Path_0", "tblCaminhoBe", "[NomeBE] = 'Dados.accdb'")

    Coloque assim
    xC = DLookupX("Path_0", "tblCaminhoBe", "[NomeBE] = 'Dados.accdb'")

    Apenas isso para utilizar o Dlookup criado por ele.

    Cumprimentos.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  RneoX 8/11/2012, 17:31

    desculpe eu ser tão atordoado da minha parte, mas e quando a tabela nem vinculada está? que nem este exemplo de dlookup é quando existe já uma tabela no banco, mas quando não está nem local e nem vinculada? o certo é eu trazer ela para uma tabela temporária e então fazer o dlookup e apaga-la? pois até essa parte eu não entendi...

    é que no sql eu posso chamar a tabela e o banco, já no dlookup ele só chama a tabela, o banco ele não chama...


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    avatar
    Convidado
    Convidado


    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  Convidado 8/11/2012, 19:24

    Amigo,a função DlookupX do Avelino utiliza um módulo com uma instrução SQL, no caso da tabela não estar no Front-End podes utilizar o operador in na instrução SQL, dessa forma:


    StrCboDetento = "SELECT * FROM Detentos IN '" & strPath & "';"

    Onde StrPath é o caminho do BD

    strPath = "C:\Pasta\ & "NomeDoBD"


    Cumprimentos.

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  RneoX 9/11/2012, 12:25

    Piloto até ontem não estava entendendo, mas hoje já compreendi a sua explicação, eu simplesmente só adicionei o X no código do Avelino e re-configurei o módulo dele para abrir o meu banco, nada mais... foi como você explicou ali em cima, só me confundiu na hora é por que aquele código de cima está chamando realmente uma tabela local, mas eu não estava compreedendo que o código dele chama uma Back End como se fosse uma local, então a Luz venho ao meu cerebro...

    Código:
    Public Function fncPermissões(NomeForm As Form)
    Dim filtro As String
    On Error Resume Next
    filtro = "objeto = '" & NomeForm.Name & "'"
    filtro = "Idfuncao = " & Nz(DLookupX("idFuncao", "tblFunções", filtro), 0) & " AND idUsuario =" & login.ID

    If Nz(DLookupX("bloqueada", "tblpermissõesUsuários", filtro), True) = True Or login.ID = 0 Then
        msgbox "Acesso bloqueado...", vbInformation, "Aviso"
        DoCmd.Close acForm, NomeForm.Name
        Exit Function
    End If
    NomeForm.AllowEdits = Nz(DLookupX("atualizar", "tblpermissõesUsuários", filtro), "false")
    NomeForm.AllowDeletions = Nz(DLookupX("excluir", "tblpermissõesUsuários", filtro), "false")
    NomeForm.AllowAdditions = Nz(DLookupX("inserir", "tblpermissõesUsuários", filtro), "false")

    End Function

    Código:
    Public Function DLookupX(NomeCampo As Variant, nomeTabela As Variant, Optional filtro As String = "") As Variant
    Dim Rs As DAO.Recordset
    On Error GoTo trataerro
    Dim strSQL As String
    strSQL = "Select (" & NomeCampo & ") AS k FROM " & nomeTabela & IIf(filtro = "", ";", " WHERE " & filtro & ";")
    Call acx
    Set Rs = Db.OpenRecordset(strSQL, 4)
    DLookupX = Rs!k
    Rs.Close: Set Rs = Nothing
    sair:
        Call fcx
        Exit Function
    trataerro:
    Select Case Err.Number
        Case 3061: msgbox "DLookupX - Campo inexistente...", vbInformation, "Aviso"
        Case 3031: msgbox "DLookupX - Conexão fechada com a base de dados...", vbInformation, "Aviso"
        Case 3078: msgbox "DlookupX - Tabela inexistente...", vbInformation, "Aviso"
        Case 3464: msgbox "DlookupX - Tipos de dados incopatíveis...", vbInformation, "Aviso"
        Case 3021: DLookupX = Null
        Case Else
            msgbox "DLookupX - " & Err.Description & " Nº: " & Err.Number
    End Select
    End Function

    Código:
    Option Compare Database
    Public Db As DAO.Database
    Public Ws As DAO.Workspace
    Private Rs As DAO.Recordset
    Public xC As String
    Public SQL As String

    Public Sub acx()
    xC = DLookup("Path_0", "tblCaminhoBe", "[NomeBE] = 'Dados.accdb'") 'escolha aqui o local do seu back-end (base de dados)
    Set Db = OpenDatabase(xC, False, False)
    End Sub

    Public Sub fcx()
    Db.Close: Set bd = Nothing
    End Sub


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    avatar
    Convidado
    Convidado


    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  Convidado 9/11/2012, 18:28

    Beleza...

    O Fórum agradece o retorno.

    Conteúdo patrocinado


    [Resolvido]Escrever Nz(Dlookup) em SQL? Empty Re: [Resolvido]Escrever Nz(Dlookup) em SQL?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 15:02