MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Extracto Bancário no MySQL

    Avelino João
    Avelino João
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Angola
    Mensagens : 291
    Registrado : 10/03/2012

    Extracto Bancário no MySQL  Empty Extracto Bancário no MySQL

    Mensagem  Avelino João em 3/5/2018, 16:27

    Boa Tarde, hoje decidi colocar algo interessante para quem precisar..

    Basicamente e um extracto Bancário, direito em SQL sem usar aplicação alguma, dessa forma para muito que pensam trabalhar com banco de dado MySQL fica fácil, um extracto igual ao do mestre Avelino Sampaio.

    Criamos uma Tabela para o Exemplo


    Código:
    create TABLE demo_extracto
    (id int(11) PRIMARY key AUTO_INCREMENT,
    obs varchar(30),
    entra decimal(18,2) not null default 0,
    sai decimal(18,2) not null default 0,
    debito_credito TINYINT not null default 0 COMMENT '1 para debito(Sai) 0 para credito(Entra)');

    Adicionamos alguns dados para testar.
    Código:
    INSERT INTO `demo_extracto` (`obs`, `entra`, `debito_credito`) VALUES ('Entro Dinheiro', '1200', '0');
    INSERT INTO `demo_extracto` (`obs`, `entra`, `debito_credito`) VALUES ('Entro mais Dinheiro', '4500', '0');
    INSERT INTO `demo_extracto` (`obs`, `entra`, `sai`, `debito_credito`) VALUES ('Sai Dinheiro', '0', '2800', '1');
    INSERT INTO `demo_extracto` (`obs`, `entra`, `debito_credito`) VALUES ('Entro mais', '1230', '0');
    INSERT INTO `demo_extracto` (`obs`, `entra`, `sai`, `debito_credito`) VALUES ('Saiu', '0', '150', '1');
    INSERT INTO `demo_extracto` (`obs`, `entra`, `sai`, `debito_credito`) VALUES ('Saiu mais', '0', '1235', '1');

    Criamos uma Função para auxiliar na visualização do formato numérico dentro do SQL (Opcional)

    Código:
    DELIMITER $$
    DROP FUNCTION IF EXISTS f_numero_format$$
    /*A função recebe 2 parâmetros o Valor a ser convertido y a quantidade de casas decimais*/
    CREATE FUNCTION `f_numero_format`(numero decimal(18,2), decimals int(1)) RETURNS varchar(20) CHARSET utf8
    NO SQL
    BEGIN
     declare vs_retorno varchar(20);
     set vs_retorno = REPLACE( REPLACE (REPLACE (FORMAT (numero, decimals), ".", "@"), ",", "."), "@", ",");
     return vs_retorno;
    END$$
    DELIMITER ;


    Por Ultimo o SQL que faz a magica
    Código:
    SELECT id, obs, f_numero_format(entra,2) as credito, f_numero_format(sai,2) as debito,  f_numero_format(saldo, 2) as saldo
    FROM (
        SELECT
            id,
            obs,
            entra,
            sai,
     @debito_credito := debito_credito AS tipo,
            @saldo := IF(@debito_credito = 0, @saldo + entra, @saldo - sai) AS saldo
        FROM demo_extracto, (SELECT @debito_credito := 0, @saldo := 0) as vars
        ORDER BY id
    ) AS extrato

    union all

    SELECT 0, 'Saldo Final', 0, 0,  f_numero_format(@saldo, 2);



    Fazendo um filtro entre datas usando essa consulta SQL..



    Código:
    SELECT id, obs, f_numero_format(entra,2) as credito, f_numero_format(sai,2) as debito,  f_numero_format(saldo, 2) as saldo
    FROM (
        SELECT
            id,
            obs,
            entra,
            sai, @debito_credito := debito_credito AS tipo,
            @saldo := IF(@debito_credito = 0, @saldo + entra, @saldo - sai) AS saldo
        FROM demo_extracto, (SELECT @debito_credito := 0, @saldo := 0) as vars
        WHERE colunaData BETWEEN '01-01-2016' and '31-01-2016' /*Obviamente neste exemplo não tenho data, basta adicionar a coluna e testar*/
        ORDER BY id
    ) AS extrato

    union all

    SELECT 0, 'Saldo Final', 0, 0,  f_numero_format(@saldo, 2);

    Bom brevemente vou dar continuidade ao tópico e explicar como por a funcionar no Ms Access usando o Stored Procedure do Mysql.

    Extracto Bancário no MySQL  Captur10


    .................................................................................
    Proaccess - Angola
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5839
    Registrado : 15/03/2013

    Extracto Bancário no MySQL  Empty Re: Extracto Bancário no MySQL

    Mensagem  ahteixeira em 3/5/2018, 19:50

    Olá João Avelino,

    Parabéns e obrigado pela partilha.
    Ficamos aguardar a continuidade.

    cheers
    marcos_novack
    marcos_novack
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 19
    Registrado : 19/01/2011

    Extracto Bancário no MySQL  Empty Re: Extracto Bancário no MySQL

    Mensagem  marcos_novack em 10/4/2019, 00:00

    Maravilha!!!
    Muito bom

      Data/hora atual: 19/4/2019, 07:59