CONVERTER FORMULA CLIPPER PARA VB6
AÃ galera!
Estou desenvolvendo uma aplicação em VB que irá substituir alguns programas do DATASUS que são em DOS e estou à s voltas com algumas fórmulas do DATASUS. Por isso estou sempre pedindo a ajuda para conversão de algumas fórmulas para VB
***ESSA ABAIXO é EM CLIPPER***
Será que alguém me ajuda passando ela pra VB
nSMT := 0
WHILE .NOT. APAL->(EOF())
nSoma := 0
IF APAL->APA_CONT = [Ô]1[Ô]
nSoma := nSoma + (VAL(APAL->APA_NUM ) % 1111)
ENDIF
nSoma += VAL( APAL->PAP_PA1) % 1111
nSoma += VAL( APAL->PAP_PA2) % 1111
nSoma += VAL( APAL->PAP_PA3) % 1111
nSoma += VAL( APAL->PAP_PA4) % 1111
nSoma += VAL( APAL->PAP_PA5) % 1111
nSoma += VAL( APAL->PAP_PA6) % 1111
nSoma += VAL( APAL->PAP_PA7) % 1111
nSoma += VAL( APAL->PAP_PA8) % 1111
nSoma += VAL( APAL->PAP_PA9) % 1111
nSoma += VAL( APAL->PAP_PA10) % 1111
nSoma += VAL(APAL->PAP_QT_P1 )% 1111
nSoma += VAL(APAL->PAP_QT_P2 )% 1111
nSoma += VAL(APAL->PAP_QT_P3 )% 1111
nSoma += VAL(APAL->PAP_QT_P4 )% 1111
nSoma += VAL(APAL->PAP_QT_P5 )% 1111
nSoma += VAL(APAL->PAP_QT_P6 )% 1111
nSoma += VAL(APAL->PAP_QT_P7 )% 1111
nSoma += VAL(APAL->PAP_QT_P8 )% 1111
nSoma += VAL(APAL->PAP_QT_P9 )% 1111
nSoma += VAL(APAL->PAP_QT_P10)% 1111
nSMT += nSoma
APAL->(DBSKIP(+1))
ENDDO
nSMT := nSMT % 1111 + 1111
Estou desenvolvendo uma aplicação em VB que irá substituir alguns programas do DATASUS que são em DOS e estou à s voltas com algumas fórmulas do DATASUS. Por isso estou sempre pedindo a ajuda para conversão de algumas fórmulas para VB
***ESSA ABAIXO é EM CLIPPER***
Será que alguém me ajuda passando ela pra VB
nSMT := 0
WHILE .NOT. APAL->(EOF())
nSoma := 0
IF APAL->APA_CONT = [Ô]1[Ô]
nSoma := nSoma + (VAL(APAL->APA_NUM ) % 1111)
ENDIF
nSoma += VAL( APAL->PAP_PA1) % 1111
nSoma += VAL( APAL->PAP_PA2) % 1111
nSoma += VAL( APAL->PAP_PA3) % 1111
nSoma += VAL( APAL->PAP_PA4) % 1111
nSoma += VAL( APAL->PAP_PA5) % 1111
nSoma += VAL( APAL->PAP_PA6) % 1111
nSoma += VAL( APAL->PAP_PA7) % 1111
nSoma += VAL( APAL->PAP_PA8) % 1111
nSoma += VAL( APAL->PAP_PA9) % 1111
nSoma += VAL( APAL->PAP_PA10) % 1111
nSoma += VAL(APAL->PAP_QT_P1 )% 1111
nSoma += VAL(APAL->PAP_QT_P2 )% 1111
nSoma += VAL(APAL->PAP_QT_P3 )% 1111
nSoma += VAL(APAL->PAP_QT_P4 )% 1111
nSoma += VAL(APAL->PAP_QT_P5 )% 1111
nSoma += VAL(APAL->PAP_QT_P6 )% 1111
nSoma += VAL(APAL->PAP_QT_P7 )% 1111
nSoma += VAL(APAL->PAP_QT_P8 )% 1111
nSoma += VAL(APAL->PAP_QT_P9 )% 1111
nSoma += VAL(APAL->PAP_QT_P10)% 1111
nSMT += nSoma
APAL->(DBSKIP(+1))
ENDDO
nSMT := nSMT % 1111 + 1111
Citação:RCMRO escreveu:
Se ainda me lembro do Clipper, é mais ou menos assim (VB6)
PS.: Só não entendi o uso do MOD (ou %), principalmente a última mas, deve ter sua explicação para a rotina em questão...Public Sub Calcula(ByVal rs As Rescordset)
Dim nSMT As Double
Dim nSoma As Double
nSMT = 0
rs.MoveFirst()
Do While Not rs.EOF
nSoma = 0
If rs.fields() = [Ô]1[Ô] Then
nSoma = nSoma + (CDbl(rs.Fields([Ô]APA_NUM[Ô])) Mod 1111)
End If
nSoma = nSoma + (CDbl(rs.Fields([Ô]PAP_PA1[Ô])) Mod 1111)
: [ô]Põe o resto das
: [ô]somas aqui
nSMT = nSMT + nSoma
rs.MoveNext()
Loop
nSMT = nSMT MOD 1111 + 1111
End Sub
E aà RCMRO blz?
Seguinte: E ssa fórmula é um cálculo de um item que se chama Campo de Controle. pegando os dados em uma tabela.
A sintaxe é a seguinte: Conforme Ministério da Saúde/DATASUS
O [Ô]CAMPO DE CONTROLE[Ô] permite a validação das informações contidas no disquete . Está implementado no Sistema APAC do MS/DATASUS, com o seguinte cálculo:
Encontrar o resto da divisão do somatório das quantidades de procedimentos + o somatório dos códigos de procedimento + CPF do paciente + Número do APAC por 1111(mil cento e onze) .
Somar 1111(mil cento e onze) ao resto.
[txt-color=#0404B4]Dê uma olhada pra ver se é isso mesmo que a fórmula tá fazendo. Não entendo nada de Clipper.[/txt-color]
Citação:RCMRO escreveu:
Se ainda me lembro do Clipper, é mais ou menos assim (VB6)
PS.: Só não entendi o uso do MOD (ou %), principalmente a última mas, deve ter sua explicação para a rotina em questão...Public Sub Calcula(ByVal rs As Rescordset)
Dim nSMT As Double
Dim nSoma As Double
nSMT = 0
rs.MoveFirst()
Do While Not rs.EOF
nSoma = 0
If rs.fields() = [Ô]1[Ô] Then
nSoma = nSoma + (CDbl(rs.Fields([Ô]APA_NUM[Ô])) Mod 1111)
End If
nSoma = nSoma + (CDbl(rs.Fields([Ô]PAP_PA1[Ô])) Mod 1111)
: [ô]Põe o resto das
: [ô]somas aqui
nSMT = nSMT + nSoma
rs.MoveNext()
Loop
nSMT = nSMT MOD 1111 + 1111
End Sub
Nessas duas linhas onde você colocou
[txt-color=#0404B4] : [ô]Põe o resto das
: [ô]somas aqui[/txt-color]
Eu que tenho que colocar alguma coisa?
Óu é sú um informativo das linhas:
[txt-color=#B4045F]nSoma = nSoma + (CDbl(rs.Fields([Ô]PAP_PA1[Ô])) Mod 1111)[/txt-color]
e
[txt-color=#B4045F]nSMT = nSMT + nSoma[/txt-color]
Pode explicar melhor?
[txt-color=#0000f0][txt-size=2]CAMPANHA DEIXE NOSSO SITE LIMPO, FECHE SEU TÓPICO ASSIM QUE TIVER UMA RESPOSTA SATISFATÓRIA.[/txt-size][/txt-color]
Tópico encerrado , respostas não são mais permitidas