Jump to content
whize13

[Resolvido] VB+BD Não consigo ver os dados no DataGridView

Recommended Posts

whize13

da = New OleDb.OleDbDataAdapter("SELECT N_Socio FROM Clube INNER JOIN DadosPessoais ON Clube.NIF = DadosPessoais.NIF ", cn)
    da.Fill(dt)
    Me.DataGridView1.DataSource = dt.DefaultView

O problema é que aparece no DataGridView a o campo selecionado mas não aparece os dados inseridos nela

Share this post


Link to post
Share on other sites
nelsonr

Isso é Access? Já experimentaste executar esse comando diretamente na base de dados, para ver o que retorna?

Tens registos com o mesmo NIF em ambas as tabelas?

Share this post


Link to post
Share on other sites
whize13

ainda não exprimentei, sim NIF é chave primaria composta na tabela Clube juntamente com N_Socio, e NIF tambem é chave primária na tabela DadosPessoais

Share this post


Link to post
Share on other sites
nelsonr

ainda não exprimentei, sim NIF é chave primaria composta na tabela Clube juntamente com N_Socio, e NIF tambem é chave primária na tabela DadosPessoais

Não foi isso que perguntei.

Tens dados nas duas tabelas com o mesmo NIF?

No access 2007 da para ver em sql?

Sim dá, mas não tenho o 2007 não sei dizer o nome das opções.

Vê se isto ajuda: http://www.ehow.com/how_5769158_run-script-microsoft-access-2007.html

Share this post


Link to post
Share on other sites
whize13

era por não ter nas duas tabelas eu pus mas para variar não gravei, mas se eu agora quiser por outros campos basta fazer outra vez isto so mudar o nome dos campos e tabelas certo?:

da = New OleDb.OleDbDataAdapter("SELECT N_Socio FROM Clube INNER JOIN DadosPessoais ON Clube.NIF = DadosPessoais.NIF ", cn)
	    da.Fill(dt)
	    Me.DataGridView1.DataSource = dt.DefaultView

Share this post


Link to post
Share on other sites
nelsonr

Depende do que pretendes com "por outros campos".

Se quiseres ler logo varios campos ai é so pores o nome depois do N_Socio, separado por virgula.

Podes tambem indicar de qual a tabela que estás a ler, exemplo Clube.NSocio, DadosPessoais.NIF, etc

Share this post


Link to post
Share on other sites
whize13

Eu quero acrescentar mais campos ao DataGridView um que estão noutra tabela e que é chave estrangeira na tabela DadosPessoais

Share this post


Link to post
Share on other sites
whize13

Tenho de fazer varios?

a = New OleDb.OleDbDataAdapter("SELECT N_Socio FROM Clube INNER JOIN DadosPessoais ON Clube.NIF = DadosPessoais.NIF ", cn)
			    da.Fill(dt)
			    Me.DataGridView1.DataSource = dt.DefaultView

Share this post


Link to post
Share on other sites
whize13

Erro de sintaxe (operador em falta) na expressão de consulta 'Clube.NIF = DadosPessoais.NIF INNER JOIN ON Morada.Cod_Postal = DadosPessoais.Cod_Postal'.

 da = New OleDb.OleDbDataAdapter("SELECT Clube.N_Socio, DadosPessoais.Nome, BI_CC, Morada.Cod_Postal, Morada.Morada FROM DadosPessoais INNER JOIN Clube ON Clube.NIF = DadosPessoais.NIF INNER JOIN ON Morada.Cod_Postal = DadosPessoais.Cod_Postal ", cn)
    da.Fill(dt)
    Me.DataGridView1.DataSource = dt.DefaultView

Share this post


Link to post
Share on other sites
nelsonr

Tens de começar a habituar adicionar campos aos poucos, para tentares perceber quando dá erro.

Tens uma tabela chamada Morada? No INNER JOIN falta a tabela antes do ON

Share this post


Link to post
Share on other sites
whize13

Tenho, mas continua a dar o mesmo erro: Erro de sintaxe (operador em falta) na expressão de consulta 'Clube.NIF = DadosPessoais.NIF INNER JOIN Morada ON DadosPessoais.Cod_Postal = Morada.Cod_Postal'.

o meu codigo esta assim agora

da = New OleDb.OleDbDataAdapter("SELECT Clube.N_Socio, DadosPessoais.Nome, BI_CC, Morada.Cod_Postal, Morada.Morada FROM DadosPessoais INNER JOIN Clube ON Clube.NIF = DadosPessoais.NIF INNER JOIN Morada ON DadosPessoais.Cod_Postal = Morada.Cod_Postal ", cn)
    da.Fill(dt)
    Me.DataGridView1.DataSource = dt.DefaultView

Share this post


Link to post
Share on other sites
nelsonr

Experimenta assim:

SELECT Clube.N_Socio, DadosPessoais.Nome, Morada.Cod_Postal
FROM (Clube INNER JOIN DadosPessoais ON Clube.NIF = DadosPessoais.NIF) INNER JOIN Morada ON DadosPessoais.Cod_Postal = Morada.Cod_Postal

Se quiseres fazer querys sem te preocupares com os inner joins, usa o query designer do Access. Facilita bastante

Share this post


Link to post
Share on other sites
whize13

Assim resultou ja consigo por os campos da tabela Morada, o tal Query designer tem no access?

Share this post


Link to post
Share on other sites
whize13

Boa cena, fiz o que disseste e agora aparecem todos os campos que quero so que sem dados xD

Share this post


Link to post
Share on other sites
nelsonr

Se não tem dados é porque os campos relacionados não têm dados em todas as tabelas.

Ou seja, tens de ter na tabela Clube um registo com o NIF que existe na tabela DadosPessoais, e na Morada um codigo postal igual ao que existe na tabela de DadosPessoais

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.