DATAGRID COM CHAVE ESTRAGEIRA

BRUNOGOMES 15/10/2012 14:07:56
#412075
Pessoal, estou com um form q tem um datagrid q chama valores de conta recebidas...
é Uma tabela que possui cod, data, valor, observacoes e a chave estrangeira do Cliente..
Mas ao chamar no datagrid na parte do cliente fica o cod dele... queria saber se tem como mostrar ao inves do codigo.. mostrar o nome...

pra chamar pro datagrid esta assim:
Dim con As MySqlConnection
Dim cmd As MySqlCommand
Dim dt As New DataTable
con = New MySqlConnection
con.ConnectionString = [Ô]Persist Security Info=True;server=localhost;User Id=root; password=admin;database=workshopmanager[Ô]
con.Open()
cmd = con.CreateCommand
With cmd
cmd.CommandType = CommandType.Text
cmd.CommandText = [Ô]SELECT * FROM valorrecebidocliente[Ô]
dt.Load(cmd.ExecuteReader())
frm_TeladeContas.DataGridView1.DataSource = dt.Copy()
End With
con.Close()
BRUNOGOMES 15/10/2012 16:28:44
#412085
algueem ?
ALEVALE 15/10/2012 17:20:30
#412086
Mude o select de * para codigo do cliente, nome.
Ou altere a forma de popular o grid, coloque os valores diretamente nas colunas já criadas.
BRUNOGOMES 15/10/2012 17:26:11
#412088
olha minha tabela do banco de dados:
Create table ValorRecebidoCliente (
cod_valorrecebidocliente integer unsigned primary key not null auto_increment,
data_valorrecebidocliente varchar(30),
valor_valorrecebidocliente varchar(20),
observacoes_valorrecebidocliente varchar(100),
cod_Cliente integer unsigned not null,
Foreign Key (cod_Cliente) references Cliente (cod_Cliente) ON DELETE CASCADE) ENGINE=INNODB;


Dentro do datagrid, eu queria transformar esse cod_Cliente no nome_Cliente da tabela Cliente.... pq fica mostrando o numero e é zuado isso..

Eu pesquisei um poco e achei alguns lugares q falavam q tinha q usar o SELECT com o INNER JOIN... mas nao consegui fazer
FILMAN 15/10/2012 19:03:46
#412094
Você tera que usar o LEFT JOIN assim

[ô]Dessa maneira ira retornar todas as colunas da tabela valorrecebidocliente  mais o nome do cliente
SELECT VRC.*, CLI.nome_Cliente FROM valorrecebidocliente VRC LEFT JOIN tabela_cliente CLI ON (VRC.cod_Cliente = CLI.cod_Cliente)



Espero ter ajudado
BRUNOGOMES 15/10/2012 19:21:30
#412095
Eu troquei o [Ô]SELECT * FROM valorrecebidocliente[Ô] por esse codigo mais n funcionou...
continua mostrando o codigo...

ou para usar esse codigo... vou ter q trocar o codigo para carregar os dados na datagrid ??
FILMAN 15/10/2012 19:31:29
#412097
Cara você mudou o nome da tabela_cliente para a tabela correta e verificou o nome dos campos se estão iguais aos que encontra-se nas tabelas


????
BRUNOGOMES 15/10/2012 19:35:51
#412098
sim mudei... e conferi os otros
FILMAN 15/10/2012 19:41:05
#412099
Cara posta a estrutura da tabela clientes pra mim

BRUNOGOMES 15/10/2012 19:57:58
#412100
tabela valorrecebidocliente:
Create table ValorRecebidoCliente (
cod_valorrecebidocliente integer unsigned primary key not null auto_increment,
data_valorrecebidocliente varchar(30),
valor_valorrecebidocliente varchar(20),
observacoes_valorrecebidocliente varchar(100),
cod_Cliente integer unsigned not null,
Foreign Key (cod_Cliente) references Cliente (cod_Cliente) ON DELETE CASCADE) ENGINE=INNODB;


E a tabela Cliente:
Create table Cliente (
cod_Cliente integer unsigned primary key not null auto_increment,
nome_Cliente varchar(160) not null,
contato_Cliente varchar(20),
observacoes_Cliente varchar(100),
horadata_Cliente varchar(30),
tipo_Cliente varchar(10),
cod_PF integer unsigned not null,
Foreign key (cod_PF) references PF (cod_PF) ON DELETE CASCADE,
cod_Telefone integer unsigned not null,
Foreign Key (cod_Telefone) references Telefone (cod_Telefone) ON DELETE CASCADE,
cod_Endereco integer unsigned not null,
Foreign Key (cod_Endereco) references Endereco (cod_Endereco) ON DELETE CASCADE) ENGINE=INNODB;


E o codigo esta assim dentro do evento load do form:
Dim con As MySqlConnection
con = New MySqlConnection
con.ConnectionString = [Ô]Persist Security Info=True;server=localhost;User Id=root; password=admin;database=workshopmanager[Ô]
Dim cmd As MySqlCommand
Dim dt As New DataTable
cmd = con.CreateCommand
con.Open()
With cmd
cmd.CommandType = CommandType.Text
cmd.CommandText = [Ô]SELECT VRC.*, CLI.nome_Cliente FROM valorrecebidocliente VRC LEFT JOIN cliente CLI ON (VRC.cod_Cliente = CLI.cod_Cliente)[Ô]
dt.Load(cmd.ExecuteReader())
DataGridView1.DataSource = dt.Copy()
End With
con.Close()
OMAR2011 15/10/2012 20:18:09
#412102
Resposta escolhida
Consulta simples na qual fiz um teste agora e funcionou.

CommandText = [Ô]Select Cliente.Nome_Cliente,ValorRecebidoCliente.data_valorrecebidocliente,ValorRecebidoCliente.valor_valorrecebidocliente From Cliente,ValorRecebidoCliente Where ValorRecebidoCliente.cod_cliente=Cliente.cod_cliente[Ô].

Tiro e queda.
Valeu
Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas