Jump to content
Fivewin Brasil

evandro

Membros
  • Posts

    2,514
  • Joined

  • Last visited

  • Days Won

    19

Posts posted by evandro

  1. Olá,

    Acho que um caminho interessante seria falarmos sobre desenvolvimento para dispositivos móveis.
    Concordo plenamente. O mundo hoje gira em torno dos dispositivos móveis. Temos de estar dentro deste mundo.
  2. Olá,

    Quando você usa as tabelas apenas por vírgula, está implícito o "inner join". A solução é mudar para "left join".

    Ficaria assim:

    cSql="SELECT g.codigo,sum(v.qtd*v.valor),count(g.codigo),g.nome,'','','',''"
    cSql+=" FROM pedido as v
    cSql+=" left join produto as p on v.produto = p.codigo "
    cSql+=" left join grupo as g on p.grupo = g.codigo "
    cSql+=" WHERE v.data >= "+Any2Sql(cGet[1])
    cSql+=" AND v.data <= "+Any2Sql(cGet[2])
    cSql+=" AND v.tipo='1'"
    cSql+=" GROUP BY g.codigo"
    cSql+=" ORDER BY g.codigo"
    
  3. Olá,

    Use HAVING.

    cSql="SELECT '',v.cliente,c.razao,date_format(max(v.data),'%d/%m/%Y') as maiordata"
    cSql+=" FROM vendas as v"
    cSql+=" LEFT JOIN cliente as c on v.cliente = c.cod_client"
    cSql+=" GROUP BY v.cliente"
    cSql+=" ORDER BY v.cliente"
    cSql+=" HAVING maiordata < "+Any2Sql(cGet[1])
    
    
  4. Olá,

    Dos projetos que não chegaram ao fim, quem pagou por eles? Se não houve pagamento, não se pode dizer que é "Cachorro mordido de Cobra".

    Uma coisa é anunciar um produto em desenvolvimento e parar, e outra é receber por um produto. Aí o compromisso está assumido financeiramente.

    Acho o valor razoável. É mesmo como imóvel na planta. Sai bem mais em conta. Depois do prédio pronto, o valor se multiplica. Pode haver problema? Claro que pode. Mas se ninguém acredita, ninguém faz.

  5. Olá,

    Eu faria um pouco diferente:

    SQLBeginTrans()
    cSql:="INSERT INTO pedido(pedido,tipo... continuação do codigo
    cSql+="VALUES "
    for i:=1 to len(aItens) 
        ( "+any2sql(aDados[D_PEDIDO])+" ," 
        cSql+=" "+any2sql(aDados[D_TIPO])+" ,"           
        ... continuação do codigo
        cSql+=" "+any2sql(aItens[i,26])+")"
    next              
    SqlExecute(cSql)
    if SQLErrorNO() > 0 
           fMensagem() 
           return(.f.) 
    endif 
    SqlExecute("commit")	 
    SQLRollBack()
    SQLEndTrans()
    SQLRefresh() 
    

    É muito mais rápido.

  6. Olá,

    Uma alteranativa seria o código abaixo.

    CREATE TEMPORARY TABLE SELECT SUM(valor_credito) AS pago FROM cli_mensal_extrato GROUP BY id_cliente;
    
    
    SELECT 
    cli.registro AS registro,
    cli.razao AS razao,
    MIN(cfs.emissao) AS primeira,
    MAX(cfs.emissao) AS ultima,
    SUM(cfs.nota_total) AS compra,
    clm.pago
    FROM cfs_cabec AS cfs, cli_cadastro AS cli
    LEFT JOIN cli_mensal_extrato AS clm ON clm.id_cliente=cli.registro
    WHERE cfs.status='0' 
    AND cfs.vda_recebimento='3'
    AND cfs.dest_codigo=cli.registro
    GROUP BY cli.registro
    ORDER BY cli.razao;
    
    
×
×
  • Create New...