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]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 13:20

    Bem amigos.. tenho uma função que me retorna uma variável como o nome do campo de uma tabela..

    O que preciso é executar a inserção do registro no campo coincidente com a variável, desta forma:

    r!PolDir = Serialize(template.tpt)

    Em azul está o nome do campo, porem pretendo que ai seja a viariável para assumir o valor da variável que será o nome do campo pretendido para a gravação do registro

    como fazer isso?

    Saudações
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  criquio 9/8/2011, 14:15

    Tente algo assim:

    r!" & PolDir & " = Serialize(template.tpt)

    Não entendi bem, mas talvez dê certo


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 14:27

    Era esperado procedimento e não variável...

    Consegui algo assim a seguir mas não estou conseguindo passar para o próximo if caso o nome da variável seja outro:


    Private Sub Cadastrar_Click()
    Dim DedoSel As String
    ' On Error GoTo TrataErro

    If IsNull(ctlName) Or ctlName = "" Then
    MsgBox "Não foi selecionado o dedo a ser digitalizado", vbInformation, "Atenção!"
    Exit Sub
    End If

    If Not MoldeValido() Then
    EscreveLog ("Erro na captura da digital")
    Exit Sub
    End If

    If ctlName = "PolDir" Then
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!IndDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")
    End If

    If ctlName = "indDir" Then
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!IndDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")
    'Forms!frmCliente!Digital = Serialize(template.tpt)
    End If
    Exit Sub
    End If
    End If

    Exit Sub
    TrataErro:
    DoCmd.SetWarnings True
    DoCmd.Hourglass False
    MsgBox Error, , "Erro nº" & err & " ao clicar em Cadastrar"
    End Sub
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  criquio 9/8/2011, 15:07

    Talvez assim:

    If ctlName = "PolDir" Then
    ...
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!IndDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")
    End If

    ElseIf ctlName = "indDir" Then
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!IndDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")
    'Forms!frmCliente!Digital = Serialize(template.tpt)
    End If
    Else
    Exit Sub
    End If
    ' End If → Esse sai fora...
    ...


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    chsestrem
    chsestrem
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 463
    Registrado : 01/03/2010

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  chsestrem 9/8/2011, 15:17

    Bom dia Hary, você pode usar o Select Case também:

    Código:

    Private Sub Cadastrar_Click()
    Dim DedoSel As String
    ' On Error GoTo TrataErro

    If IsNull(ctlName) Or ctlName = "" Then
    MsgBox "Não foi selecionado o dedo a ser digitalizado", vbInformation, "Atenção!"
    Exit Sub
    End If

    If Not MoldeValido() Then
    EscreveLog ("Erro na captura da digital")
    Exit Sub
    End If

    Select Case ctlName
    Case is = "PolDir"
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!IndDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")
    End If

    Case is = "indDir"
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!IndDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")
    'Forms!frmCliente!Digital = Serialize(template.tpt)
    End If
    End Select
    Exit Sub
    End If
    End If

    Exit Sub
    TrataErro:
    DoCmd.SetWarnings True
    DoCmd.Hourglass False
    MsgBox Error, , "Erro nº" & err & " ao clicar em Cadastrar"
    End Sub

    Sds,


    .................................................................................
    Charles Sestrem
    http://www.vbabit.com.br
    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 16:08

    Beleza amigão.. eu já havia até tentado o Select case, mas creio que havia errado em algo ai parti para o if...

    Bem, sanada esta dúvida preciso de mais um detalhe...

    Irei adicionar para um registro os 10 dedos das mãos, representado justamente pelas variáveis que estão no código, são elas)
    PolDir, MedDir, IndDir, AneDir, MinDir o mesmo para Esquerda substituindo logicamente o sufixo Dir pelo Esq.

    Pois bem, preciso agora que tais campos sejam adicionados para o mesmo registro, pois da forma que está adiciona cada campo em um novo registro.. se puderem ajudar, fico grato


    Private Sub Cadastrar_Click()
    Dim DedoSel As String
    ' On Error GoTo TrataErro

    If IsNull(ctlName) Or ctlName = "" Then
    MsgBox "Não foi selecionado o dedo a ser digitalizado", vbInformation, "Atenção!"
    Exit Sub
    End If

    If Not MoldeValido() Then
    EscreveLog ("Erro na captura da digital")
    Exit Sub
    End If

    If ctlName = "PolDir" Then
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!PolDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")
    'Forms!frmCliente!Digital = Serialize(template.tpt)
    End If

    ElseIf ctlName = "IndDir" Then
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!IndDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")

    End If
    Else
    Exit Sub
    End If

    Exit Sub

    Exit Sub
    TrataErro:
    DoCmd.SetWarnings True
    DoCmd.Hourglass False
    MsgBox Error, , "Erro nº" & err & " ao clicar em Cadastrar"
    End Sub
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  criquio 9/8/2011, 16:25

    Bem amigão, acho que aí entra a subtabela DetalhesDigitais relacionadas com um código na tabela principal, aonde você teria os 10 campos para as mãos e, se quiser pegar a digital dos dedos dos pés tambem... esquece essa parte Razz


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 16:40

    Ja tenho a tabela Detentos e a tabela digitais... esse código ai é justamente para inserir na tabela digitais..
    Estou tentando algo aqui... qualquer novidade retorno..

    Saudações
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  criquio 9/8/2011, 16:53

    Ao que me parece, só falta o código do detento aí e tambem mudar o If de lugar, para o caso de não existir o código, cadastrar novo registro e se já existir, editar o código existente. Algo assim:

    Dim r As Recordeset
    Set r = CurrentDb.OpenRecordset("NomeTabela", DbOpenDynaset)

    r.FindFirst "Código = " & Me.txtCodigo ' Encontrar primeiro registro com o código do detento.
    If r.NoMatch Then ' Se o código ainda não está cadastrado...
    r.AddNew ' ... adiciona em novo registro...
    Else ' ... caso contrário...
    r.Edit ' ... edita o registro existente.
    End If

    r!Campo1 = Me.Campo1
    r!Campo2 = Me.Campo2
    ...


    Mais ou menos isso, creio eu. Aí pode tirar os Ifs de baixo e tirar os AddNews que tem aí.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 17:09

    Entendi amigão.. o que ocorre é que será inserido cada dedo por vez pois a dll apenas captura 1 por vez...
    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 17:17

    O Código seria este... o que ocorre é que apartir do segundo dedo (IndDir) teria que inserir no mesmo registro... como fazer?



    Private Sub NovoRegistro()
    On Error GoTo TrataErro

    Dim db As DAO.Database
    Dim ws As DAO.Workspace
    Dim rs As DAO.Recordset
    Dim NomeBD As String
    Dim StrPath As String

    Dim I

    NomeBD = "Bio_be.accdb"

    'String com path para conexão com a base de dados.
    StrPath = DirBancoDados & NomeBD ' Conecta ao banco de dados comum
    Set dbBanco = OpenDatabase(StrPath)

    'Verifica se o campo txtNome não está nulo. Se estiver
    'significa que é um novo registro.
    If Not IsNull(CboDetento) Then

    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "\Bio_Be.accdb", False, False, "MS Access;PWD=senha")

    StrSQLDetentos = ("SELECT * FROM tblDigital")

    Set rs = db.OpenRecordset(StrSQLDetentos)

    I = MsgBox("Voce está adicionando novo registro de digital para este detento, deseja prosseguir ?", vbYesNo, "Confirmação")
    If I = vbYes Then


    '********DIGITAIS*************************************************************************

    If IsNull(ctlName) Or ctlName = "" Then
    MsgBox "Não foi selecionado o dedo a ser digitalizado", vbInformation, "Atenção!"
    Exit Sub
    End If

    If Not MoldeValido() Then
    EscreveLog ("Erro na captura da digital")
    Exit Sub
    End If

    If ctlName = "PolDir" Then
    If r.EOF Then
    rs.AddNew
    rs![ID_Detento] = Me.txtID
    rs![Detento] = Me.CboDetento.Column(1)
    rs!PolDir = Serialize(template.tpt)
    rs.Update
    EscreveLog ("Registro Gravado com sucesso")
    'Forms!frmCliente!Digital = Serialize(template.tpt)
    End If

    ElseIf ctlName = "IndDir" Then
    If r.EOF Then
    r.AddNew
    r!Detento = Nome
    r!IndDir = Serialize(template.tpt)
    r.Update
    EscreveLog ("Registro Gravado com sucesso")

    End If
    Else
    Cancel = True
    Exit Sub
    End If
    End If
    End If


    rs.Close
    db.Close
    Set rs = Nothing
    Set db = Nothing
    TrataErro:
    DoCmd.SetWarnings True
    DoCmd.Hourglass False
    MsgBox Error, , "Erro nº" & err & " ao clicar em Cadastrar"
    End Sub
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  criquio 9/8/2011, 17:49

    Fica meio difícil sem ter acesso ao sistema em funcionamento, mas você precisa ter o código do detento na tela e ir inserindo os dedos, um por vez mesmo, mas tendo esse código do detento como registro. Quando você inserir a primeira digital, será inserida como novo registro, pois o código do detendo ainda não está cadastrado na tabela das digitais. À partir do segundo dedo, ele irá editar a linha já inserida, colocando cada dedo no seu devido campo. Para isso, acredito que talvez fosse o caso de se ter 10 botões no formulário. Você clica no botão do polegar direito e coloca o nome do campo da tabela em um campo do formulário e grava essa digital no campo da tabela cujo nome está no campo do formulário. Ou, se for sempre seguir uma sequência de dedos, ao gravar cada uma digital, já coloca o nome do próximo no campo. Algo assim.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 18:02

    É exatamente isto que tenho... Cada Botão ao clicar muda o seu caption.. Assim

    Polegar... ao clicar fica vermelho com o texto Inserindo Polegar (Nome do Botão: PolDir)

    Tenho o código que extrai o nome do controle cujo caption esteja como "Inserir", que é o caso do botão clicado....

    E é este nome (nome do botão) que é o nome da tabela...

    Ja tenho A cbo onde tem o nome do detento e a caixa texto com a sua ID

    No primeiro Dedo registra:
    1 - ID
    2 - Nome
    3 - Primeiro dedo...

    Apartir do segundo... apenas os dedos restantes
    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 18:05

    O nome do botão clicado é igual ao nome do campo.. e o nome do botão é levado para uma variável global.. e utilizada na gravação do registro
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  criquio 9/8/2011, 18:16

    Então acredito que é só manter a id do detento enquanto estiver cadastrando as digitais dele, passando essa id na instrução vba:

    Dim r As Recordeset
    Set r = CurrentDb.OpenRecordset("NomeTabela", DbOpenDynaset)

    r.FindFirst "IDDetento = " & Me.txtIDDetento ' Encontrar primeiro registro com o código do detento.
    If r.NoMatch Then ' Se o código ainda não está cadastrado...
    r.AddNew ' ... adiciona em novo registro...
    Else ' ... caso contrário...
    r.Edit ' ... edita o registro existente.
    End If

    r!NomeDedo = Serialize(template.tpt)
    ...


    Você só precisa dessa linha para campo, uma vez que a variável retorna o nome do campo da tabela que está no campo do formulário e o código já foi passado no verificação se já existe ou não.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 19:18

    Bem amigos s princípio esta o código completo...
    Aplicado com uma mescla das duas sugestões (Criqui e Charles) somado com os meus
    Obrigado Ao grande Criquio e Grande Charles..


    Private Sub NovoRegistro()
    On Error GoTo TrataErro
    Parametros_de_Inicializacao "SysPen.par"
    Dim db As DAO.Database
    Dim ws As DAO.Workspace
    Dim rs As DAO.Recordset
    Dim NomeBD As String
    Dim StrPath As String
    Dim StrSqlDetentos As String

    Dim I

    NomeBD = "Bio_be.accdb"

    'String com path para conexão com a base de dados.
    StrPath = DirBancoDados & NomeBD ' Conecta ao banco de dados comum
    Set db = OpenDatabase(StrPath)


    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "\Bio_Be.accdb", False, False, "MS Access;PWD=senha")

    StrSqlDetentos = ("SELECT * FROM tblDigital")

    Set rs = db.OpenRecordset(StrSqlDetentos)

    I = MsgBox("Voce está adicionando novo registro de digital para este detento, deseja prosseguir ?", vbYesNo, "Confirmação")
    If I = vbYes Then


    '********DIGITAIS*************************************************************************

    If IsNull(ctlName) Or ctlName = "" Then
    MsgBox "Não foi selecionado o dedo a ser digitalizado", vbInformation, "Atenção!"
    Exit Sub
    End If

    If Not MoldeValido() Then
    EscreveLog ("Erro na captura da digital")
    Exit Sub
    End If

    rs.FindFirst "ID_Detento = " & Me.txtID ' Encontrar primeiro registro com o código do detento.

    If rs.NoMatch Then ' Se o código ainda não está cadastrado...
    rs.AddNew ' ... abre a edição de registro...
    rs![ID_Detento] = Me.txtID
    rs!PolDir = Serialize(template.tpt)
    EscreveLog ("Registro Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...


    Else ' ... caso contrário...
    rs.Edit ' ... edita o registro existente.

    Select Case ctlName

    Case Is = "IndDir"
    rs!IndDir = Serialize(template.tpt)
    EscreveLog ("Dedo Indicador Direito Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    Case Is = "MedDir"
    rs!MedDir = Serialize(template.tpt)
    EscreveLog ("Dedo Médio Direito Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    Case Is = "AneDir"
    rs!AneDir = Serialize(template.tpt)
    EscreveLog ("Dedo Anelar Direito Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    Case Is = "MinDir"
    rs!MinDir = Serialize(template.tpt)
    EscreveLog ("Dedo Mínimo Direito Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    Case Is = "PolEsq"
    rs!PolEsq = Serialize(template.tpt)
    EscreveLog ("Dedo Polegar Esquerdo Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    Case Is = "IndEsq"
    rs!IndEsq = Serialize(template.tpt)
    EscreveLog ("Dedo Indicador Esquerdo Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    Case Is = "MedEsq"
    rs!MedDir = Serialize(template.tpt)
    EscreveLog ("Dedo Médio Esquerdo Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    Case Is = "AneEsq"
    rs!AneEsq = Serialize(template.tpt)
    EscreveLog ("Dedo Anelar Esquerdo Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    Case Is = "MinEsq"
    rs!MinEsq = Serialize(template.tpt)
    EscreveLog ("Dedo Mínimo Gravado com sucesso")
    rs.Update ' ... adiciona em novo registro...

    End Select

    End If
    End If
    rs.Close
    db.Close
    Set rs = Nothing
    Set db = Nothing
    'TrataErro:
    ' DoCmd.SetWarnings True
    ' DoCmd.Hourglass False
    ' MsgBox Error, , "Erro nº" & err & " ao clicar em Cadastrar"
    End Sub



    Agora vou ao código de verificação da digital

    Saudações
    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 20:01

    Código finalizado:



    Código:
    Private Sub NovoRegistro()
        On Error GoTo TrataErro
    Parametros_de_Inicializacao "SysPen.par"
    Dim db As DAO.Database
    Dim ws As DAO.Workspace
    Dim rs As DAO.Recordset
    Dim NomeBD As String
    Dim StrPath As String
    Dim StrSqlDetentos As String

    Dim I

    NomeBD = "Bio_be.accdb"
       
        'String com path para conexão com a base de dados.
        StrPath = DirBancoDados & NomeBD    ' Conecta ao banco de dados comum
        Set db = OpenDatabase(StrPath)

       
    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "\Bio_Be.accdb", False, False, "MS Access;PWD=senha")

                    StrSqlDetentos = ("SELECT * FROM tblDigital")

    Set rs = db.OpenRecordset(StrSqlDetentos)

        I = MsgBox("Voce está adicionando novo registro de digital para este detento, deseja prosseguir ?", vbYesNo, "Confirmação")
            If I = vbYes Then
           
       
    '********DIGITAIS*************************************************************************

      If IsNull(ctlName) Or ctlName = "" Then
            MsgBox "Não foi selecionado o dedo a ser digitalizado", vbInformation, "Atenção!"
            Exit Sub
        End If
     
            If Not MoldeValido() Then
                EscreveLog ("Erro na captura da digital")
            Exit Sub
        End If

    rs.FindFirst "ID_Detento = " & Me.txtID ' Encontrar primeiro registro com o código do detento.
           
            If rs.NoMatch Then ' Se o código ainda não está cadastrado...
                rs.AddNew ' ... abre a edição de registro...
                rs![ID_Detento] = Me.txtID
                rs!PolDir = Serialize(template.tpt)
                EscreveLog ("Registro Gravado com sucesso")
                rs.Update ' ... adiciona em novo registro...
                    If ctlName = "PolDir" Then
                        Me.PolDir.Caption = "INSERIDO"
                        Me.PolDir.Enabled = False
                        End If

            Else ' ... caso contrário...
            rs.Edit ' ... edita o registro existente.
           
        Select Case ctlName
           
            Case Is = "IndDir"
                    rs!IndDir = Serialize(template.tpt)
                    EscreveLog ("Dedo Indicador Direito Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "IndDir" Then
                            Me.IndDir.Caption = "INSERIDO"
                            Me.IndDir.Enabled = False
                        End If
            Case Is = "MedDir"
                    rs!MedDir = Serialize(template.tpt)
                    EscreveLog ("Dedo Médio Direito Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "MedDir" Then
                            Me.MedDir.Caption = "INSERIDO"
                            Me.MedDir.Enabled = False
                        End If
            Case Is = "AneDir"
                    rs!AneDir = Serialize(template.tpt)
                    EscreveLog ("Dedo Anelar Direito Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "AneDir" Then
                            Me.AneDir.Caption = "INSERIDO"
                            Me.AneDir.Enabled = False
                        End If
                       
            Case Is = "MinDir"
                    rs!MinDir = Serialize(template.tpt)
                    EscreveLog ("Dedo Mínimo Direito Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "MinDir" Then
                            Me.MinDir.Caption = "INSERIDO"
                            Me.MinDir.Enabled = False
                        End If
       
            Case Is = "PolEsq"
                    rs!PolEsq = Serialize(template.tpt)
                    EscreveLog ("Dedo Polegar Esquerdo Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "PolEsq" Then
                            Me.PolEsq.Caption = "INSERIDO"
                            Me.PolEsq.Enabled = False
                        End If
           
            Case Is = "IndEsq"
                    rs!IndEsq = Serialize(template.tpt)
                    EscreveLog ("Dedo Indicador Esquerdo Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "IndEsq" Then
                            Me.IndEsq.Caption = "INSERIDO"
                            Me.IndEsq.Enabled = False
                        End If

            Case Is = "MedEsq"
                    rs!MedEsq = Serialize(template.tpt)
                    EscreveLog ("Dedo Médio Esquerdo Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "MedEsq" Then
                            Me.MedEsq.Caption = "INSERIDO"
                            Me.MedEsq.Enabled = False
                        End If
         
            Case Is = "AneEsq"
                    rs!AneEsq = Serialize(template.tpt)
                    EscreveLog ("Dedo Anelar Esquerdo Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "AneEsq" Then
                            Me.AneEsq.Caption = "INSERIDO"
                            Me.AneEsq.Enabled = False
                        End If

            Case Is = "MinEsq"
                    rs!MinEsq = Serialize(template.tpt)
                    EscreveLog ("Dedo Mínimo Gravado com sucesso")
                    rs.Update ' ... atualiza o registro...
                        If ctlName = "MinEsq" Then
                            Me.MinEsq.Caption = "INSERIDO"
                            Me.MinEsq.Enabled = False
                        End If
     
        End Select

    End If
    End If
    rs.Close
    db.Close
    Set rs = Nothing
    Set db = Nothing
    Exit Sub

    TrataErro:
        DoCmd.SetWarnings True
        DoCmd.Hourglass False
        MsgBox Error, , "Erro nº" & err & " ao clicar em Cadastrar"
    End Sub
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  criquio 9/8/2011, 20:35

    Amigão, olha exemplo de uma alternativa que montei aqui para não precisar colocar um Select e nem If para cada dedo:

    http://dl.dropbox.com/u/5454503/CampoTabelaNoForm.zip


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 21:12

    Justamente era isto que eu pretendia no começo do tópico... mas ao inves de uma caixa texto o valor de uma variavel..

    pois extraio o nome do controle em uma pequena função que me serve a outros propositos


    rs("" & Me.txtDedo & "") = Me.txtDedo
    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 9/8/2011, 21:17

    Alguns prints do resultado final

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Dig0

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Dig1

    Para um dedo

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Dig2
    chsestrem
    chsestrem
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 463
    Registrado : 01/03/2010

    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  chsestrem 9/8/2011, 23:02

    Cara, o Dedão fica feio assim?


    Rsss

    Sds,


    .................................................................................
    Charles Sestrem
    http://www.vbabit.com.br
    avatar
    Convidado
    Convidado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Convidado 10/8/2011, 11:02

    rsrs...Ja pensou se fossemos como o Cachorro por exemplo, que a impressão é no nariz!!!!
    kkkk

    Abraços

    Conteúdo patrocinado


    [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo Empty Re: [Resolvido]Gravar dados em campo via recordset, aplicando variável para o nome do campo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 01:23