USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Printer - A Saga continua
Nortuno
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/05/2004 18:01 hs            
A ideia é a seguinte: tenho uma tabela chamada CLIENTE e outra chamada PARCELAS.
Toda vez que cadastramos um cliente é automaticamente criado 06 (seis) registros na tabela PARCELAS, sendo 01 matricula e 05 mensalidades.

O que eu quero?
Queria que fosse impresso assim(unir as duas tabelas):

COD   NOME    MATRICULA   STATUS    1º PGTO    STATUS   2º PGTO   STATUS
0001  JOSE     10/02/04       PAGO        10/03/04    PAGO
0320  PEDRO   10/02/04        PAGO       15/03/04    PAGO
0420  JOAO     11/02/04        PAGO       17/03/04    PAGO    16/04/04    PAGO

e assim sucessivamente...
sendo que o codigo e o nome do cliente vem da tabela CLIENTE e as datas dos pagamentos vem da tabela PARCELAS

Ai eu fiz esse codigo:

    Dim S_Codigo As String
    Dim S_NOME As String
    Dim S_PAGAMENTO As String
    Dim S_Status As String

Dim QTDE As Integer
Dim PGTO As String, Status As String

If Combo1.Text = "" Or Combo2.Text = "" Then
    MsgBox "DIAS e/ou HORARIO INEXISTENTE!" & vbCrLf & "Verifique e digite novamente.", vbInformation, "Aviso do Sistema"
    Exit Sub
End If

ABRIR_BD_com_Data Me.Data1
Data1.RecordSource = "SELECT CLIENTE.CODIGO, CLIENTE.NOME, CLIENTE.MODULO, PARCELAS.* " & _
                     "FROM CLIENTE INNER JOIN PARCELAS ON CLIENTE.CODIGO = PARCELAS.CODIGO_ALUNO " & _
                     "WHERE (DIAS = '" & Combo1.Text & "') and (HORARIO = '" & Combo2.Text & "') and (MODULO = '" & cboModulo.Text & "') " & _
                     "ORDER BY CLIENTE.CODIGO,  PARCELAS.MES"
Data1.Refresh


With Data1.Recordset
  
    If .BOF And .EOF Then
        MsgBox "Não existe esse Módulo para esse horário!", , "Aviso do Sistema"
        Exit Sub
    End If
    
Printer.FontName = "Arial"
Printer.FontSize = 8
    
    .MoveMax
    .MoveMin
    Printer.Print "CÓD."; Tab(7); "NOME"; Tab(55); "1º PGTO"; Tab(70); "STATUS"; Tab(85); "2º PAGTO"; Tab(100); "STATUS"
    
    QTDE = .RecordCount / 6

S_Codigo = Data1.Recordset.Fields("CODIGO")
S_NOME = Data1.Recordset.Fields("NOME")
S_PAGAMENTO = Data1.Recordset.Fields("PAGAMENTO")
S_Status = Data1.Recordset.Fields("STATUS")

For i = 1 To QTDE
        
    Printer.CurrentX = 80
    Printer.Print Tab(1); S_Codigo;
    Printer.Print Tab(7); S_NOME;
    Printer.Print Tab(55); IIf(IsNull(S_PAGAMENTO), "", S_PAGAMENTO);
    Printer.Print Tab(70); IIf(S_Status, "Pago", "")

    S_Codigo = Data1.Recordset.Fields("CODIGO")
    S_NOME = Data1.Recordset.Fields("NOME")
    S_PAGAMENTO = IIf(IsNull(Data1.Recordset.Fields("PAGAMENTO")), "", Data1.Recordset.Fields("PAGAMENTO"))
    S_Status = Data1.Recordset.Fields("STATUS")
    
          .MoveNext
    Next
End With
Printer.EndDoc


PROBLEMA QUE ESTÁ ACONTECENDO:

inves de ele imprimir assim:
COD   NOME    MATRICULA   STATUS    1º PGTO    STATUS   2º PGTO   STATUS
0001  JOSE     10/02/04       PAGO        10/03/04    PAGO
0320  PEDRO   10/02/04        PAGO       15/03/04    PAGO

