locked
Alterar a partir de Formulário RRS feed

  • Pergunta

  •  

    Pessoal,

     

    Eu estou com uma dúvida que está me deixando com a cara no chão. Isso pelo fato de o problema ser muito simples, porém, até agora eu não consegui resolvê-lo.

    É o seguinte: eu tenho um Form criado no Access onde eu preciso fazer Consulta, Alteração e Exclusão. O problema é que eu não estou conseguindo satisfazer uma condição, por exemplo, para alteração.

    Eu estou usando o seguinte código:

     

        Dim valorantigo As String
        Dim valornovo As String
        valorantigo = Forms!Manter_Unidades!listUnidades.Value
        valornovo = Forms!Manter_Unidades!txtUnidade.Value
               
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset("SELECT * FROM TbUnidades WHERE TbUnidades.Unidade = valorantigo")
        rst.Edit
        rst!Unidade = valornovo
        rst.Update

     

    Não sei se o problema está na condição "Where" que estou utilizando na linha em vermelho.

    Se alguém puder me passar um modelo de código para a realização dessas operações, ficaria muitíssimo grato.

    quarta-feira, 23 de abril de 2008 00:13

Respostas

  • Wagner,

     

    Acho que está faltando os "plics" no valor da clausula where

     

    Code Snippet
    SELECT * FROM TbUnidades WHERE Unidade=" & "'" &  valorantigo & "'"

     

     

    Mais uma dica:

     

    Eu normalmente utilizo uma função que já concatena a string

    Code Snippet

    SELECT * FROM TbUnidades WHERE Unidade=" & ToString(valorantigo)

     

     

     

    Code Snippet
    Public Function ToString(vntCampo As Variant) As String
    '--------------------------------------------------
    'Descrição : Concatena uma String, para gravação no Sql Server
    'Parametros:
    '       vntCampo      : Valor a ser concatenado
    'Exemplo:         ToString("VB")
    '        Retorno: 'VB'
    '                 ToString("")
    '        Retorno: Null
    '------------------------------------------------------------
        If IsNull(vntCampo) Or IsEmpty(vntCampo) Then
            ToString = "NULL"
        ElseIf vntCampo = "" Then
            ToString = "NULL"
        Else
            ToString = "'" & ValorCampo(Trim(vntCampo), TEXTO, False) & "'"
        End If
    End Function

     

     

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

     

    quinta-feira, 24 de abril de 2008 18:07
  • Como seu valor antigo é um texto (e não um número), tem que cercá-lo com apóstrofos:

     

    "SELECT * FROM TbUnidades WHERE Unidade='" & valorantigo & "'" 

     

    quinta-feira, 24 de abril de 2008 21:51
    Moderador

Todas as Respostas

  • "SELECT * FROM TbUnidades WHERE Unidade=" & valorantigo

     

    quarta-feira, 23 de abril de 2008 01:28
    Moderador
  • Luiz,

     

    Eu fiz conforme me informou e me parece que tive uma evolução, porém, o a´plicativo me apresentou a seguinte mensagem de erro:

     

    Erro de sintaxe (Operador faltando) na expressão de consulta 'Unidade=1ºBI'.

     

    O que você acha que eu ainda estou fazendo de errado?

     

    quinta-feira, 24 de abril de 2008 17:30
  • Wagner,

     

    Acho que está faltando os "plics" no valor da clausula where

     

    Code Snippet
    SELECT * FROM TbUnidades WHERE Unidade=" & "'" &  valorantigo & "'"

     

     

    Mais uma dica:

     

    Eu normalmente utilizo uma função que já concatena a string

    Code Snippet

    SELECT * FROM TbUnidades WHERE Unidade=" & ToString(valorantigo)

     

     

     

    Code Snippet
    Public Function ToString(vntCampo As Variant) As String
    '--------------------------------------------------
    'Descrição : Concatena uma String, para gravação no Sql Server
    'Parametros:
    '       vntCampo      : Valor a ser concatenado
    'Exemplo:         ToString("VB")
    '        Retorno: 'VB'
    '                 ToString("")
    '        Retorno: Null
    '------------------------------------------------------------
        If IsNull(vntCampo) Or IsEmpty(vntCampo) Then
            ToString = "NULL"
        ElseIf vntCampo = "" Then
            ToString = "NULL"
        Else
            ToString = "'" & ValorCampo(Trim(vntCampo), TEXTO, False) & "'"
        End If
    End Function

     

     

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

     

    quinta-feira, 24 de abril de 2008 18:07
  • Como seu valor antigo é um texto (e não um número), tem que cercá-lo com apóstrofos:

     

    "SELECT * FROM TbUnidades WHERE Unidade='" & valorantigo & "'" 

     

    quinta-feira, 24 de abril de 2008 21:51
    Moderador
  •  

    Laercio e Luiz,

     

    Muito obrigado pelas respostas.

     

    A solução que funcionou legal foi a seguinte:

     

    SELECT * FROM TbUnidades WHERE Unidade=" & "'" &  valorantigo & "'"

     

    Mais uma vez, muito obrigado.

    sexta-feira, 25 de abril de 2008 02:43