Jump to content
Sign in to follow this  
D3POD

Aplicativo para Controlo e Registo

Recommended Posts

D3POD

Boas a todos, tenho um projecto novo para a empresa onde trabalho que consiste em criar um programa para registo e controlo das instalações do softwares de gestão.

Esta aplicação que pretendo será utilizada para adicionar novos softwares e deverá ter alguns campos de preenchimento para controlo dos clientes.

Da aplicação será necessário ter botões para Adicionar, Alterar e Eliminar...

Opções da Aplicação:

Acerca do Cliente:

Nome / Empresa

Morada

Localidade/Zona

Provincia

Conctato:

Email:

Nome da pessoa de contacto preferencial:

Contacto:

Acerca do Software:

Data Licença:

Licença:

Código de Confirmação:

Data de Instalação:

Tipo de Programa:

Versão:

Data da Ultima Intervenção:

Data da Ultima Actualização:

Numero de Postos de Trabalho:

Estes são os campos que queria que estivessem lá, bem como um espaço no final para Observações...

Gostaria de obter a vossa ajuda para saber o que vou precisar e por onde começar...

Gostava também de saber se será possivel criar algum tipo de anexos, ou seja, colocar as folhas que fazemos ao ir aos clientes como anexo para termos sempre comprovativos...

Agradeço toda a vossa ajuda :P

Cumprimentos

Share this post


Link to post
Share on other sites
bioshock

Acerca do Cliente:

Nome / Empresa

Morada

Localidade/Zona

Provincia

Conctato:

Email:

Nome da pessoa de contacto preferencial:

Contacto:

Acerca do Software:

Data Licença:

Licença:

Código de Confirmação:

Data de Instalação:

Tipo de Programa:

Versão:

Data da Ultima Intervenção:

Data da Ultima Actualização:

Numero de Postos de Trabalho:

Estes são os campos que queria que estivessem lá, bem como um espaço no final para Observações...

Queres e vão estar.

Primeiro lê este artigo: Princípios das Bases de dados.

Depois escolhes uma base de dados à medida da aplicação.

E por fim começas a experimentar código: Access (Seleccionar, Inserir, Actualizar, Eliminar)

Nota: o último link está direccionado para base de dados Access mas funciona para qualquer uma, desde que alteres os devidos parâmetros.

Share this post


Link to post
Share on other sites
D3POD

Obrigado :P Já estou a tratar de ler tudo e ver se percebo como aplicar ao que pretendo...

Tenho uma dúvida...

<b>Dim command As New OleDbCommand(query, ConnectionString)

command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextbox.Text

command.Parameters.Add("@Empresa", OleDbType.VarChar).Value = EmpresaTextbox.Text  </b>

Aqui terei de adicionar mais linhas para todos os que quero adicionar, por exemplo, para a morada e telefone... certo?

E terei que adicionar o código do segundo tutorial nos respectivos botões certo?

Isto só para me organizar em termos de código :D

Share this post


Link to post
Share on other sites
acao

Queres e vão estar.

Primeiro lê este artigo: Princípios das Bases de dados.

Depois escolhes uma base de dados à medida da aplicação.

E por fim começas a experimentar código: Access (Seleccionar, Inserir, Actualizar, Eliminar)

Nota: o último link está direccionado para base de dados Access mas funciona para qualquer uma, desde que alteres os devidos parâmetros.

parabéns bioshock, bons artigos, tem tudo o necessário.

ainda não tinha lido.

cumps

acao

Share this post


Link to post
Share on other sites
D3POD

Boas acao, obrigado pela resposta ;)

Hoje estou só a preparar tudo, tutoriais e a estudar como fazer as coisas, para com calma começar a fazer ;)

Sou muito iniciado nisto e quero aprender portanto nada melhor que primeiro estudar todas as hipoteses.

Digam-me uma coisa, eu insiro um novo cliente, mas como o posso ir buscar mais tarde? Com o SELECT?

a minha ideia era, ou criar uma lista lateral com todos e depois fazer scroll para encontrar o que pretendo... ou então um search...

Não sei é que ferramenta usar e como colocar em prática esta parte...

Cumprimentos ;)

Já agora um offtopic, este fórum não tem suporte para tapatalk?

Share this post


Link to post
Share on other sites
acao

Boas acao, obrigado pela resposta ;)

