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

(Resolvido) mostrar determinada linha de um formulário continuo


leonardo_r_mota

Pergunta

Posts Recomendados

  • 0

Ola Amigos, obrigado pela ajuda!

Tentei esse código mas não deu certo.

Não sei se fiz errado...

Meu caso é o seguinte, tenho um formulario de pedidos onde tenho um sub-formulário de parcelas, onde gera as parcelas automaticamente, e tenho cx de texto onde tenho vencimento A, valor A, venciemento B, valor B e assim por diante até o F (6x), preciso q paraceça nestas caixas de texto, sendo q no meu sub formulário ele gera uma data em cada linha e um valor q é o total do pedido dividido.

Sera q pode me ajudar?

Link para o comentário
Compartilhar em outros sites

  • 0

Ta meio complexo entender assim sem ver, mas pelo que percebi você tem uma aplicação que faz parcelamento de vencimentos. Você insere um valor e a quantidade de parcelas e ele gera automaticamente?

Daqui do meu serviço não acesso nenhum site pra upload, então tenta assim, cria um novo arquivo access e executa essa consulta:

CREATE TABLE parcelamentos
(
    id_cliente int,
    id_compra int,
    n_parcela int,
    venc_parcela DateTime,
    valor_parcela money,
    pgto_parcela DateTime,
    valor_pgto money,
    PRIMARY KEY(id_compra, n_parcela)
);
Agora crie um form chamado main e nele insira uma caixa de texto chamada txbCliente, outra chamada txbValor, outra chamada txbCompra, uma caixa de combinação chamada cbbParcelas com a Origem da Linha assim: 1;2;3;4;5;6 e cria também um botão chamado btnGerar cria uma consulta chamada consParcelamento
SELECT Pcm.n_parcela AS Parcela, Pcm.venc_parcela AS Vencimento, Pcm.valor_parcela AS Valor, Pcm.pgto_parcela AS Pagamento, Pcm.valor_pgto AS [Valor Pagamento]
FROM parcelamentos AS Pcm
WHERE Pcm.id_cliente = Formulários!main!txbCliente.Valor
AND Pcm.id_compra = Formulários!main!txbCompra.Valor
ORDER BY Pcm.venc_parcela;
Cria um formulário baseado nessa consulta e da um nome pra ela lá, daí no form main adiciona ela como sub-consulta, coloca o nome de scPcm Cria um módulo com a função:
Function getVencimento(prazo As Integer) As Date
    Dim dia As Date
    dia = Now() + prazo
    
    If Weekday(dia) = 7 Then
        dia = dia + 2
    ElseIf Weekday(dia) = 1 Then
        dia = dia + 1
    End If
        
    getVencimento = Format(dia, "dd/mm/yyyy")
End Function
ela retorna o dia do vencimento, se for sábado ou domingo ela joga automaticamente para a próxima segunda Depois coloca no botão gerar esse código:
Private Sub btnGerar_Click()
On Error GoTo Erro
    Dim db As Database
    Dim sqlstr As String
    Dim parcela As String
    Dim numPcl As Integer
    
    Set db = CurrentDb()
    
    parcela = Replace(CStr(Round(CDbl(txbValor) / CInt(cbbParcelas), 2)), ",", ".")
    
    For numPcl = CInt(cbbParcelas) To 1 Step -1
        sqlstr = "INSERT INTO parcelamentos(id_cliente, id_compra, n_parcela, " _
            & "venc_parcela, valor_parcela) VALUES( " & txbCliente & ", " _
            & txbCompra & ", " & numPcl& ", #" & getVencimento(30 * numPcl) _
            & "#, " & parcela & ")"
        db.Execute (sqlstr)
    Next numPcl
    
    scPcm.Requery
    
    db.Close
    Set db = Nothing

Sair:
    Exit Sub
    
Erro:
    MsgBox Err.Description, vbCritical
    Resume Sair
End Sub

Acho que isso pode te ajudar

Link para o comentário
Compartilhar em outros sites

  • 0

Upei tb um print screen da minha tela pra você ter uma idéia melhor do que preciso.

mais uma vez agradeço!

http://www.4shared.com/photo/bJSNbv6i/Figura1.html

Sera q nem por e-mail? ou MSN?

acho q é bem simples, mas não manjo muito..rsrs

sou Designer Grafico na verdade..rsrs