ele tá imprimindo assim:
COD   NOME    MATRICULA   STATUS    1º PGTO    STATUS   2º PGTO   STATUS
0001  JOSE     10/02/04       PAGO        
0001  JOSE     10/03/04       PAGO
0001  JOSE    
0001  JOSE    
0001  JOSE    
0001  JOSE    
0320  PEDRO   10/02/04        PAGO      
0320  PEDRO   15/03/04        PAGO
0320  PEDRO  
0320  PEDRO  
0320  PEDRO  
0320  PEDRO  

ou seja, não está ficando num só linha os pagamentos daquele aluno...
O aluno tendo 06 pagamentos (01 matricula + 05 parcelas) ele vai imprimir 06 linhas (uma para cada pagamento) mesmo que o pagamento ainda não tenha sido efetuado ele imprimirá uma linha.

O que devo fazer?

Nightcrawler
(nortuno do filme do X-Men II)
   
Nortuno
SÃO PAULO
SP - BRASIL
Postada em 30/05/2004 09:07 hs            
Help-ME

Nightcrawler
(nortuno do filme do X-Men II)
     
HadesLgc
PINDORAMA
SP - BRASIL
Postada em 30/05/2004 13:33 hs            
crie a tabela clientes  assim  parcela1 parcela2 parcela3, etc..
e ao inves de voce criar um novo registro pra cada parcela paga, voce apenas edita o rgistro existente e pegue a parcela paga...

Um trabalho se justifica na medida em que ganha experiências e esforços permitindo que outros comecem por onde terminamos, pois a vida é curta demais para que possamos pesquisar e analizar a grande quantidade de informações dispersas em muitas fontes que não podemos consultar Emoções

     
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
ENUNCIADA !
Postada em 01/06/2004 13:09 hs         
veja se consegue entender raciocinio e adapta-lo a sua necessidade
 

dim s_codigo as string

dim s_nome as string

dim s_pagamento(3) as string

dim s_status(3) as string

dim ant_cod as long

dim qtde as integer

dim pgto as string, status as string

 

if text1 = "" or text2 = "" then

    msgbox "dias e/ou horario inexistente!" & vbcrlf _

    & "verifique e digite novamente.", vbinformation, "aviso do sistema"

    exit sub

end if

 

data1.databasename = app.path & "mensal.mdb"

data1.recordsource = "select clientes.codigo, clientes.nome, clientes.modulo, parcelas.data_pgto," & _

                     "parcelas.status,parcelas.mes,parcelas.dias,parcelas.horario " & _

                     "from clientes inner join parcelas on clientes.codigo = parcelas.codigo_aluno " & _

                     "where (parcelas.dias = " & cint(text1) & ") and (parcelas.horario = #" & format$(text2, "hh:mm") & "#)" _

                     & "and (modulo = '" & text3 & "') " & _

                     "order by clientes.codigo,  parcelas.data_pgto"

data1.refresh

 

me.print tab(0)

me.print tab(0)

me.print tab(0)

me.fontname = "arial"

me.fontsize = 8

    

    me.print "cód."; tab(10); "nome"; tab(55); "1º pgto"; tab(70); "status"; tab(85); "2º pagto" _

    ; tab(100); "status"; tab(115); "3° pagto"; tab(130); "status"

    

with data1.recordset

    .moveMax

    .moveMin

 

    if .bof and .eof then

        msgbox "não existe esse módulo para esse horário!", , "aviso do sistema"

        exit sub

    end if

    

novoaluno:

    i = 0

    erase s_status

    erase s_pagamento

    s_codigo = data1.recordset.fields("codigo")

    s_nome = data1.recordset.fields("nome")

    s_pagamento(i) = .fields("data_pgto")

    s_status(i) = .fields("status")

    .movenext

    i = i + 1

    do while .fields("codigo") = s_codigo

        s_pagamento(i) = .fields("data_pgto")

        s_status(i) = .fields("status")

        i = i + 1

        .movenext

        if .eof then exit do

    loop

 

    me.currentx = 80

    me.print tab(1); s_codigo; tab(7); s_nome; tab(55); s_pagamento(0) _

    ; tab(70); s_status(0); tab(85); s_pagamento(1); tab(100); s_status(1) _

    ; tab(115); s_pagamento(2); tab(130); s_status(2)

   

    if not .eof then goto novoaluno

   

end with

   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página