Hoje estou só a preparar tudo, tutoriais e a estudar como fazer as coisas, para com calma começar a fazer ;)

Sou muito iniciado nisto e quero aprender portanto nada melhor que primeiro estudar todas as hipoteses.

correcto mas não se preocupe está em boas maos o membro bioshock é excelente e disse «Queres e vão estar.» portanto estejá avontade é só fazer pela vida, e a comunidade é grande não se preocupe mesmo.

Digam-me uma coisa, eu insiro um novo cliente, mas como o posso ir buscar mais tarde? Com o SELECT?

a minha ideia era, ou criar uma lista lateral com todos e depois fazer scroll para encontrar o que pretendo... ou então um search...

Não sei é que ferramenta usar e como colocar em prática esta parte...

afirmativo é com o select.

passe pelo link abaixo e pesquise também por «sql + consultas» que encontrará muitos exemplos.

http://www.macoratti.net/vb_sql2.htm

http://www.devmedia.com.br/tutorial-sql-seu-guia-pratico-para-execucao-de-consultas-parte-final/3291

cumps

acao

Share this post


Link to post
Share on other sites
D3POD

Boas estou aqui com uma dúvida... Ainda não comecei a colocar código, estou ainda na parte de criar o layout e tentar perceber o código...

O que me está a por confusão é a parte de procurar um registo já criado, a maneira de depois o visualizar já percebi pelo código que posso usar um datagridview mas a dúvida é como procurar...

Será que posso fazer assim?

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\BD.mdb")

Dim query As String = "SELECT * FROM Clientes WHERE ID = @IDCliente"

Dim command As New OleDbCommand(query, ConnectionString)

' Seleccionar os dados APENAS do cliente 3

command.Parameters.Add("@NomeCliente", OleDbType.Integer).Value = SearchCliente.textbox

Dim DataAdapter As New OleDbDataAdapter(command)

Dim MyData As New DataSet

DataAdapter.Fill(MyData, "Clientes")

Me.DataGridView1.DataSource = MyData.Tables("Clientes") ' Neste caso utilizei uma datagridview para visualizar os dados

Penso que assim ao colocar por exemplo João, Lda ele vai-me abrir no datagridview os dados do João, Lda certo?

Ou já estou a inventar de mais...?

Share this post


Link to post
Share on other sites
acao

boas

não, pela simples razao de em:

 Dim query As String = "SELECT * FROM Clientes WHERE ID = @IDCliente" 

deverias ter:

 Dim query As String = "SELECT * FROM Clientes WHERE nomecliente = @nomecliente"  
command.Parameters.Add("@NomeCliente", OleDbType.VarChar).Value = NomedaTextbox.Text

ou

 Dim query As String = "SELECT * FROM Clientes WHERE nomecliente = textbox.text"  e eliminar      
command.Parameters.Add("@NomeCliente", OleDbType.VarChar).Value = NomedaTextbox.Text  'varchar é para (string).

mas o mais usado é usar,

 Dim query As String = "SELECT * FROM Clientes WHERE nomecliente = @nomecliente"  

ps: a textbox podia ser substituida por  por uma variavel, numerario etc.

cumps

acao

Share this post


Link to post
Share on other sites
D3POD

ahhh ok, tinha-me esquecido de mudar também aí o @IDcliente :D

Mudei só a baixo porque era onde tinha a dúvida...

e também reparei que me corrigiste quanto ao nomecliente.textbox :)

Vou analisar essa parte da variável... mas a diferença maior será apenas na interpretação do código certo?

A nivel de funcionalidades será o mesmo?

Vamos lá ver se consigo projectar isto na aplicação :D

Share this post


Link to post
Share on other sites
acao

boas

não te equeças que a base dados tem que estar na pasta «bin/debug, mas  eu uso o disco D/ para estar fora do sistema operativo para se for necessário formatar não correr o risco de eliminar a base de dados.

uso assim:

 Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\BaseDados\db.accdb;Jet OLEDB:Database Password= " & vCodDB & ";")
           

talvez fosse melhor usar db «accdb» em vez de mdb, é muito mais facil controlar a password.(acces 2007 ou superior).

cumps

acao

Share this post


Link to post
Share on other sites
D3POD

Obrigado :)

Por acaso tenho aqui um tutorial onde menciona isso da base de dados :D