Link para o comentário
Compartilhar em outros sites

  • 0

Meu amigo me mandou a foto, e desculpe me meter, mas achei estranho seu formulário

A lógica básica é

Dados do cliente

Dados da compra

subtotal

desconto

juros

total

forma de pagamento

<tabela com vencimentos, valores>

esse lance de vencimento A, B, C,... além de feio para o sistema fica amarrado a isso, você fazendo algo mais dinâmico você tem um sistema melhor

e deve ser algo relacionado a Index(1), Index(2) ou coisa do tipo. Vou ter que ver a noite

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz um teste aqui e funciona assim

Dim rs as Recordset
set rs = seuSubFormulario.Form.Recordset

com isso você captura a tabela toda dentro de uma recordset, depois você trabalha com ela, se movendo entre os registros

dando rs.MoveFirst você acessa a primeira linha, depois da rs.MoveNext e vai pra próxima até o fim

e pra ler o dado você coloca rs("nomeDoCampo") ou rs(n) onde n = número da coluna

Link para o comentário
Compartilhar em outros sites

  • 0

Não consigo encaixar dentro do seu aplicativo porque não conheço a lógica dele e nem as variaveis, mas o funcioamento é assim:

Dim rs As Recordset                             'Cria um recordset
Set rs = seuSubFormulario.Form.Recordset        'Captura a tabela do sub-formulário para  recordset

rs.MoveFirst                                    'Move para a primeira linha do recordset
Do While Not rs.EOF                             'Inicia um laço de repetição que é executado até o fim do recordset
                                                'EOF = End Of File
    MsgBox rs(1)                                'Mensagem com a coluna 1 da recordset
    MsgBox rs(2)                                'Mensagem com a coluna 2 da recordset
    rs.MoveNext                                 'Move para a próxima linha da recordset
    
Loop

rs.Close                                        'Fecha a recordset
Set rs = Nothing                                'Limpa os dados da memória

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Iceguy!

Segue o link do meu Bd, mas não da risada não cara...rsrs

Deve ter varios erros de construção, mas ele é um Mãe pra mim..rsrs ...faço todo o controle da minha gráfica por ele.

Contas a Pagar a Receber, Orçamentos, Pedidos, Ordens de Serviço e etc...

Veja se pode me ajudar com outra questão, além daquela das Parcelas de q estava me ajudando tem uma outra q queria a sua ajuda:

Tenho um BD(access) onde nele tenho um formulario de clientes, ordens de serviço e pedido, e etc todos vinculados pelo cliente.

Preciso de tipo uma checkbox ou outra função no meu formulario de pedidos onde ela relacione as ordens de serviço desse determinado cliente e um tipo de botão onde eu selecione os serviços desejados e insira os mesmos no meu Pedido, hj eu tenho q ficar copiando e colando.

inclusive já postei isso em vários outros foruns de Access

Acho q com o BD você consegue entender melhor!

Só q ele esta sem Dados nenhum, tem q cadastrar

segue o link

http://www.sendspace.com/file/1cgipm

Desde já Agradeço!

Link para o comentário
Compartilhar em outros sites

  • 0

:blush: é gambiarra em... ahauahuahuaa... Mas vamos lá

Vá no editor de VBA (Alt+F11), em Ferramentas>Referêcias e marque Microsoft DAO 3.6 Object Library

Depois no código do Form_FRM_PEDIDO DE VENDAS insira a função:

Public Function getContrato() As String
    getContrato = Me.CódigoPedidodevendas
End Function
No código do Form_Prestacoes inserir a função:
Private Sub transferirDados()
On Error GoTo Erro
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim sqlstr As String
    Dim ctto As String
    
    ctto = [Form_FRM_PEDIDO DE VENDAS].getContrato
    
    Set db = CurrentDb()
    sqlstr = "SELECT TOP 6 Pt.Contrato, Pt.Parcela, Pt.Valor, Pt.Vencimento FROM Prestacoes AS Pt" _
        & " WHERE Pt.Contrato = " & ctto
    Set rs = db.OpenRecordset(sqlstr)
    
    [Form_FRM_PEDIDO DE VENDAS].setDados rs
    
    rs.Close
    db.Close
    
Sair:
    Set rs = Nothing
    Set db = Nothing
    Exit Sub
    
Erro:
    MsgBox Err.Description, vbCritical
    Resume Sair
    
End Sub
Voltando no código do Form_FRM_PEDIDO DE VENDAS, insira este código:
Public Sub setDados(rs As DAO.Recordset)
If rs.RecordCount > 0 Then
    rs.MoveFirst
    If Not rs.EOF Then
        Vencimento_A = Format(rs("Vencimento"), "dd/mm/yyyy")
        Valor_A = Round(rs("Valor"), 2)
        rs.MoveNext
    End If
    
    If Not rs.EOF Then
        Vencimento_B = Format(rs("Vencimento"), "dd/mm/yyyy")
        Valor_B = Round(rs("Valor"), 2)
        rs.MoveNext
    Else
        Vencimento_B = Null
        Valor_B = Null
    End If
    
    If Not rs.EOF Then
        Vencimento_C = Format(rs("Vencimento"), "dd/mm/yyyy")
        Valor_C = Round(rs("Valor"), 2)
        rs.MoveNext
    Else
        Vencimento_C = Null
        Valor_C = Null
    End If
    
    If Not rs.EOF Then
        Vencimento_D = Format(rs("Vencimento"), "dd/mm/yyyy")
        Valor_D = Round(rs("Valor"), 2)
        rs.MoveNext
    Else
        Vencimento_D = Null
        Valor_D = Null
    End If
    
    If Not rs.EOF Then
        Vencimento_E = Format(rs("Vencimento"), "dd/mm/yyyy")
        Valor_E = Round(rs("Valor"), 2)
        rs.MoveNext
    Else
        Vencimento_E = Null
        Valor_E = Null
    End If
    
    If Not rs.EOF Then
        Vencimento_F = Format(rs("Vencimento"), "dd/mm/yyyy")
        Valor_F = Round(rs("Valor"), 2)
        rs.MoveNext
    Else
        Vencimento_F = Null
        Valor_F = Null
    End If
End If

Set rs = Nothing

End Sub
e você chama isso colocando no código do botão do Form_Prestacoes:
Private Sub Comando12_Click()
Dim i, strPrestacoes As Integer
Dim strValor As Currency
Dim strData As Date

strPrestacoes = [Forms]![FRM_PEDIDO DE VENDAS]![Meses]
strValor = [Forms]![FRM_PEDIDO DE VENDAS]![Valor Total do Pedido] / strPrestacoes
strData = [Forms]![FRM_PEDIDO DE VENDAS]![Data]

If PARCELA = "" Or IsNull(PARCELA) Or PARCELA = "0" Then
For i = 1 To strPrestacoes
    DoCmd.GoToRecord , , acNewRec
    Me.PARCELA = i
    Me.Valor = strValor
    Me.Vencimento = DateAdd("m", i + 0, strData)
    Next
    
Form_Prestacoes.AllowAdditions = False
transferirDados
Form_Prestacoes.AllowAdditions = True

Else
MsgBox "Já foram calculadas as parcelas deste pedido!" _
& " Para calcular novamente tem que apagar as atuais.", vbCritical, "Erro"
End If

End Sub

Tá meio corrido agora, mas foi que deu pra fazer ^_^

E tipo, tá massa seu sistema, socado de gambiarra mas ta massa hehehe

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Amigo Iceguy!!!

KKKKKKK....falei q você iria assustar...rsrsrs :blush:

Que bom q gostou do meu sisteminha....como falei ele é uma mãe pra mim aki na gráfica...

Se quizer, ele pode até ficar de exemplo de funcionamento pra uma grafica de pequeno porte.... Claro q corrigindo todas essas gambiarras q fiz...rsrsrs

não manjo nada de programação, fiz tudo isso ai na pura raça mesmo...rsrs

Mas ta funfando!!!!...rsrs

Obrigado pela ajuda cara....ta dando certo, a única coisa q acontece é q quando eu clico no botão calcular Prestações aparece a mensagem de alerta "A variável do objeto ou a variável do bloco "With" não foi definida.

porque será?!

De resto ta tudo beleza!!! :rolleyes:

Deixa eu te perguntar outra coisa? :blush:

...você conseguiu entender o outro caso, sobre inserir os dados da Tabela de Ordens de Serviço?

Mais uma vez....Brigadão mano! :D

Falar com profissional é outra coisa...rsrs :rolleyes:

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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...