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

3 Dúvidas sobre VB6


Ewerton Melo

Pergunta

Boa noite a todos.

Gostaria de esclarecer algumas dúvidas, caso alguém puder me ajudar...

Eu sou iniciante em VB e estou criando algus programinhas básicos, porém, eu decidi deixar essa programação um pouco mais complexa e colocar alguns itens a mais no meu software...

1º Gostaria de colocar um formulário de E-Mail, onde a pessoa vai colocar Nome do Remetente, E-Mail do Remetente, Assunto e o Texto, esse e-mail será enviado automaticamente para o meu e-mail particular, já vi uns tutoriais que o Macoratti disponibiliza, porém, não estou entendendo...

2º Eu já consigo realizar a conexão com o BD do Access a partir do Microsoft ADO Data Control 6.0 (OLEDB) e até consigo visualizar as informações do BD que estão no Access, ou seja, eu primeiro coloco as informações no Access e depois eu visualizo no Formulário do VB, porém, eu gostaria de "Escrever essas informações no Formulário do VB e a partir de um botão Salvar incluir essas informações no BD do Access", assim como usar um Botão Excluir e Alterar para essa finalidade.

3º A partir de uma video aula, eu aprendi a criar uma calculadora simples, com + - * / , porém, para esse programinha que estou criando é imprescindível a porcentagem, ela eu usarei da seguinte forma: A Pessoa vai ter um campo "Valor" onde será colocado o valor em R$ um Campo "Data" onde será colocado a Data da Dívida e um Campo "%" que num entendimento simples seria a porcentagem de juros. De modo geral o programa tem que fazer um calculo de calendário somando a quantidade de dias do valor em aberto e aplicar a por centagm de juros em cima...

Essa terceira pode parecer um pouco complexo, mais eu realmente preciso aprender isso senão eu me mato, estou a mais de um mês tentando achar uma saída e nada...

Por favor galera, me ajudem nesses 3 itens se possível!!!

Desde já agradeço...

Boa noite a todos!!!

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Bom... as 2 primeiras eu entendi, essa terceira vo me complica um pouco... mas tudo bem :D

vamos la... no 1- você pode utilizar o complemento py.sendmail

Da uma olhada nesse tópico meu referente a sua duvida... a estrutura é a mesmo

http://scriptbrasil.com.br/forum/index.php?showtopic=149542

2-Quanto ao banco de dados, eu tambem postei no forum... da uma olhada nesse tópico...

http://scriptbrasil.com.br/forum/index.php?showtopic=153099

3- Nesse 3 eu n saberia te dizer porque n sei fazer contas com datas....

Qualquer duvida em relação aos itens 1 e 2 me add no MSN ou fala poraqui mesmo q eu te ajudo!!

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Io Matheus...

Private Sub cmdEnviar_Click()
    Set k = CreateObject("Py.SendMail")
    
    k.SMTPServer = txtServidor.Text
    
    k.Recipient = txtNomePara.Text
    k.To = txtEmailPara.Text
    
    k.Sender = txtNomeDe.Text
    k.From = txtEmailDe.Text
    
    k.Cc = txtCc.Text
    k.Bcc = txtBcc.Text
    k.Subject = txtAssunto.Text
    k.Body = txtMensagem.Text
    k.PureText = chkTextoPuro.Value
    
    'Em caso de autenticação
    k.User = "teste+graymalkinsoftware.net"
    k.Password = "1234"
    
    For i = 0 To lstAnexos.ListCount - 1
        k.AttachFile lstAnexos.List(i)
    Next i
    
    For i = 0 To lstImagens.ListCount - 1
        k.InsertImage lstImagens.List(i)
    Next i
       
    retorno = k.Send()
    lblRetorno = "Retorno: " & retorno
    Debug.Print retorno
End Sub
Só pra entender, eu baixei esse programa, Py.SendMail e ele realmente vem com um exemplo de formulário de e-mail, porém, lá ele pede pra escrever desde o servidor SMTP, desta forma eu poderia alterar diretamente no código fonte o nome do servidor, por exemplo:
k.SMTPServer = txtServidor.Text
 k.SMTPServer = smtp.são.terra.com.br

De modo geral muita coisa que tem no código fonte pra mim não serve, abaixo eu estou enviando uma imagem de como é no programa...

emailz.jpg

CORREÇÃO:

smpt.são.terra.com.br

Desisto...

De alguma forma aqui no forum ele está colocando o S A O como S Â O... rssrsrs

Simplificando tudo, nem acessa a digitar o e-mail eu gostaria que os usuários tivessem, seria apenas eles digitarem a mensagem, colocarem o e-mail deles e enviar que eu receberia...

