DUPLA FUNCAO DO RPTFUNCTION VB6 DATAREPORT
Olá
Podem ajudar ? preciso colocar um segundo RptFunction com o calculo de soma + multiplicação .
algora parecido com SUM(VALOR)*20%
grato;
Bruno
(valor)*(100-percentual)/100)
ex
(10)*((100-10)/100)
ex
(10)*((100-10)/100)
DAVIDNUNES
Como utilizo esta função no DataReport ? este é meu objeto abaixo.
DTRP_RECIBO.Sections([Ô]Section5[Ô]).Controls.Item([Ô]Function1[Ô]). ???
Tenei desta forma mas não funciona:
DTRP_RECIBO.Sections([Ô]Section5[Ô]).Controls.Item([Ô]lbl_INSS[Ô]).Caption = DTRP_RECIBO.Sections([Ô]Section5[Ô]).Controls.Item([Ô]Function1[Ô]). text
[Ô]Valor[Ô] é o Datafield do function1 que esta com a functiontype 0-rptFuncSum
grato;
Bruno
Como utilizo esta função no DataReport ? este é meu objeto abaixo.
DTRP_RECIBO.Sections([Ô]Section5[Ô]).Controls.Item([Ô]Function1[Ô]). ???
Tenei desta forma mas não funciona:
DTRP_RECIBO.Sections([Ô]Section5[Ô]).Controls.Item([Ô]lbl_INSS[Ô]).Caption = DTRP_RECIBO.Sections([Ô]Section5[Ô]).Controls.Item([Ô]Function1[Ô]). text
[Ô]Valor[Ô] é o Datafield do function1 que esta com a functiontype 0-rptFuncSum
grato;
Bruno
Como você carrega o relatório? Posta o projeto exemplo, que vamos analisar.
Carrego desta forma .
Set con = New Connection
con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\BD_DADOS.mdb[Ô]
sSQL = [Ô]SELECT * [Ô]
sSQL = sSQL & [Ô]FROM TBL_LACAMENTO[Ô]
sSQL = sSQL & [Ô]WHERE UNIDADE = [Ô] & cmb_num_unidade_recibo.Text & [Ô][Ô]
Set rs = New Recordset
rs.CursorLocation = adUseClient
rs.Open sSQL, con
With DTRP_RECIBO
Set .DataSource = Nothing
.DataMember = [Ô][Ô]
Set .DataSource = rs.DataSource
MsgBox .Sections([Ô]Section1[Ô]).Controls.Count
With .Sections([Ô]Section1[Ô]).Controls
For i = 1 To .Count
If TypeOf .Item(i) Is RptTextBox Then
.Item(i).DataMember = [Ô][Ô]
.Item(i).DataField = rs.Fields(i - 1).Name
End If
Next i
[ô][ô]**********NOMEAR RODAPé[ô][ô]*****************************
DTRP_RECIBO.Sections([Ô]Section5[Ô]).Controls.Item(4).Caption = cmb_nome_unidade_recibo.Text
End With
.Show
End With
Set con = New Connection
con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\BD_DADOS.mdb[Ô]
sSQL = [Ô]SELECT * [Ô]
sSQL = sSQL & [Ô]FROM TBL_LACAMENTO[Ô]
sSQL = sSQL & [Ô]WHERE UNIDADE = [Ô] & cmb_num_unidade_recibo.Text & [Ô][Ô]
Set rs = New Recordset
rs.CursorLocation = adUseClient
rs.Open sSQL, con
With DTRP_RECIBO
Set .DataSource = Nothing
.DataMember = [Ô][Ô]
Set .DataSource = rs.DataSource
MsgBox .Sections([Ô]Section1[Ô]).Controls.Count
With .Sections([Ô]Section1[Ô]).Controls
For i = 1 To .Count
If TypeOf .Item(i) Is RptTextBox Then
.Item(i).DataMember = [Ô][Ô]
.Item(i).DataField = rs.Fields(i - 1).Name
End If
Next i
[ô][ô]**********NOMEAR RODAPé[ô][ô]*****************************
DTRP_RECIBO.Sections([Ô]Section5[Ô]).Controls.Item(4).Caption = cmb_nome_unidade_recibo.Text
End With
.Show
End With
1 - Muda sua Sql, informando o nome dos campos e acrescentando um novo campo, fazendo o cálculo:
ex.:
2 - Se você quiser que o valor com 20% apareça no detalhe, insere um textbox e em DataField informa o nome do campo. Neste caso, NovoValor
3 - No RptFunction informa o Datafield = NovoValor
Obs: Note que você pode exibir o valor Normal e o valor calculado.
ex.:
sSQL = [Ô]SELECT Campo1, Campo2, Campo3..., CampoValor, (CampoValor * 1.2) as NovoValor[Ô]
sSQL = sSQL & [Ô]FROM TBL_LACAMENTO[Ô]
sSQL = sSQL & [Ô]WHERE UNIDADE = [Ô] & cmb_num_unidade_recibo.Text & [Ô][Ô]
2 - Se você quiser que o valor com 20% apareça no detalhe, insere um textbox e em DataField informa o nome do campo. Neste caso, NovoValor
3 - No RptFunction informa o Datafield = NovoValor
Obs: Note que você pode exibir o valor Normal e o valor calculado.
Tópico encerrado , respostas não são mais permitidas