Jump to content

Recommended Posts

Posted

Mais uma vez,cá estou a expor duvidas.  ?  ?

O que prentendo para a minha aplicação é o seguinte:

Na tabela quero selecionar uma linha, e no evento do botão,mostrar numa janela toda a informação referente á linha selecionada.

É possivel fazer uma situação dessas?

Há algum link que dê para consultar para ver como se faz?

Cumprimentos

  • Replies 82
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted

Cria um formulário com todos os campos para mostrar a informação e depois só tens de passar para lá o valor do campo chave primaria da tabela para ires buscar a informação detalhada.

Pedro Martins

Não respondo a duvidas por PM

Posted

Boa tarde.

Caça:

O meu problema é não saber como se pode fazer isso. Gostava de ter um exemplo para poder estudar e aplicar á minha aplicação.

Ja procurei por links,mas não vi nada. Sabes alguns?

Posted

Por acaso nao o tinha criado, porque, no entanto,deparei-me com um outro problema com a inserção de imagens.

Como tenho que inserir 2 imagens em 2 picturebox diferentes,assim que seleciono as imagens, ao  gravar na bd,só grava 1 das 2.

Eu explico melhor. Na tabela tenho os campo fotoWin e fotoOffice ( são as serials de ambos). Seleciono fotos difrentes,mas nos campos aparece a mesma foto do outro campo. Por exemplo:

Na picturebox do fotoWin escolho uma flor,na fotoOffice escolho uma cara. Até aqui tudo certo. Ao gravar na bd, no campo fotoWin grava a cara e no campo fotoOffice tb a cara,o que quer dizer que não grava a flor no fotoWin.

Para gravar as fotos na bd optei por converter as imagens em bytes,para não ocupar muito a bd.

Agradecia a explicação do porque este problema.

Deixo o codigo aqui:

  Dim arqImg As FileStream
        Dim rImg As StreamReader
        Dim arqImgem As FileStream
        Dim oImgem As StreamReader
        Try
            ' Texto de ligação à base de dados
            Dim myConnectionString As String = _
             "Data Source=.\SQLEXPRESS; Initial Catalog=Parque; Integrated Security=SSPI;"
            

            'inserir imagem na bd
            If Len(dlgFicheiro.FileName) <> 0 Then
                arqImg = New FileStream(dlgFicheiro.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)
                rImg = New StreamReader(arqImg)
            Else
            End If
            'inserir imagem na bd
            If Len(dlgFicheiro.FileName) <> 0 Then
                arqImgem = New FileStream(dlgFicheiro.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)
                oImgem = New StreamReader(arqImgem)
            End If
            'declaramos um vetor de bytes para armazenar o conteúdo da imagem a ser salva
            Dim arqByteArray(arqImg.Length - 1) As Byte
            arqImg.Read(arqByteArray, 0, arqImg.Length)

            'declaramos um vetor de bytes para armazenar o conteúdo da imagem a ser salva/ fotoOffice
            Dim arquivoByteArray(arqImgem.Length - 1) As Byte
            arqImgem.Read(arquivoByteArray, 1, arqImgem.Length)

            ' Comando que irá inserir dados na tabela "Parque"  os campos
            'que são passados através de parâmetros
            Dim SQL As String = "INSERT INTO gest_ao ([fotoWin],[fotoOffice],[empresa],[nome_rede],[utilizador],[local],[departamento],[visivel_rede],[sistema_operativo],[licenca_win],[office],[licenca_office],[numero_office],[autenticacao],[office_audit],[dl],[server_cal],[ex_cal],[sql_cal],[user_baan],[user_citrix],[user_internet],[observacao]) VALUES (@fotoWin,@fotoOffice,@empresa, @nome_rede,@utilizador,@local,@departamento,@visivel_rede,@sistema_operativo,@licenca_win,@office,@licenca_office,@numero_office,@autenticacao,@office_audit,@dl,@server_cal,@ex_cal,@sql_cal,@user_baan,@user_citrix,@user_internet,@observacao);"
            ' Cria uma nova ligação à base de dados
            Dim connection As New SqlConnection(myConnectionString)
            ' Criação do comando indicando a instrução e a ligação
            Dim command As New SqlCommand(SQL, connection)
            ' Indicação dos parâmetros que serão inseridos
            command.Parameters.Add("@empresa", SqlDbType.VarChar).Value = cbxEmpresa.Text
            command.Parameters.Add("@nome_rede", SqlDbType.VarChar).Value = txtNomeRede.Text
            command.Parameters.Add("@utilizador", SqlDbType.VarChar).Value = txtUtilizador.Text
            command.Parameters.Add("@local", SqlDbType.VarChar).Value = cbxLocal.Text
            command.Parameters.Add("@departamento", SqlDbType.VarChar).Value = cbxDepartamento.Text
            command.Parameters.Add("@visivel_rede", SqlDbType.Int).Value = cbxVisivel_Rede.SelectedIndex
            command.Parameters.Add("@sistema_operativo", SqlDbType.VarChar).Value = txtSO.Text
            command.Parameters.Add("@licenca_win", SqlDbType.VarChar).Value = txtSeloWindows.Text
            command.Parameters.Add("@office", SqlDbType.VarChar).Value = txtOffice.Text
            command.Parameters.Add("@licenca_office", SqlDbType.VarChar).Value = txtSeloOffice.Text
            command.Parameters.Add("@numero_office", SqlDbType.Int).Value = txtNOffice.Text
            command.Parameters.Add("@autenticacao", SqlDbType.VarChar).Value = cbxLegal.Text
            command.Parameters.Add("@office_audit", SqlDbType.VarChar).Value = txtOfficeAuditoria.Text
            command.Parameters.Add("@dl", SqlDbType.VarChar).Value = cbxDL.Text
            command.Parameters.Add("@server_cal", SqlDbType.Int).Value = cbxServer.SelectedIndex
            command.Parameters.Add("@ex_cal", SqlDbType.Int).Value = cbxEX.SelectedIndex
            command.Parameters.Add("@sql_cal", SqlDbType.Int).Value = cbxSQL.SelectedIndex
            command.Parameters.Add("@user_baan", SqlDbType.VarChar).Value = cbxUserBaan.Text
            command.Parameters.Add("@user_citrix", SqlDbType.VarChar).Value = cbxUserCitrix.Text
            command.Parameters.Add("@user_internet", SqlDbType.VarChar).Value = cbxUserInternet.Text
            command.Parameters.Add("@fotoWin", SqlDbType.Image, arqImg.Length).Value = arqByteArray
            command.Parameters.Add("@fotoOffice", SqlDbType.Image, arqImgem.Length).Value = arquivoByteArray
            command.Parameters.Add("@observacao", SqlDbType.VarChar).Value = txtObservacoes.Text

            ' Abre a ligação, executa o comando e guarda em "x" o número de registos inseridos
            connection.Open()
            Dim x As Integer = command.ExecuteNonQuery()
            If x < 1 Then
            End If
            ' Fecha a ligação e limpa as variáveis
            connection.Close()
            connection = Nothing
            command = Nothing
            MsgBox(" Registo inserido com sucesso", MsgBoxStyle.Information)
        Catch ex As Exception
            MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        End Try

