Hey people,

I want to creat one Excel file with data of 2 different tables:
db.define_table('EntradaProdutoEstoque',
                Field('ID_Produto', 'reference Produto'),
                Field('Ativo', type='boolean', default=True),
                Field('Validade', type='date'),
                Field('Data', type='date' ),
                Field('Quantidade', type='integer'),
                Field('DataDesativacao',type='date'),
                Field('Lote'),
                format='%(Lote)s' + ' - ' + '%(ID_Produto)s'
                )
db.define_table('SaidaProdutoEstoque',
                Field('ID_EntradaProdutoEstoque', 'reference 
EntradaProdutoEstoque'),
                Field('CustoUnitario', type='double'),
                Field('Data', type='date'),
                Field('Quantidade', type='integer')
                )

I done this: 
def relatorio():
    relatorio = FORM(
        INPUT(_name="dataInicial", _type="date"),
        INPUT(_name="dataFinal", _type="date"),
        INPUT(_type="submit", _value="Gerar")
    )

    relatG = ""
    db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque.requires = IS_IN_DB(db, 
db.EntradaProdutoEstoque,
                                                                        
lambda r: '%s - %s' % (r.Lote, r.ID_Produto.ProdutoDescricao))


    if relatorio.process().accepted:
        inicio = relatorio.vars.dataInicial
        fim = relatorio.vars.dataFinal
        tabelaE = ((db.EntradaProdutoEstoque.Data >= inicio)&
              (db.EntradaProdutoEstoque.Data <= fim))


        relatE = SQLFORM.grid(tabelaE, 
fields=[db.EntradaProdutoEstoque.ID_Produto,
                                              db.EntradaProdutoEstoque.Data,
                                              
db.EntradaProdutoEstoque.Quantidade], _class="",
                             headers={"EntradaProdutoEstoque.ID_Produto" : 
"Produto",
                                      "EntradaProdutoEstoque.Data" : "Data 
de entrada"},csv=False,
                             details=False,searchable=False,
                             paginate=7, links_in_grid=False,sortable=False)
        export_classes = dict(csv=True, json=False, html=False,
                              tsv=False, xml=False, 
csv_with_hidden_cols=False,
                              tsv_with_hidden_cols=False)

        tabelaS = ((db.SaidaProdutoEstoque.Data >= 
relatorio.vars.dataInicial)&
                   (db.SaidaProdutoEstoque.Data <= 
relatorio.vars.dataFinal))


        relatS = SQLFORM.grid(tabelaS, 
fields=[db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque,
                                              db.SaidaProdutoEstoque.Data,
                                              
db.SaidaProdutoEstoque.Quantidade], _class="",
                            
 headers={"SaidaProdutoEstoque.ID_EntradaProdutoEstoque" : "Produto",
                                      "SaidaProdutoEstoque.Data" : "Data de 
saida"},csv=False,
                             details=False,searchable=False,
                             paginate=7, links_in_grid=False, 
sortable=False)


        relatG = FORM(relatE+relatS,
                      INPUT(_type="submit"))
        relatSaida = db((db.SaidaProdutoEstoque.Data >= inicio) & 
(db.SaidaProdutoEstoque.Data <= fim)).select(
            db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque, 
db.SaidaProdutoEstoque.CustoUnitario,
            db.SaidaProdutoEstoque.Data, db.SaidaProdutoEstoque.Quantidade,
            
join=db.EntradaProdutoEstoque.on(db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque
 
== db.EntradaProdutoEstoque.id)
        )
        relatEntrada = db((db.EntradaProdutoEstoque.Data >= inicio) & 
(db.EntradaProdutoEstoque.Data <= fim)).select(
            db.EntradaProdutoEstoque.ID_Produto, 
db.EntradaProdutoEstoque.Data,
            db.EntradaProdutoEstoque.Quantidade, 
db.EntradaProdutoEstoque.Lote,
            join=db.Produto.on(db.EntradaProdutoEstoque.ID_Produto == 
db.Produto.id)
        )
        ''
        if relatG.process().accepted:
            arquivo = open("teste.csv", "w")
            arquivo.write("erro")
            arquivo.close()
        elif relatG.errors:
            arquivo = open("Erro.csv", "w")
            arquivo.write("testeErro")
            arquivo.close()
        else:
            arquivo = open("Relatorio.xlsx", "w")
            arquivo.write("produto; Data; Custo; Tipo; Lote; Quantidade\n")
            for produtoEntrada in relatEntrada:
                for produtoSaida in relatSaida:
                    arquivo.write(str(produtoEntrada.ID_Produto) + ";" + 
str(produtoEntrada.Data) + ";" + ";" + "Entrada;" + 
str(produtoEntrada.Lote) +
                                  ";" + str(produtoEntrada.Quantidade)+"\n")
                    
arquivo.write(str(produtoSaida.ID_EntradaProdutoEstoque) +";"+ 
str(produtoSaida.Data) + ";" + str(produtoSaida.CustoUnitario) +";" 
+"Saida;" + ";" +
                                  str(produtoSaida.Quantidade)+"\n")
            arquivo.close()

    elif relatorio.errors:
        response.flash = 'Erro'
    else:
        response.flash = "Preencha todos os campos"

    return dict(relatorio=relatorio, relat=relatG)

but in the file just write  "produto; Data; Custo; Tipo; Lote; Quantidade"

And, if i put selectable in a relatS work well but in the table show one 
check box and i don't want this. 
relatS = SQLFORM.grid(tabelaS, 
fields=[db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque,
                                              db.SaidaProdutoEstoque.Data,
                                              
db.SaidaProdutoEstoque.Quantidade], _class="",
                            
 headers={"SaidaProdutoEstoque.ID_EntradaProdutoEstoque" : "Produto",
                                      "SaidaProdutoEstoque.Data" : "Data de 
saida"},csv=False,
                             details=False,searchable=False,
                             paginate=7, links_in_grid=False, 
sortable=False,
                             selectable = lambda ids : 
redirect(URL('relatorio')))
PS: The relatG is a table for the use see if all are correct before to 
create the file






-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to