Jump to content
MaxHelmer

Tabela relacionada

Recommended Posts

MaxHelmer

Olá! Sou novo no fórum! Sou novato também como programador.

Pesquisei sobre o assunto em vários fóruns, inclusive nesse e não encontrei sobre o assunto.

É o seguinte:

Tenho 2 tabelas que se relacionam (access):

tb_usuario tb_departamento

cod_usuario cod_departamento

nome_usuario nome_departamento

cod_departamento

quando carrego os dados em meu form do vb.net numa textbox eu carrego apenas o cod_departamento (chave estrangeira de tb_departamento). Como eu faço para trazer para o form os dados da tebela relacionada através do cod_departamento (chave estrangeira da tb_departamento)?

Espero ter me expressado bem.

Desde já agradeço a ajuda.

Share this post


Link to post
Share on other sites
nelsonr

Boas,

antes de mais bem vindo ao forum.

Em relação à questão, como é que estás a ler os dados da base de dados?

Share this post


Link to post
Share on other sites
MaxHelmer

Obrigado pela recepção!

Bom, o código resumido seria esse:

Public Class frmCadUsuario

Dim acod_usuario(1) As Integer

Dim anome(1) As String

Dim acod_departamento(1) As Integer

Dim acod_cargo(1) As Integer

Dim alogin(1) As String

Dim asenha(1) As String

Dim vmodo As String = "X"

Private Sub frmCadUsuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

carrega_usuarios()

desab_campos()

End Sub

Private Sub carrega_usuarios()

Dim cs As String = My.Settings.MBSoftGestaoEducacionalConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = "SELECT * FROM tb_usuario ORDER BY nome"

Dim vLeitor As OleDb.OleDbDataReader

vLeitor = selcom.ExecuteReader()

Dim c As Integer = 0

dgvUsuarios.Rows.Clear()

Do While vLeitor.Read

c = c + 1

ReDim Preserve anome©

ReDim Preserve acod_usuario©

ReDim Preserve acod_departamento©

ReDim Preserve acod_cargo©

ReDim Preserve alogin©

ReDim Preserve asenha©

anome© = vLeitor("nome")

acod_usuario© = vLeitor("cod_usuario")

acod_departamento© = vLeitor("cod_departamento")

acod_cargo© = vLeitor("cod_cargo")

alogin© = vLeitor("login")

asenha© = vLeitor("senha")

dgvUsuarios.Rows.Add(anome©, acod_departamento©, acod_cargo©)

Loop

conect.Close()

Catch ex As Exception

MessageBox.Show("Erro ao carregar os dados!" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

txtRegistros.Text = acod_usuario.Length - 1

End Sub

Private Sub dgvUsuarios_Selectionchanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgvUsuarios.Selectionchanged

carrega_campos()

End Sub

Private Sub carrega_campos()

Dim ind As Integer = dgvUsuarios.CurrentRow.Index + 1

txtNome.Text = anome(ind)

cmbDepartamento.Text = acod_departamento(ind)

cmbCargo.Text = acod_cargo(ind)

txtLogin.Text = alogin(ind)

txtSenha.Text = asenha(ind)

chkAtivo.Checked = aAtivo(ind)

txtDataCadasto.Text = adata_cadastro(ind)

txtUsuarioCadastrou.Text = ausuario_cadastro(ind)

txtDataUltimoAcesso.Text = adata_ultimo_acesso(ind)

txtHoraUltimoAcesso.Text = ahora_ultimo_acesso(ind)

End Sub

Já observei que no combobox tenho como fazer facilmente utilizando o "Data Binding mode". O problema é como faço para fazer o mesmo em uma textbox ou no meu data grid?

Share this post


Link to post
Share on other sites
nelsonr

Podes usar o seguinte query de SQL para ler os dados das duas tabelas

select u.*, d.nome_departamento from tb_usuario as u left join tb_departamento as d on d.cod_departamento = u.cod_departamento

Share this post


Link to post
Share on other sites
MaxHelmer

Podes usar o seguinte query de SQL para ler os dados das duas tabelas

select u.*, d.nome_departamento from tb_usuario as u left join tb_departamento as d on d.cod_departamento = u.cod_departamento

Amigo nelsonr!

Sua informação resolveu meu problema.

Se eu quiser inserir mais uma tabela. Exemplo:

tb_usuario tb_departamento tb_cargo

cod_usuario cod_departamento cod_cargo

nome_usuario nome_departamento nome_cargo

cod_departamento

cod_cargo

Como ficaria o query de SQL? Com essa informação vou poder seguir em frente graças a você.... desde já agradeço

Espero poder ajudar outros assim como você me ajudou. Abraços

Edited by MaxHelmer

Share this post


Link to post
Share on other sites
nelsonr

Podia ser algo assim:

SELECT tb_usuario.*, tb_departamento.nome_departamento, tb_cargo.nome_cargo
FROM tb_cargo INNER JOIN (tb_departamento INNER JOIN tb_usuario ON tb_departamento.cod_departamento = tb_usuario.cod_departamento) ON tb_cargo.cod_cargo = tb_usuario.cod_cargo

A forma mais facil de fazer estes querys é no Access, acederes ao Query Design (não sei o nome em PT).

Nessa opção, basta adicionares as tabelas que pretendes fazer o query, e unir os campos chave (arrastas o campo de uma tabela para cima do equivalente noutra tabela).

Depois selecionas quais os campos de cada tabela que pretendes visualizar no resultado.

O Access gera o SQL necessário

Share this post


Link to post
Share on other sites
MaxHelmer

Podia ser algo assim:

SELECT tb_usuario.*, tb_departamento.nome_departamento, tb_cargo.nome_cargo
FROM tb_cargo INNER JOIN (tb_departamento INNER JOIN tb_usuario ON tb_departamento.cod_departamento = tb_usuario.cod_departamento) ON tb_cargo.cod_cargo = tb_usuario.cod_cargo

A forma mais facil de fazer estes querys é no Access, acederes ao Query Design (não sei o nome em PT).

Nessa opção, basta adicionares as tabelas que pretendes fazer o query, e unir os campos chave (arrastas o campo de uma tabela para cima do equivalente noutra tabela).

Depois selecionas quais os campos de cada tabela que pretendes visualizar no resultado.

O Access gera o SQL necessário

nelsonr, desta forma ficou ainda mais fácil o entendimento. Obrigado pela ajuda! :thumbsup:

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

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