EDIT: GeSHi adicionado

Posted

Estas a carregar duas vezes a mesma imagem, repara aqui

arqImg = New FileStream(dlgFicheiro.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)

e logo a seguir

arqImgem = New FileStream(dlgFicheiro.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)

o caminho(dlgFicheiro.FileName) é exactamente o mesmo

Pedro Martins

Não respondo a duvidas por PM

Posted

Não estou a dizer isso, só te estou a dizer que estás a carregar a mesma imagem para duas variaveis diferentes, logo vai-te inserir a mesma imagem nos dois campos.

Pedro Martins

Não respondo a duvidas por PM

Posted

Obrigado Caça pela dica,resolvi essa parte colocando outro openfiledialog.

Agora vou para a outra parte que é selecionar uma linha da tabela e no evento do botão (por exemplo: "Ver") abrir uma janela e mostrar tudo para poder fazer update ou eliminar, claro que com os seu respectivos botoes.

Vou ao trabalho e depois darei noticias.

Um abraço

Posted

Boa tarde a todos os presentes

Cria um formulário com todos os campos para mostrar a informação

O formulario ja esta criado. Agora a duvida prende-se em como passar a informação a ser visualizada noutra janela.

?

Posted

Sim, tenho uma datagridview.

Eu so uso 1 tabela em que a chave primaria é o IdGestao.

A query, eu tenho a ligeira impressão que seja algo: Select * from [nome tabela] where id=@id. certo?

Fazer o resto é que não sei,dai pedir um link para ver ou ter uma noção de como fazer.

Posted

Agora no formulário onde vão ser mostrados os detalhes coloca isto

    Public IdGestao As Integer

    Public Sub New(ByVal IdGestao As Integer)
        InitializeComponent()
        Me.IdGestao = IdGestao
    End Sub

E para o chamar faz isto, ele vai pegar no valor da primeiro coluna, se não for lá que está o ID muda.

        If Dgv.SelectedRows = 0 Then Exit Sub
        Dim F As New NomeDoForm(Convert.ToInt32(Dgv.SelectedRows(0).Cells(0).Value))
        F.ShowDialog()

Depois tens de utilizar uma query desse género e preencher os campos, em que o id vai estar na tua variável IdGestao .

Pedro Martins

Não respondo a duvidas por PM

Posted

Ok.

Ja fiz o que disses-tes( e estou grato) agora, tenho mais umas duvidas a colocar ( e peço desculpas por ser chato).

Tenho assim

   

   If Tabela.SelectedRows = 0 then

    Dim FormEdicao As New edicao(Convert.ToInt32(Tabela.SelectedRows(0).Cells(0).Value))
        FormEdicao.ShowDialog()

  

E explico: "edicao" é o nome do novo Form. Tabela é o nome que atribui á DataGridView.

Mostra erro aqui: "FormEdicao"e aqui:  "Tabela"

:dontgetit:

Posted

Esse código tem de ser colocado onde está a DataGridView, não no novo.

Mas que erro é que está a dar?

Deixa cá ver se entendi, entao:

este codigo:

 Public IdGestao As Integer

    Public Sub New(ByVal IdGestao As Integer)
        InitializeComponent()
        Me.IdGestao = IdGestao
End Sub

É no novo form.

E este:

If tabela.SelectedRows = 0 Then

            Dim FormEdicao As New edicao(Convert.ToInt32(tabela.SelectedRows(0).Cells(0).Value))
            FormEdicao.ShowDialog()

        End If

É no form onde tenho a tabela. É isso?

?

Posted

Depois de colocar tudo no sitio, continuo com erros.

If Tabela.SelectedRows = 0 Then
            Dim FormEdicao As New edicao(Convert.ToInt32(Tabela.SelectedRows(0).Cells(0).Value))
            FormEdicao.ShowDialog()
        End If

"Tabela.SelectedRows = 0" aqui dá erro. Tabela é o nome que atribui á DataGridView.

Este código foi inserido no evento do botão "Ver info".

Ja ando a  :wallbash: ha muito tempo e não vejo saida.....(desabafo....)

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
×
×
  • 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.