Link para o comentário
Compartilhar em outros sites

  • 0

pode estar ocorrendo o seguinte, o Terra por ser um e-mail mais reforçado, pode ter um sistema de proteção(para enviar) desta forma, eu sugiro e testei aqui, yahoo e gmail enviam tranquilamente! da uma testada e qualque coisa so fala :D

O que não servir no código use como "" ou Empty...

Vo te postar um exemplo que eu utilizo


Set k = CreateObject("Py.SendMail")

k.SMTPServer = "smtp.mail.yahoo.com.br"
k.Recipient = "Matheus"
k.To = "matheus.rubens@hotmail.com"

k.Sender = "Matheus2"
k.From = "matheus.rubens11@yahoo.com" ' nem uso esse e-mail kkk

k.Cc = ""
k.Bcc = ""
k.Subject = "Teste"
k.Body = text1.text




'Em caso de autenticação
k.User = "matheus.rubens11@yahoo.com"
k.Password = "..minhasenha.."

retorno = k.send()


lblRetorno = "Retorno: " & retorno
Debug.Print retorno
MsgBox "Teste realizado com sucesso!", vbInformation, "Enviado!"
End
On Error GoTo Erro
Erro:
MsgBox "Não foi possível concluir a operação!", vbCritical, "Erro!"
End If
[/codebox]

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

  • 0

Valeu Matheus...

Graças a você eu consegui incluir esse formulário sem erro...

Só noto uma coisa, ele está mostrando a mensagem de Teste realizado com sucesso! porém, na minha caixa de entrada do Yahoo não chegou, vou esperar até mais tarde e vou testando no decorrer do dia pra ver se é só uma demora nos servidores pra receber a mensagem...

A Primeira dúvida foi matada, agora vamos a segunda...

Vou só enviar os prints do formulário e da Tabela pra você entender mais ou menos como eu quero que fique!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Ta ai a imagem...

salvardepartamento.gif

Shot at 2010-10-02

De modo geral, é simples, a primeira janela vai possibilitar ao usuário escrever o nome do departamento e dos sub-departamentos, ele clicará em Incluir e abrirá a segunda tela, na segunda tela ele pegará os valores digitados na Primeira tela a partir do botão Visualizar Departamentos e os valores da primeira tela aparecerão...

Ai vem a minha primeira dúvida, os campos da segunda tela estão Enabled = False, pra ninguém escrever nada, na caixa maior, eu queria que as informações de sub-departamentos fossem listadas, levando em consideração que o campo é Texto. E por fim, quando a pessoa listar as informações ao clicar no Botão "Salvar Departamento" o departamento será enviado para a tabela do Access.

Link para o comentário
Compartilhar em outros sites

  • 0

em vez do enabled, você pode usar o locked...

Bom vamos la... quando ela clicar em incluir, ele ainda não registrará no banco de dados, só exibirá no segundo formulario?

e no segundo formulário... no primeiro campo, creio q seja text, ele colocara o nome do departamento e no list de baixo os sub departamentos?

---

txt não da para se listar, sugiro a você, já que ninguém poderá alterar mesmo, colocar um list no lugar do text, no form2

Confirma a estrutura pra mim :D

Abraços

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

  • 0

Oi Matheus, nesse mio tempo eu fiz uma breve modificada, a segunda tela pode desconsiderar, as informações que o usuário digitar na Tela Incluir Departamento será salvo diretamente no BD...

Eu estava lendo o tópico que vocÊ POStou e segui conforme aquela solução que você postou...

Private Sub cmdInserir_Click()
ExecutaComando ("insert into Alunos (Nome,Idade) values ('" & txtNome.Text & "','" & txtIdade.Text & "')")
End Sub
mdlVariaveis
Global g_mdb_Conex As New ADODB.Connection
Global f_cla_ConexaoMDB As New cls_ConexaoMDB

Public Function ExecutaComando(ByVal strComando As String) As Boolean
   On Error GoTo err

   ExecutaComando = False
   
   g_mdb_Conex.Execute strComando

   ExecutaComando = True

   Exit Function

err:
   MsgBox "erro para inserir"
End Function
Class
Public Function ConexMDB(ByVal l_str_CaminhoMDB As String)
    On Error GoTo Erro:
    
    ConexMDB = True
        
    If g_mdb_Conex.State = 1 Then g_mdb_Conex.Close
    g_mdb_Conex.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & l_str_CaminhoMDB & ";jet oledb:Database password=123321"
        
    Exit Function

Erro:
    ConexMDB = False
    MsgBox "ERROR DE ACESSO COM MDB", vbCritical
    End
