Ir para conteúdo
Fórum Script Brasil
  • 0

Data Report


Danilo Faciroli

Pergunta

OLA PESSOAL!!

DESENVOLVI UM RELATORIO NO DATA REPORT E NESTE RELATORIO EU TENHO DOIS GRANDES TOTAIS:

TOTAL GERAL DE VENDA

TOTAL GERAL DE CUSTO

------------

EU PRECISO CRIAR MAIS UMA LINHA NO DATA REPORT QUE ME MOSTRE:

TOTAL LIQUIDO = (TOTAL DA VENDA) - (TOTAL DE CUSTO)

SERA QUE O DATA REPORT FAZ ISTO---- SE PUDER ME AJUDAR EU AGRADEÇO

ANTECIPADAMENTE MEUS AGRADECIMENTOS :o

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Se você estiver gerando seu relatorio através de um recordset fica facil, é só criar uma SQL que some a venda some o custo e fazer a diferença de valores e jogar estes valores na text do DataReport

Pegue como exemplo a dica que postei na seção de tutoriais e dicas:

http://scriptbrasil.com.br/forum/index.php?showtopic=109308

Link para o comentário
Compartilhar em outros sites

  • 0
Se você estiver gerando seu relatorio através de um recordset fica facil, é só criar uma SQL que some a venda some o custo e fazer a diferença de valores e jogar estes valores na text do DataReport

Pegue como exemplo a dica que postei na seção de tutoriais e dicas:

http://scriptbrasil.com.br/forum/index.php?showtopic=109308

Cara me desculpe mas não consegui sera que podia me ajudar mais uma vez

Antecipadamente meus agradecimentos

Link para o comentário
Compartilhar em outros sites

  • 0

Ok colega, vamos lá, passo a passo...

Para isso eu imagino uma tabela com os dois campos :

1 - credito

2 - debito

No general declarations do Form:

Dim cmd As New ADODB.Command
Dim relatorio As New ADODB.Recordset
Crie um DataReport em branco para ver como irá funcionar, depois de entender como funciona adapte ao seu projeto ok? após criar o DataReport insira nele: 1 textbox na seção details section1 e ponha na propriedade DataField = credito 1 textbox na seção details section1 e ponha na propriedade DataField = debito 1 Label na seção Page Footer Section3 e ponha na propriedade Name = total_Credito 1 Label na seção Page Footer Section3 e ponha na propriedade Name = total_Debito 1 Label na seção Page Footer Section3 e ponha na propriedade Name = total_liquido Agora no botão para gerar o relatorio:
Private Sub Command1_Click()

With cmd
    .ActiveConnection = cnn   'cnn é o nome da conexão
    .CommandType = adCmdText
    .CommandText = "SELECT tabela.credito, tabela.debito, (Select Sum(credito) as Totalcred From tabela) as totalcred, (select sum(debito) as totaldeb from tabela) as totaldeb FROM tabela"  ' instrução SQL para retornar os campos debito, credito e suas somas
    Set rs = .Execute 'carrega o recordset
    DataReport1.Sections("section3").Controls("Total_credito").Caption = rs!totalcred ' insere no datareport a soma dos creditos
    DataReport1.Sections("section3").Controls("total_debito").Caption = rs!totaldeb  ' insere no datareport a soma dos debitos
    Dim somacred As Long ' cria variavel para guardar valor da soma dos creditos
    Dim somadeb As Long ' cria variavel para guardar valor da soma dos debitos
    Dim dif As Long ' cria variavel para guardar a diferença entre credito e debito
    somacred = rs!totalcred ' insere o valor da soma dos creditos do recordset na variavel
    somadeb = rs!totaldeb ' insere o valor da soma dos debitos do recordset na variavel
    dif = somacred - somadeb ' calcula a diferença entre credito e debito guardando nesta variavel
    DataReport1.Sections("section3").Controls("total_liquido").Caption = dif ' insere a diferença através da variavel no DataReport

With DataReport1 ' Chama o DataReport
    Set .DataSource = rs
    .DataMember = ""
    .Refresh
    .Show
End With
End With
End Sub

Beleza ?

Qualquer duvida estamos ai ! ...

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Macêdo....estou fazendo algo parecido com isto...

