• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zephirus

Access database no Sharp Develop

14 mensagens neste tópico

Olá,

Tenho uma base de dados em Access que quero aceder no meu programa. Estou a programar em VB.NET no sharp develop e não consigo introduzir a base de dados. Alguém me pode ajudar?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Define "introduzir a base de dados". O que pretendes ao certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Define "introduzir a base de dados". O que pretendes ao certo?

Eu tenho o ficheiro da base de dados já criado, o qual posso abrir no access. O que eu pretendo é aceder aos dados desse ficheiro no meu programa. Pegar em valores de colunas e linhas determinadas  e colocá-los numa tabela ou listbox, etç. O que eu não estou a conseguir é integrar o ficheiro de access no projecto. Como disse, eu estou a usar o sharpdevelop. No Visual Studio eu consigo fazer isto.

Espero não ter sido confuso. Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas no Visual Studio como fazias? Recorrias aos wizards ou fazias tu o código ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas no Visual Studio como fazias? Recorrias aos wizards ou fazias tu o código ?

No Visual Studio fazia pelo wizard. Confesso que não estou muito dentro do código para aceder a bases de dados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que já descobri uma maneira. Tenho uma form com um botão e um DataGrid e para o button.click tenho o seguinte código (exemplo):

Sub Button1Click(sender As Object, e As EventArgs)

Dim conexao As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\funcionarios.mdb"
    Dim sql As String = "Select * from funcionarios"

Dim da As New data.OleDb.OleDbDataAdapter(sql,conexao)
    Dim ds As New Data.DataSet
    
    DataGrid1.CaptionText = "funcionarios"
    da.Fill(ds, "funcionarios")
    DataGrid1.DataSource = ds
    DataGrid1.DataMember = "funcionarios"

End Sub

Com este código, consigo colocar os dados da base de dados na DataGrid. Só tenho um pequeno problema. No código acima, tenho o ficheiro na root da drive C: mas eu quero que ele vá buscar o ficheiro à pasta onde terei o programa instalado. Como é que faço isso? Eu já tenho o ficheiro no meu projecto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim conexao As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\funcionarios.mdb"

Experimenta assim :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim conexao As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\funcionarios.mdb"

Experimenta assim :)

Ok, parece que funciona. Obrigado :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, apesar de não ter muito a ver com a questão inicial, tenho outro problema.

Imagina que ao carregar num botão no meu programa, faço aparecer uma dialogbox. Eu quero que automaticamente ao ser aberta essa dialogbox, seja efectuado determiado código. Acontece que se eu colocar esse código na Form.Load, só irei ver a dialogbox após todo o código ter sido corrido. O que eu pretendo é que a Dialogbox apareca e depois então o código seja corrido de maneira a eu poder ver as alterações que esse código faz, em tempo real. Como é que faço isto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deve haver aí algo que não estás a explicar direito. Numa windows application se tu chamares a dialogbox, ela é chamada e só passa para a seguinte linha de código após ser fechada.

Mostra-me o código que tu tens (e que faz o que indicaste) para eu dar uma olhadela.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É simples. A dialogbox é na verdade uma form que eu defini para funcionar como dialogbox.

Exemplo de código nessa form:

For i As Integer = 1 to 1000
   Label1.text = i
   progressbar.Value = i   
   System.Threading.Thread.CurrentThread.Sleep(10)
   Application.DoEvents
Next i

Como podes ver, eu quero ver o Label1 e a barra de progresso a mudarem os seus valores. A questão é que se eu colocar este código no Load da Form, não vejo essa mudança, só vejo quando o ciclo terminar. Espero ter sido mais explícito agora  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, aí terás q usar uma thread à parte e mandares actualizar a tua thread principal para poderes ver essa actualização de estado. Explora exemplos de Multithreading que vai-te ajudar a implementar isso. Qualquer duvida avisa que tentarei (ou outra pessoa) ajudar.

Contudo, dou-te a referencia deste site (www.macoratti.net) para poderes ver algo do que te falei :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela ajuda. Por acaso já tinha ido parar ai numa das minhas pesquisas.  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

O multithreading ajuda e na verdade até resolve mas podes fazer de uma forma mais simples.

  Private timer As Timer

    Private Sub RunProgress(ByVal sender As System.Object, ByVal e As System.EventArgs)
        ' Para o timer
        timer.Stop()

        ' Actualiza a progressbar/label
        For i As Integer = 1 To 1000
            Label1.Text = i
            ProgressBar.Value = i
            Threading.Thread.Sleep(10)
            Application.DoEvents()
        Next
    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' cria o timer
        timer = New Timer
        timer.Interval = 200

        AddHandler timer.Tick, AddressOf RunProgress
        timer.Start()
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora