SISTEMA DE EMISSAO DE NOTAS PROMISSORIAS

PROCURADO 04/09/2014 15:56:17
#440948
Boa Tarde..
Gostaria de saber se poderiam me ajudar de que maneira poderia criar um gerador de notas promissorias.

Não tenho base de que maneira começar, se por favor alguem tiver um projeto que não venha a comprometer que poste.

agradeço-lhes

por essa ajuda

Grato
Fausto
FABRICIOWEB 04/09/2014 16:07:14
#440949

Ajuda tirada daqui pode ter um bom começo
http://www.macoratti.net/dica73.htm


Em tempos de VB.NET , ASP.NET , Java , pode parecer um tanto ultrapassado falar sobre DAO - Data Access Object - (lembra dela ?). Pois eu não me importo com isto , pois sei que nada deve ser descartado , um dia , quando você menos espera , pode precisar !!!.

Este artigo é para os que estão iniciando e tem dúvidas em como usar o Data Control e o DBGrid. Então se você esta achando este artigo muito chato ou muito simples , lembre-se que o caminho por qual você já passou outros ainda estão passando.

Neste artigo eu vou mostrar como você pode criar uma aplicação simples , muiito simples , onde vamos gerar mensalidades para um pagamento determinado. Por exemplo , você tem um escola ou academia e quer cadastrar o seu cliente e efetuar o cálculo e geração das mensalidades que para o cliente ; depois é só ir dando baixa acusando o recebimento.(Eu não implementei uma rotina especifica para isto ; logo você vai ter que fazer isto diretamente no Grid)

A interface é simples e eu vou estar usando os controles : Data Control , DBGrid e o acesso a um banco de dados Acces com DAO. A estrutura de cada tabela é a seguinte :(você pode ajustar o projeto com mais informações)

<-Tabela Clientes <-tabela Parcelas
Vamos usar dois formulários no projeto : o formulário de cadastro para os clientes e o formulário que gera as mensalidades para cada cliente. Abaixo o layout de cada um :


O formulário que gera e controla as mensalidades O formulário de cadastro de clientes
Funciona assim: O formulário de controle de mensalidades é carregado ; para cadastrar um cliente basta clicar no botão com o sinal de (+) . A seguir para gerar as mensalidades para aquele cliente informe o valor do pagamento e o número de parcelas; clique no botão -Gerar Mensalidades e , pronto ! ; você verá as mensalidades geradas no Grid. O projeto exibe as mensalidades para cada cliente , basta navegar pelos registro da tabela clientes. O código do projeto comentado segue abaixo:

Nota : Você deve vincular o controle DBGrid ao Data Control - Data2 , definindo a propriedade DataSource do DBGrid igual a Data2 na janela de propriedades do DBGrid.

1- código da seção - General Declarations do formulário ; define as variáveis de acesso aos dados.

Dim db As Database
Dim clientes As Recordset
Dim parcelas As Recordset
2- Código do evento Click do botão (+) que permite : incluir , excluir novos clientes na base de dados :

Private Sub cmdcadastrar_Click()
If MsgBox([Ô]Deseja incluir um novo Cliente ? [Ô], vbYesNo, [Ô]Buscar Cliente[Ô]) = vbYes Then
frmcadclientes.Show vbModal
Else
Exit Sub
End If
End Sub
3- Código do evento Load do formulário - frmmensalidades - define o caminho do banco de dados - Vendas.mdb - e as tabelas : clientes e parcleas. Oculta as colunas 0 , 1 do DBGrid. (estas colunas são respectivamente : CodigoParcelas e Codigo.). Há também um tratamento de erros bem básico para o caso das tabelas estarem sendo usadas por outro usuário.

Private Sub Form_Load()

On Error GoTo trata_erro

Set db = OpenDatabase(App.Path & [Ô]\vendas.mdb[Ô])
Set clientes = db.OpenRecordset([Ô]clientes[Ô])
Set parcelas = db.OpenRecordset([Ô]parcelas[Ô])

Data1.DatabaseName = App.Path & [Ô]\vendas.mdb[Ô]
Data1.RecordSource = [Ô]clientes[Ô]
Data2.DatabaseName = App.Path & [Ô]\vendas.mdb[Ô]
Data2.RecordSource = [Ô]parcelas[Ô]

DBGrid1.Columns(0).Visible = False
DBGrid1.Columns(1).Visible = False
DBGrid1.Columns(4).Visible = True

Exit Sub

trata_erro:
If Err.Number = 3261 Then
MsgBox [Ô] Erro : [Ô] & Err.Number & [Ô] : a tabela esta bloqueada . Verifique ! [Ô], vbCritical, [Ô]Dados bloqueados[Ô]
Else
MsgBox Err.Number & [Ô] - [Ô] & Err.Description
End If
End Sub

End Sub
4- O código do evento Click do botão - Gera Mensalidades - :