No meu caso é a soma das contas a pagar e a receber em um período...

Mas o problema está justamente no período...

Aqui está o código um pouco modificado do seu tutorial...ele seleciona os campos e as somas e dps tira a diferença...

Dim Conex As New ADODB.Connection
Conex.Open StringDeConexao

With cmd_relatorio
    .ActiveConnection = Conex
    .CommandType = adCmdText
    .CommandText = "SELECT Con_Venc, Con_NumDoc, Con_ContParc, Con_DataEmissao, Con_Boleto, Con_NomeFantasia, Con_Tipo, FinanWin_Contas.Con_ValorCR, FinanWin_Contas.Con_ValorCP, (Select Sum(Con_ValorCR) as totalCR From FinanWin_Contas WHERE isNull(Con_ValorPgtoCR) AND Con_Venc BETWEEN #" & txtDataInicial & "# AND #" & txtDataFinal & "#) as totalCR, (select sum(Con_ValorCP) as totalCP from FinanWin_Contas WHERE isNull(Con_ValorPgtoCP) AND Con_Venc BETWEEN #" & txtDataInicial & "# AND #" & txtDataFinal & "#) as totalCP FROM FinanWin_Contas WHERE isNull(Con_ValorPgtoCP) AND isNull(Con_ValorPgtoCR) ORDER BY Con_Tipo, Con_Venc" 
     
     Set rs_relatorio = .Execute 
    
    rptBalConPConR.Sections("Section5").Controls("lblSomaCR").Caption = rs_relatorio!totalCR
    rptBalConPConR.Sections("Section5").Controls("lblSomaCP").Caption = rs_relatorio!totalCP
    
    Dim somaCR As Currency
    Dim somaCP As Currency
    Dim dif As Currency
    
    somaCR = rs_relatorio!totalCR
    somaCP = rs_relatorio!totalCP
    dif = somaCR - somaCP
    rptBalConPConR.Sections("Section5").Controls("lblDif").Caption = dif

    rptBalConPConR.Sections("Section5").Controls("lblSomaCR").Caption = Format(rptBalConPConR.Sections("Section5").Controls("lblSomaCR").Caption, "##0.00")
    rptBalConPConR.Sections("Section5").Controls("lblSomaCP").Caption = Format(rptBalConPConR.Sections("Section5").Controls("lblSomaCP").Caption, "##0.00")
    rptBalConPConR.Sections("Section5").Controls("lblDif").Caption = Format(rptBalConPConR.Sections("Section5").Controls("lblDif").Caption, "##0.00")
    
    If dif < 0 Then
    rptBalConPConR.Sections("Section5").Controls("RS_Dif").ForeColor = vbRed
    rptBalConPConR.Sections("Section5").Controls("lblDif").ForeColor = vbRed
    Else
    rptBalConPConR.Sections("Section5").Controls("RS_Dif").ForeColor = vbBlue
    rptBalConPConR.Sections("Section5").Controls("lblDif").ForeColor = vbBlue
    End If
    
With rptBalConPConR
    Set .DataSource = rs_relatorio
    .DataMember = ""
    .Refresh
    .Show
End With
End With
Aí vem o problema... Preciso especificar duas datas [Con_Venc] para selecionar os registros... Há seis registros cadastrados....o campo Con_Venc está preenchido com as seguintes datas: 15/02/08 15/03/08 15/04/08 20/02/08 20/03/08 20/04/08 Até aí tudo certo....as datas são nessa ordem mesmo que precisam ficar... Mas no form em q especifico as datas, se coloco 01/01/01 como datainicial e 10/10/10 como data final, ele me tras todos os registros sem nenhum problema [pois todos estão dentro dessas datas] Mas se quero gerar o relatorio com as contas do mes de março...se coloco 01/03/08 como datainicial e 31/03/08 como datafinal, ele dá o erro Run-time error '13': Type mismatch.... ...e seleciona esta linha:
rptBalConPConR.Sections("Section5").Controls("lblSomaCR").Caption = rs_relatorio!totalCR

Não sei porque está dando esse erro de tipo de dados...

Você conseguiria me ajudar??

Obrigado

Editado por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...