End Function
Porém, ao executar o programa, ele aparece a mensagem de "Erro para Inserir", conforme no código, talves o erro esteja no módulo, mais como resolve-lo???? No meu caso o botão salvar seria assim:
Private Sub cmdIncluirDep_Click()
ExecutaComando ("insert into Alunos (Departamento,Sub-Departamento1,Sub-Departamento2,Sub-Departamento3,Sub-Departamento4,Sub-Departamento5) values ('" & txtNomeDep.Text & "','" & txtNomeSubDep1.Text & "','" & txtNomeSubDep2.Text & "','" & txtNomeSubDep3.Text & "','" & txtNomeSubDep4.Text & "','" & txtNomeSubDep5.Text & "')")
End Sub
Só uma dúvida, pois talvez eu tenha matado o problema aqui... Conforme o código:
Private Sub cmdIncluirDep_Click()
ExecutaComando ("insert into Alunos (Departamento,Sub-Departamento1,Sub-Departamento2,Sub-Departamento3,Sub-Departamento4,Sub-Departamento5) values ('" & txtNomeDep.Text & "','" & txtNomeSubDep1.Text & "','" & txtNomeSubDep2.Text & "','" & txtNomeSubDep3.Text & "','" & txtNomeSubDep4.Text & "','" & txtNomeSubDep5.Text & "')")
End Sub

"insert into Alunos" o Alunos seria o nome da Tabela ou do BD do Access???

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fui alanizar depois aquele tópico e achei um pouco confuso, então vou postar uma forma simples pra vc!

Desconsidere seu modulo,class então exclui, e o código do insert também!

No seu módulo coloque isso

Global cn As ADODB.Connection
Global rs As ADODB.Recordset
Public Function abrebanco()
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\NOME.mdb;jet oledb:database password=SENHA"
End Function
Public Function fechabanco()
cn.Close
End Function
E no seu botão:
if txt1.text=empty or txt2.text=empty or txt3.text=empty or txt4.text=empty or txt5.text=empty or txt6.text=empty then
msgbox "Preencha todos campos antes de seguir!",vbinformation,"Campo em branco"
else
abrebanco 'função do módulo que criamos
inserir = "INSERT INTO nome_da_tabela(Departamento,Sub1,Sub2,Sub3,Sub4,Sub5)" & "Values('" & txt1.Text & "','" & txt2.Text & "','" & txt3.Text & "','" & txt4.Text & "','" & txt5.Text & "','" & txt6.Text & "')"
cn.execute inserir
fechabanco
end if

alunos é o nome da tabela :D

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

  • 0

Posto sim, sem problemas :D

No caso do consultar, há uma coisa que é importantissimo prestar atenção, sempre quando for numero, n use apostrofo aspas '" & .. & "', somente aspas " & .. & ", e de texto,memorando,qualquer outra coisa, '" & & "'

Vamos ao código...

abrebanco
Set rsdados = New Recordset
rsdados.Open "SELECT * FROM pessoal WHERE Codigo=" & txtConsulta.Text & "", cn ' traduzino, selecione tudo de pessoal(nome da sua tabela) onde Codigo(tabela) é igual a txtconsulta.text, cn(onde ocorre a conexao)
'dai é simples, só colocando assim:
txt1.text = rsdados("Sub1")
txt2.text = rsdados("Sub2")
fechabanco
Excluir
abrebanco
excluir = "delete * from pessoal where codigo=" & txtconsulta.text & "" ' relembrando a regra de q se for texto '" & & "'(com apostrofo)
cn.execute excluir
fechabanco
Atualizar, na minha opinião, é o mais chato de todos...
abrebanco
atualizar = "update pessoal set Sub1='" & txt2.text & "', Sub2= '" & txt3.text & "', Sub3= '" & txt4.text & "', Sub4= '" & txt5.text & "',Sub5= '" & txt6.text & "' where Departamento = '" & txt1.text & "'"
' não me lembro se tem uma virgula antes do where, se não der certo avise que eu testo
cn.execute atualizar
fechabanco

Link para o comentário
Compartilhar em outros sites

  • 0

Vou testando esses códigos e uma dúvida, a configuraçã desse módulo eu posso usar pra mais uma tabela???

Exemplo:

Eu inclui esse módulo e consegui gravar as informações no BD do Access com a tabela de Departamentos (tblIncluirDep)

Agora eu quero saber se eu posso usar essas configurações, sem precisar incluir outras pra tblIncluirFun, que é a tabela que eu vou usar pra incluir o Funcionário???

Link para o comentário
Compartilhar em outros sites

  • 0

