Ir para conteúdo
Fórum Script Brasil

Marcelo Damasceno

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Posts postados por Marcelo Damasceno

  1. Olá Pessoal,

    Estou com a seguinte dúvida em relação ao comportamento de uma variável em uma função.

    A função é:

    def soma(x,y):
        if(len(x)==len(y)):        
            soma=x
            for i in range(0,len(x)):
                soma[i]=x[i]+y[i]
            return soma
        else:
            print("O número de elementos é diferente")
            return 0
    a=[1,2,3]
    b=[4,5,6]
    soma1=soma(a,B)
    print("1: ",soma1)
    print(a)
    soma2=soma(a,[8,8,8])
    print(soma2)
    A saída está sendo:
    1:[5,7,9]
    [5,7,9]
    [13,15,17]

    O problema é o seguinte: Ele está atribuindo a variável a o valor retornado pela função soma(a,B). Lembre-se que não estou usando a variável a dentro da função, estou usando x. Nem estou atribuindo a a o valor soma(a,B) em nenhum momento.

    ALguém poderia me explicar o porque disto estar acontecendo.

    Se ajudar estou usando o Python 3.2 com Idle no Ubuntu.

    Obrigado.

  2. Olá,

    Eu tenho a seguinte query:

    select distinct

    ger_nfs.nf_dtemis as 'Data',

    emp_ds as 'Empresa',

    Funcionario=fun_nmguerra,

    pad_ds as Familia,

    modelo.mod_vlpub+sum(opcionais.opc_vlpub)+isnull(id_vl,0) as 'Valor Público',

    (ger_nfs.nf_vlliquido - (select isnull(sum(propp_Vl ),0)

    from Vouga.dbo.vec_propp (nolock)

    INNER JOIN Vouga.dbo.vec_prop (nolock) ON (vec_propp.prop_nr = vec_prop.prop_nr)

    INNER JOIN Vouga.dbo.tab_tpagprop (nolock) ON (tab_tpagprop.tpagprop_cd = vec_propp.tpagprop_cd

    and ISnull(tpagprop_margem,'S') = 'N' )

    where vec_prop.nf_nr = ger_nfs.nf_nr and

    vec_prop.nf_serie = ger_nfs.nf_serie)) as 'Valor Venda',

    ger_nfsv.nf_margem

    from

    Vouga.dbo.ger_ve,Vouga.dbo.ger_veo,Vouga.dbo.tab_mod,Vouga.dbo.tab_pad,Vouga.dbo.ger_nfsv,Vouga.dbo.ger_nfs,Vouga.dbo.tab_fun,Vouga.dbo.ger_emp,

    1*** (select distinct mod_cd, mod_vlpub,mod_dt from Vouga.dbo.tab_modp B where mod_dt =

    (select max(mod_dt)from Vouga.dbo.tab_modp C where C.mod_cd = B.mod_cd and mod_dt<='09/30/2008')) as modelo,

    2*** (select distinct opc_dt, opc_cd, opc_vlpub,grmod_cd from Vouga.dbo.tab_opcp B where opc_dt =

    (select max(opc_dt)from Vouga.dbo.tab_opcp C where C.opc_cd = B.opc_cd and C.grmod_cd = B.grmod_cd and opc_dt<='09/30/2008')) as opcionais,

    3*** (select distinct md_sigla, id_vl from Vouga.dbo.ger_id B where id_dt =

    (select max(id_dt)from Vouga.dbo.ger_id C where C.md_sigla = B.md_sigla)) and id_dt<='09/30/2008')) as frete

    where

    ger_nfs.est_cd in ('VN','DI','VL','VP') and

    ger_nfsv.nf_nr=ger_nfs.nf_nr and

    ger_nfsv.ve_nr=ger_ve.ve_nr and

    ger_ve.ve_nr=ger_veo.ve_nr and

    modelo.mod_cd=ger_ve.mod_cd and

    opcionais.opc_cd=ger_veo.opc_cd and

    opcionais.grmod_cd=ger_ve.mod_cd and

    tab_mod.mod_cd=modelo.mod_cd and

    tab_pad.pad_cd = tab_mod.pad_cd and

    tab_pad.md_frete = frete.md_sigla and

    ger_nfs.fun_vend=tab_fun.fun_Cd and

    ger_emp.emp_cd = ger_nfs.emp_cd and

    nf_dtcanc is null and

    4*** ger_nfs.nf_dtemis between '01/01/2008' and getdate()

    group by pad_ds,emp_ds,ger_nfs.nf_dtemis,isnull(id_vl,0),modelo.mod_vlpub,ger_nfs.nf_vlliquido,ger_nfs.nf_serie,ger_nfs.nf_nr ,ger_nfs.nf_dtemis,ger_ve.ve_nr,fun_nmguerra,ger_nfsv.nf_margem

    Eu queria as restrições de data<='09/30/2008' dos n*** sub-selects obedecem a restrição 4***, isto é, variando entre 01/01/2008 e a data de hoje. Como eu posso fazer isso? Se eu colocar o campo nf_dtemis na restrição, retorna campo não encontrado com razão.

    Muito Obrigado por qualquer resposta.

×
×
  • Criar Novo...