Vou começar hoje a pôr código :D

Vamos lá ver :)

Share this post


Link to post
Share on other sites
D3POD

Boas, começaram então os problemas :P

No inicio com a base de dados dava logo um erro ao entrar em modo debug, mas lá resolvi...

Agora tenho aqui um problema que me está a por doido, referente a este código:

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\bd.accdb")

Dim query As String = "INSERT INTO Clientes([Nome]) VALUES (@Nome)"

Dim command As New OleDbCommand(query, ConnectionString)

command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextbox.Text

ConnectionString.Open()

O problema está que não cria nada na base de dados :S

Agora as minhas dúvidas:

Eu tenho a base de dados dentro da pasta do projecto \bin\debug                  será que está aqui algum problema?

Também não percebo esta parte do código:

Dim query As String = "INSERT INTO Clientes([Nome]) VALUES (@Nome)"

Mais propriamente a parte do INSERT INTO Clientes... este clientes refere-se ao quê?

Será que falta código ou já mexi de mais?

Agradeço a vossa ajuda ;)

Cumprimentos

Share this post


Link to post
Share on other sites
acao

boas

compara com o meu post anterior.

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\bd.accdb")

olha para o providor, está a colocar referente a db.mdb

cumps

acao

Share this post


Link to post
Share on other sites
D3POD

Boas, eu é que me enganei... eu tenho assim:

Dim ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\BD.accdb"

e não introduz nada :S

Desculpem a demora mas hoje foi um dia complicado...

Share this post


Link to post
Share on other sites
D3POD

Obrigado acao :)

Diz-me uma coisa no caso de na textbox colocar texto não posso colocar o "x" como integer certo?

Ou seja também o if x < 1também não serve neste caso, ou estou a fazer confusão?

EDIT1:

Humm agora dá-me erro em:

Dim x As Integer = command.ExecuteNonQuery

OledDbException was unhandled

Não tenho nada feito, só se for do lado da base de dados...

Maneira de resolver... peguei na base de dados e alterei, a que vinha no .rar

Pelos vistos o problema estava na base de dados pois agora funciona 5* :P

Muito obrigado :D

Share this post


Link to post
Share on other sites
D3POD

não, a tua é que funciona :)

ou funcionava :P

Porque é que quando faço o debugging e escrevo nos campos ele dá-me erro no

Dim x As Integer = command.ExecuteNonQuery()

Estava a funcionar bem... deixou de funcionar depois de começar a adicionar mais campos na base de dados e no código do botão xS

Share this post


Link to post
Share on other sites
acao

boas

deve ter a ver com a query (select) ou parametros, para cada campo seu parametro.

'para carecteres (texto) ->Varchar
command.Parameters.Add("@NomeCliente", OleDbType.VarChar).Value = NomedaTextbox.Text


'para numerario ->Integer
command.Parameters.Add("@NumeroCliente", OleDbType.Integer).Value = NomedaTextbox.Text

cumps

acao

Share this post


Link to post
Share on other sites
D3POD

Boas :D

este é o erro que me dá...

semttulohbg.png

estou farto de tentar perceber onde está o problema... :S e nada...

Espero que alguém me consiga ajudar :D

Cumprimentos

Share this post


Link to post
Share on other sites
acao

boas

estás a colocar texto num campo numerico.

coloca o codigo todo para verificar.

para colocar o cod usa a combo inserir codigo.

é so copiar e colar.

cumps

acao

Share this post


