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


3 participantes

    [Resolvido]O uso do format com caracteres de substituição

    avatar
    luchyanus
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 22/05/2012

    [Resolvido]O uso do format com caracteres de substituição Empty [Resolvido]O uso do format com caracteres de substituição

    Mensagem  luchyanus 12/6/2012, 14:48

    Caros,

    Quando realizamos filtragens por meio de SQL, em geral, é necessário que especifiquemos os controles dos quais extraem-se os dados. Isso gera muita concatenação e isso realmente não me agrada. Então, imaginei que poderia utilizar a função format:

    dim sql as string

    sql = format("select * from cidades where nome = '%s'", txcidade)

    Isso não funciona. Lendo a ajuda do VBA, verifiquei que o comando format serve para formatar datas ("dd/mm/yyyy", números ("#.###,00" e cadeias de caracteres ("<"). Mas o que desejo não encontrei. Como posso utilizar um caracter de substituição no melhor estilo Pascal:


    produto := format('Produto %s, código %d', ['Prêmio', 1254]);

    Igual a: Produto Prêmio, código 1254.

    Luciano
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]O uso do format com caracteres de substituição Empty Re: [Resolvido]O uso do format com caracteres de substituição

    Mensagem  Alexandre Neves 12/6/2012, 20:25

    Boa tarde, luchyanus
    Não entendi o que pretende obter com o comando SQL. Desconheço o Pascal.
    No entanto, exponha detalhadamente o que tem e o que pretende
    avatar
    luchyanus
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 22/05/2012

    [Resolvido]O uso do format com caracteres de substituição Empty Re: [Resolvido]O uso do format com caracteres de substituição

    Mensagem  luchyanus 13/6/2012, 12:16

    Mencionei o Pascal apenas porque ele possui este recurso. Do mesmo modo, poderia ter invocado Python, Lua, C porque elas também o possuem. Então, a minha pergunta deseja saber se este recurso presente nestas linguagens, também existe no VBA. A comunicação é mesmo uma armadilha. Por vezes, achamos que fomos claros e, ao fim, a coisa não se vonfirma.

    Suponha o seguinte:

    dim sql as string

    sql = "Select * from cidades where cidade = 'São Paulo'"

    Isto funciona. Mas digamos que queira obter "São Paulo" ou outra cidade qualquer da escolha de um usuário:

    sql = "Select * from cidades where cidade = '" & me!combo1 & "'"

    Isso também funciona. E o que significa funcionar? Apenas que ele monta o SQL corretamente. O que se fará com este SQL, se será utilizado como RowSource de uma outra combo, se para exibir um relatório, para o fim deste problema não importa. Aqui importa tão somente a montagem do SQL.

    Sim, tudo o que mencionei até o momento funciona. Mas suponha que tivéssemos 5 combos. O código ficaria mais ou menos assim:

    where nome = '" & me!combo1 &"', telefone = '" & me!combo2 & "', idade = ...

    Como pode observar, há uma enorme quantidade de abrir e de fechar aspas. Em linguagens como o Pascal, o Python, Lua, Java, C... a função format ou equivalente pode ser utilizada para facilitar este trabalho.

    Poderíamos escrever algo assim:

    dim sql as string

    sql = "select * from agenda where nome = '%s', cidade = '%s', idade = %d"

    O %s representa uma string, o %d um inteiro. A seguir, faríamos o seguinte:

    sql = "select * from agenda where nome = '%s', cidade = '%s', idade = %d"
    sql = format(sql, "Luciano", "Rio de Janeiro", 36)

    Depois desta operação veríamos que a variável SQL contém: "Select * from agenda where nome = 'Luciano', cidade = 'Rio de Janeiro', idade = 36".

    Observe que, procedendo deste modo, tendemos a cometer menos erros no abrir ou fechar aspas. Tentei utilizar o format com esta sintaxe, mas não consegui. Talvez a funcionalidade que desejo esteja em função com outro nome. Como é um recurso presente, diria mesmo comum em outras linguagens, creio que deve haver algum meio de se fazer o mesmo em Visual Basic.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]O uso do format com caracteres de substituição Empty Re: [Resolvido]O uso do format com caracteres de substituição

    Mensagem  Alexandre Neves 13/6/2012, 17:02

    Boa tarde, luchyanus

    Pelo que entendi da explicação das outras linguagens, em SQL não existe essa possibilidade. Tem de escrever parâmetro a parâmetro. Se quiser verificar a existência no mesmo campo de vários valores, pode utilizar a cláusula IN. Assim:
    SELECT * FROM Tabela WHERE NomeCliente='Jorge' or NomeCliente='Mário' or NomeCliente='Carlos'
    é o mesmo que
    SELECT * FROM Tabela WHERE NomeCliente IN ('Jorge','Mário','Carlos')
    Desta última forma fica mais perceptível. Espero ter esclarecido
    avatar
    luchyanus
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 22/05/2012

    [Resolvido]O uso do format com caracteres de substituição Empty Re: [Resolvido]O uso do format com caracteres de substituição

    Mensagem  luchyanus 13/6/2012, 17:57

    Na verdade, não esperava encontrar esta funcionalidade no SQL, mas no VVBA. Os formats das outras linguagens não estão relacionados a SQL. Servem para substituir qualquer coisa. Por exemplo:

    var
    s: string;

    begin
    s := "meu nome é %s. Tenho %d anos e moro no %s';
    s := format(s, ['Luciano', 36, 'Rio de Janeio']);
    end.

    O resultado disso seria "meu nome é Luciano. Tenho 36 anos e moro no Rio de Janeiro".

    O que eu não gostaria de fazer?

    dim sql as string

    sql = "insert into contatos(nome, telefone, idade) values('" & me!txnome & "', '" & me!txtelefone & "', " & me!txidade)"

    Aqui foram apenas três controles: txnome, txtelefone e txidade. Se fossem seis, esta concatenação é muito tediosa especialmente porque temos de lidar com as aspas simples e duplas. Se o format do VBA tivesse este recurso, faria assim:

    dim sql as string

    sql = "insert into contatos(nome, telefone, idade) values('%s', '%s", %d)"
    sql = format(sql, txnome, txtelefone, txidade)

    Ou seja, a dúvida é mais de VBA do que de Access e se não for apropriada para este fórum, agradeceria se alguém tivesse algum indicação de fórum de VB.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]O uso do format com caracteres de substituição Empty Re: [Resolvido]O uso do format com caracteres de substituição

    Mensagem  JPaulo 13/6/2012, 21:40

    O mais rapido que eu conheço em VBA seria os valores do formulario serem gravados numa tabela temporaria e fazer
    um INSERT INTO com um SELECT.

    dim sql as string

    sql = "insert into contatos(nome, telefone, idade) values(select * from temp)"


    .................................................................................
    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]O uso do format com caracteres de substituição Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]O uso do format com caracteres de substituição Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]O uso do format com caracteres de substituição Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]O uso do format com caracteres de substituição Empty Re: [Resolvido]O uso do format com caracteres de substituição

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 09:50