Private Sub cmdgeramensalidades_Click()
Dim mes As Integer
Dim ano As Integer
Dim data As String

mes = Format(Now, [Ô]mm[Ô])
ano = Format(Now, [Ô]yy[Ô])

For i = 1 To Val(txtnumeroparcelas.Text)
mes = mes + 1
If mes > 12 Then
mes = 1
ano = ano + 1
End If
dia1 = Format(Now, [Ô]dd[Ô])
dia = Verifica_dia(dia1, mes)
data = dia & [Ô]/[Ô] & Format(mes, [Ô]00[Ô]) & [Ô]/[Ô] & Format(ano, [Ô]00[Ô])
parcela = CCur(txtvalor.Text) / Val(txtnumeroparcelas.Text)
Data2.Recordset.AddNew
Data2.Recordset.Fields(1) = CLng(txtcodigo.Text)
Data2.Recordset.Fields(2) = Format(CDate(data), [Ô]dd/mm/yy[Ô])
Data2.Recordset.Fields(3) = CCur(parcela)
Data2.Recordset.Fields(4) = False
Data2.Recordset.Update
Next
End Sub
- Eu obtenho o mes e ano atual e a seguir inicio um laço for/next para o número de parcelas
- acrescento um ao mês e verifico se o mês é igual a 12 se for então passo p/ o ano seguinte

- a função verifica_dia ajusta o valor correto do dia quando o mesmo for igual a 31.

- a data é formatada e a parcela calculada (eu não me preocupei com arredondamentos).

- depois é só incluir os dados no recordset

- eles serão vistos no grid de imediato

5- O código abaixo é muito importante , ele é posto no evento Reposition do Data Control - Data1 - que esta associado a tabela clientes. Toda vez que mudarmos de registro na tabela clientes , estamos mudando a fonte de dados associada ao Data Control - Data2 - usando a variável txtcodigo . Como o Data2 esta associado ao DBGrid1 , o Grid exibirá os dados desta seleção.

Private Sub Data1_Reposition()
If txtcodigo.Text <> [Ô][Ô] Then
Data2.RecordSource = [Ô]Select * from parcelas where codigo= [Ô] & CLng(txtcodigo.Text)
Data2.Refresh
End If
End Sub
6- Abaixo temos a rotina associada ao evento KeyPress do formulário que permite a simulação da tecla TAB quando usuário teclar ENTER . Basta incluí-la no formulário e definir a propriedade KeyPreview do mesmo como sendo igual a True ; fazendo assim funciona para todos os controles TextBox do formulário.

Private Sub Form_KeyPress(KeyAscii As Integer)

[ô]Esse código permite a mudança de quadro de texto através do Enter
If KeyAscii = 13 Then
[ô]Se o tipo do controle ativo for TextBox
If TypeOf Screen.ActiveControl Is TextBox Then
[ô]Simula o pressionamento da tecla TAB
SendKeys [Ô]{tab}[Ô]
[ô]A linha a seguir evita ouvir um bip
KeyAscii = 0
End If
End If
End Sub
7- Finalmente a função - Verifica_dia . Ela verifica o dia do mês para cada mês , se o dia for igual a 31 , ela atribui o valor correto para os meses seguintes das mensalidades .(O mês de fevereiro talvez requere-se um tratamento mais sofisticado para o caso de ano bissexto ).Lembre-se que as funções sempre retornam um valor. No caso eu estou retornando o dia do mês já ajustado.

Nota: No VB 6 o primeiro índice de um array é igual a zero , assim : diasDoMes(0) é igual a 31 , etc.. é por isto que eu subtraio 1 do mês atual.

Public Function Verifica_dia(dia, mes)
Dim diasDoMes As Variant

dia = Val(dia)

diasDoMes = Array(31, 28, 30, 30, 31, 30, 31, 30, 30, 31, 30, 31)

If dia = 31 Then
Verifica_dia = diasDoMes(mes - 1)
Else
Verifica_dia = dia
End If

End Function
Executando o projeto terermos as seguintes telas para a geração de mensalidades para um cliente já cadastrado:


Como você pode ver , usando uma interface simples e alguns controles vinculados básicos podemos fazer em minutos um sisteminha para resolver nosso problema...

Até mais... (este projeto está no super cd visual basic - 2003 )
FILMAN 04/09/2014 16:57:45
#440954
Existe um outro tópico aberto referente a esse assunto, por favor exclua-o.

Obrigado
PROCURADO 04/09/2014 17:10:48
#440955
Caro Amigo FILMAN

Se já possui um tópico a esse respeito poderia me mandar o link,

Grato

Fausto
FABRICIOWEB 05/09/2014 10:03:32
#440977
kkkkkkkkkkkkkkkkkkkk caro amigo procurado vc criou 2 topicos iguais delete um
Tópico encerrado , respostas não são mais permitidas