Link to post
Share on other sites
D3POD

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\bd.accdb")

        Dim query As String = "INSERT INTO clientes([nome], [morada], [zona], [provincia], [cont1], [cont2], [cont3], [email1], [email2], [nome1], [cont4], [cont5], [dlicenca], [licenca], [chaveact], [dinstalacao], [tprograma], [versao], [dintervencao], [dactualizacao], [npostos], [observacoes]) VALUES (@nome, @morada, @zona, @provincia, @contacto1, @contacto2, @contacto3, @email1, @email2, @nome1, @contacto4, @contacto5, @dlicenca, @licenca, @chaveact, @dinstalaçao, @tprograma, @versao, @dintervencao, @dactualizacao, @npostos, @observacoes)"

        Dim command As New OleDbCommand(query, ConnectionString)

        command.Parameters.Add("@nome", OleDbType.VarChar).Value = TextBox1.Text
        command.Parameters.Add("@morada", OleDbType.VarChar).Value = TextBox2.Text
        command.Parameters.Add("@zona", OleDbType.VarChar).Value = ComboBox5.Text
        command.Parameters.Add("@provincia", OleDbType.VarChar).Value = ComboBox4.Text
        command.Parameters.Add("@contacto1", OleDbType.Integer).Value = TextBox3.Text
        command.Parameters.Add("@contacto2", OleDbType.Integer).Value = TextBox4.Text
        command.Parameters.Add("@contacto3", OleDbType.Integer).Value = TextBox5.Text
        command.Parameters.Add("@email1", OleDbType.VarChar).Value = TextBox6.Text
        command.Parameters.Add("@email2", OleDbType.VarChar).Value = TextBox7.Text



        ConnectionString.Open()
        Dim x As Integer = command.ExecuteNonQuery()

        If x < 1 Then
            MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

        ConnectionString.Close()
        command = Nothing

        'limpa o valor da textbox1
        TextBox1.Text = ""
    End Sub
End Class

Usei a aplicação que me mandas-te e fui lhe acrescentando mais campos... e só obtive o erro novamente quando não preenchi uma das textbox's...

Cumprimentos,

D3POD

Share this post


Link to post
Share on other sites
acao

acrescente o cod conforme eu coloquei. ps: tem indicaçao acrescenta.

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\bd.accdb")

        Dim query As String = "INSERT INTO clientes([nome], [morada], [zona], [provincia], [cont1], [cont2], [cont3], [email1], [email2], [nome1], [cont4], [cont5], [dlicenca], [licenca], [chaveact], [dinstalacao], [tprograma], [versao], [dintervencao], [dactualizacao], [npostos], [observacoes]) VALUES (@nome, @morada, @zona, @provincia, @contacto1, @contacto2, @contacto3, @email1, @email2, @nome1, @contacto4, @contacto5, @dlicenca, @licenca, @chaveact, @dinstalaçao, @tprograma, @versao, @dintervencao, @dactualizacao, @npostos, @observacoes)"

        Dim command As New OleDbCommand(query, ConnectionString)

        command.Parameters.Add("@nome", OleDbType.VarChar).Value = TextBox1.Text
        command.Parameters.Add("@morada", OleDbType.VarChar).Value = TextBox2.Text
        command.Parameters.Add("@zona", OleDbType.VarChar).Value = ComboBox5.Text
        command.Parameters.Add("@provincia", OleDbType.VarChar).Value = ComboBox4.Text
        command.Parameters.Add("@contacto1", OleDbType.Integer).Value = TextBox3.Text
        command.Parameters.Add("@contacto2", OleDbType.Integer).Value = TextBox4.Text
        command.Parameters.Add("@contacto3", OleDbType.Integer).Value = TextBox5.Text
        command.Parameters.Add("@email1", OleDbType.VarChar).Value = TextBox6.Text
        command.Parameters.Add("@email2", OleDbType.VarChar).Value = TextBox7.Text



        ConnectionString.Open()
        Dim x As Integer = command.ExecuteNonQuery()

        If x < 1 Then
            MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

        ConnectionString.Close()
        command = Nothing
'acrescenta
        ConnectionString.Nothing
        'limpa o valor da textbox1
        TextBox1.Text = ""
'acrescenta
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
ComboBox4.SelectedIndex = -1
ComboBox5.SelectedIndex = -1
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
    End Sub
End Class

Usei a aplicação que me mandas-te e fui lhe acrescentando mais campos... e só obtive o erro novamente quando não preenchi uma das textbox's...

Cumprimentos,

D3POD

se não der certo coloque a tabela em formato access para testar e ver.

cumps

acao

Share this post


Link to post
Share on other sites
D3POD

Error 1 'nothing' is not a member of 'System.Data.OleDb.OleDbConnection'. C:\Users\Diogo\documents\visual studio 2010\Projects\Registo Clientes\Registo Clientes\Form1.vb 54 9 Registo Clientes

deu me este erro...

mas porque será que com o programa que me enviou funciona bem?

já experimentei reproduzir o erro na aplicação que me enviou e só o consigo reproduzir se por exemplo tiver um command adicionado e na textbox que lhe definir não colocar nada...

de resto funciona sempre bem :S

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.