É mais ou menos assim...

O usuário terá acesso aos campos:

Valor R$

Horas Trabalhadas

Horas Diarias

Data Início

Data Fim

%

Ele será usado exatamente como calculo de Descontos em folha, nesse caso, o usuário colocaria, por exemplo:

Valor R$ 510,00

Horas Trabalhadas 180 horas

Horas diarias 6 horas

Data Início 01/09/2010

Data Fim 30/09/2010

% 6

1º Neste exemplo ele pegaria o valor de 510,00 / (Pela quantidade de horas trabalhadas) 180 Ele me daria o Valor conforme as horas.

Seria 2,83

2º O Segundo momento seria, ele somaria a quantidade de dias referido ao ciclo do funcionário 30 dias, só a Data Inicio e Data Fim

3º O terceiro momento seria, pegar a hora trabalhada 2,83 * pelas Horas Diárias 6 = 16,98

4º O quarto momento seria, pegar o valor em Reais das Horas Trabalhadas 16,98 * a quantidade de dias trabalhado 30 509,40

5º Por último, Ele me pegaria o valor em reais 509,40 - 6% = 478,83

Deu pra entender mais ou menos, essas partes eu gostaria de deixar um pouco dinâmico, onde a pessoa pode acompanhar os passos do desconto...

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Matheus, simplificando as coisas, eu consegui fazer os pasos 1,3 e 4, que são contas simples, referente aos passos 2 5 que são o problema, estou mexendo em alguns tutoriais e por aqui mesmo, Script Brasil, cheguei a um site chamado

www.vb6.com.br

Realmente existe muita coisa boa por lá...

Se alguém tiver uma luz e puder me ajudar nos passos 2 e 5, sendo:

2º O Segundo momento seria, ele somaria a quantidade de dias referido ao ciclo do funcionário 30 dias, só a Data Inicio e Data Fim

5º Por último, Ele me pegaria o valor em reais 509,40 - 6% = 478,83

Um abraço a todos...

Link para o comentário
Compartilhar em outros sites

  • 0

Oi galera, cheguei ao comando de CONSULTAR

Referente ao código:

Private Sub cmdConsultar_Click()
abrebanco
Set rsdados = New Recordset
rsdados.Open "SELECT * FROM cliente WHERE tblcliente=" & txtConsulta.Text & "", cn
txtNome.Text = rsdados("nome")
txtCPF.Text = rsdados("cpf")
txtNascimento.Text = rsdados("nascimento")
txtEndereco.Text = rsdados("endereco")
txtNumero.Text = rsdados("numero")
txtComplemento.Text = rsdados("complemento")
txtBairro.Text = rsdados("bairro")
txtCidade.Text = rsdados("cidade")
txtUF.Text = rsdados("uf")
txtCEP.Text = rsdados("cep")
txtTelResidencial.Text = rsdados("telresidencial")
txtTelCelular.Text = rsdados("telcelular")
txtTelRecado.Text = rsdados("telrecado")
txtFalar.Text = rsdados("falarcom")
txtEmail.Text = rsdados("email")
txtSite.Text = rsdados("site")
txtObservacao.Text = rsdados("observacao")
fechabanco
End Sub
Acontece que neste código ele está dando erro, mais precisamente nesta linha:
Set rsdados = New Recordset

Aparece a seguinte mensagem:

Compile Error:

Invalid use of new keyword

Se puderem me ajudar quanto a esse código...

Um abraço galera...

Ahhh...

Valeu Matheus pelo código de %

Consegui colocar pra funcionar...

Agora só falta o passo 2, que eu também estou caçando, mais a minha ignorância em VB ainda é o maior problema... rsrsrs

Valeu, mais uma vez...

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, agor o problema está nessa linha...

rsdados.Open "SELECT * FROM cliente WHERE tblcliente=" & txtCPF.Text & "", cn
Está informando que um ou mais parametros não foram fornecidos. Só pra entender, conforme o seu exemplo mais mais acima: Este é o arquivo do Access??? Precisa da extensão .mdb???
SELECT * FROM cliente
Este parte eu coloco a tabela mesmo???
WHERE tblcliente="
Aqui é o campo que eu quero que puxe as informações??? Por exemplo, a pessoa que fizer a consulta terá que puxar as informações a partir do CPF???
" & txtCPF.Text & "", cn

Link para o comentário
Compartilhar em outros sites

  • 0

Oi galera, mais uma dúvida com relação aos tópicos citados acima...

Eu consegui fazer a calculadora financeira, conforme eu tirei várias dúvidas acima, porém, venho tendo problemas com os números dessa calculadora...

Vou colocar a imagem do form com uma conta de exemplo, a mesma que eu coloquei acima

form.jpg

Enfim, a conta é o seguinte:

Em Valor R$ o usuário colocará o salário base

Em Horas Trabalhadas o usuário colocará a quantidade de horas trabalhadas no mês, 180, 220 horas, etc...

Horas Diárias, obviamente a quantidade de horas diárias dele, se é 6, 8, 12...

Em % será a porcentagem de desconto...

Porém, como vocês podem ver ele está fazendo calculos doidos...

Primeiramente, ao colocar o valor Valor R$ e Horas Trabalhadas ele coloca o valor em R$ por Hora, que seria o valor em Reais da Hora Trabalhada.

Segundo, ele multiplica as horas trabalhadas pelo R$ por horas, o valor aparece em R$ por dia

Terceiro, teoricamente, o sistema teria que colocar no Campo Valor sem Desconto, novamente R$510 mais ele está fazendo a conta arredondada e está errando por muito...

O Correto seria

R$ por Hora 2,83 (esse está certo)

R$ por dia 16,98 (Lá ele colocou 18, arredondado)

Valor Sem desconto 510 (Ele teria que colocar o valor de 509,40, que seria o valor real de 30 * 16,98)

Por último em Valor Corrigido, ele até apresentou o valor certo, mais entendendo que o valor era 540 - 6%

Acredito que o problema esteja na declaração de variáveis, se puderem me ajudar mais uma vez...

Segue o código:

Private Sub Command1_Click()
salario = Text1.Text
horas = Text2.Text

Text8.Text = salario / horas
valor2 = Text8.Text

trabalhado = Text3.Text
Text9.Text = valor2 * trabalhado
valor3 = Text9.Text

ciclo = Text4.Text
Text7.Text = valor3 * ciclo
valor4 = Text7.Text

percentil = Text6.Text
valor5 = (valor4) - ((valor4 * percentil) / 100)
Text5.Text = valor5
End Sub
Ahhh... Ia até colocar essa conta de % que eu achei ontem aqui pelo Script Brasil, é bem útil pra trabalhar com Variáveis na Porcentagem...
percentil = Text6.Text
valor5 = (valor4) - ((valor4 * percentil) / 100)
Text5.Text = valor5
Esqueci de colocar as declarações de variáveis:
Option Explicit
Dim salario As Integer
Dim horas As Integer
Dim trabalhado As Integer
Dim ciclo As Integer
Dim percentil As Integer
Dim valor1 As Integer
Dim valor2 As Integer
Dim valor3 As Integer
Dim valor4 As Integer
Dim valor5 As Integer

Link para o comentário
Compartilhar em outros sites

  • 0

to meio sem tempo pra ler isso, de noite eu vo ler e ver :), qnt ao " & txtCPF.Text & "", cn, por ser texto, utilize apostrofo aspas

'" & txtCPF.Text & "'", cn
rsdados.Open "SELECT * FROM cliente WHERE tblcliente='" & txtCPF.Text & "'", cn

no modulo, você declarou o cn... então sua conexao está feita... o arquivo do access tem q ser .mdb sim

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Putz...

Mesmo com apostrofo e aspas não funcionou...

Olha só, eu até criei um campo pra puxar as informações especificamente, mesmo assim não funcionou...

Agora aparece essa mensagem:

O Mecanismo de Banco de Dados Microsoft Jet não encontrou a tabela de entrada ou consulta "cliente". Certifique-se de que ela existe e de que seu nome está digitado corretamente.

O engraçado é que tudo existe e está digitado corretamente, por exemplo, os campos eu copiei do próprio form de Inclusão de cadastro no BD do Access

rsdados.Open "SELECT * FROM cliente WHERE tblcliente='" & txtConsultar.Text & "'", cn

txtNome.Text = rsdados("nome")
txtCPF.Text = rsdados("cpf")
txtNascimento.Text = rsdados("nascimento")
txtEndereco.Text = rsdados("endereco")
txtNumero.Text = rsdados("numero")
txtComplemento.Text = rsdados("complemento")
txtBairro.Text = rsdados("bairro")
txtCidade.Text = rsdados("cidade")
txtUF.Text = rsdados("uf")
txtCEP.Text = rsdados("cep")
txtTelResidencial.Text = rsdados("telresidencial")
txtTelCelular.Text = rsdados("telcelular")
txtTelRecado.Text = rsdados("telrecado")
txtFalar.Text = rsdados("falarcom")
txtEmail.Text = rsdados("email")
txtSite.Text = rsdados("site")
txtObservacao.Text = rsdados("observacao")

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...