JUNTAR TABELAS

JOAO.SOARES 05/03/2014 18:02:11
#435553
queria juntar duas tabelas mostrar o seu conteudo em um msflexgrid sera possivel ?
MOUSER 05/03/2014 18:39:07
#435554
Qual Banco de Dados vc está usando? SQL Server, Acess, Excel ou outro tipo? Se for o SQL, eu tenho um projeto q tem o comando q pucha informação de duas tabelas, mas eu usei no DataGridView. se quiser testar no msflexgrid!
JOAO.SOARES 06/03/2014 11:35:35
#435592
eu estou usando acess .
MOUSER 09/03/2014 17:42:13
#435728
no caso, não sei exatamente o comando de pesquisa, mas posso te ajudar usando Dataset ou DataReader
com Dataser, fica mais ou menos assim:

Public Function Lista(ByVal strDescricao As String) As DataSet

Dim strQuery As New StringBuilder
strQuery.Append([Ô]Select cod,Produto,ValorVen,Codbar From t_Produto Where Produto like [ô]%[Ô] & strDescricao & [Ô]%[ô][Ô])

Dim _cldBancoDados As New cldBancoDados
Return _cldBancoDados.RetornaDataSet(strQuery.ToString)
End Function

Dentro das aspas, vc coloca o comando de pesquisa, só q vc vai ter q fazer isso duas vezes com nomes diferentes, por exemplo: Lista1 e Lista2

Com DataReader ficara mais ou menos assim:
Public Function Lista(ByVal Prod As String) As SqlDataReader
Dim strQuery As String
strQuery = [Ô]select * from t_Produto Where Produto=[ô][Ô] & Prod & [Ô][ô][Ô]
Dim _cldBancoDados As New cldBancoDados
Return _cldBancoDados.RetornaDataReader(strQuery.ToString)
End Function

No caso vc muda a importação do SQLDATAREADER pelo do ACCESS, e altere a função do strQuery dentro das aspas para o comando de pesquisa dentro do Script do Access...
Como estou muito acostumado com o SQL, não sei exatamente o comando, mas se quiser posso pesquisar e enviar o comando por mensagem interna para você... e no DataReader como no DataSet, vc vai ter q criar dois, um para primeira tabela, e outro para a segunda, depois na hora de jogar no formulario vai ficar mais ou menos assim:

Dim drDados As System.Data.SqlClient.SqlDataReader

drDados = agenda.ListarUsuario(txtCod.Text)

If drDados.Read Then
txtBairro.Text = CStr(drDados([Ô]Bairro[Ô]))
txtCEP.Text = CStr(drDados([Ô]CEP[Ô]))
txtCod.Text = CStr(drDados([Ô]cod[Ô]))
txtComplemento.Text = CStr(drDados([Ô]Complemento[Ô]))
txtData.Text = CStr(drDados([Ô]Data[Ô]))
txtEmail.Text = CStr(drDados([Ô]Email[Ô]))
txtEndereco.Text = CStr(drDados([Ô]Endereco[Ô]))
txtNome.Text = CStr(drDados([Ô]Nome[Ô]))
txtNr.Text = CStr(drDados([Ô]nr[Ô]))
txtObs.Text = CStr(drDados([Ô]Obs[Ô]))
txtTelCel.Text = CStr(drDados([Ô]TelCel[Ô]))
txtTelRec.Text = CStr(drDados([Ô]TelRec[Ô]))
txtTelRes.Text = CStr(drDados([Ô]TelRes[Ô]))
txtCidade.Text = CStr(drDados([Ô]Cidade[Ô]))
preencheUF()
txtUF.Text = CStr(drDados([Ô]UF[Ô]))
cbUF.Text = CStr(drDados([Ô]UF[Ô]))

End If
drDados = Login.Listar(txtCod.Text)
If drDados.Read Then
txtUser.Text = CStr(drDados([Ô]Usuario[Ô]))
End If

Este é um exemplo q recomendo no caso de um DataReader. Para o dataset, só se for para apresentar em uma DataGridView ou algo similar.
NILSONTRES 09/03/2014 19:27:19
#435731
Citação:

SQL Server, Acess, Excel


Desses Três, só o SQLSever é banco de dados.

Para selecionar duas tabelas utilize: INNER JOIN
Exemplo:
SELECT *from produtos INNER JOIN produtos_inventario ON produtos.Cod_Prod = produtos_inventario.Cod_Prod

Existem instruçôes sql enorme nesses casos, essa é uma bem simples.
OMAR2011 09/03/2014 20:04:26
#435732
Mouser, você tem que responder de forma literal.
Seu código não serve para ele. Isto não funciona em vb6
Nilsontres.
Ele quer juntar duas tabelas distintas tipo.
Select Cliente.Nome,Cliente.Endereco,Produto.Descricao.Produto.Valor From Cliente,Produto.
Eu acredito que seja desta forma.
Estranho,nunca fiz isto e acredito que não vai dar certo.
JOAO.SOARES 09/03/2014 20:49:37
#435736
o problema e que a instruçao so da um registro quando havia de aparecer dois e mostralos num flexgrid
CLEVERTON 09/03/2014 20:54:13
#435739
JOAOSOARES

vc teria que dar mais detalhes, vc pretende unir dois selects ? ou unir duas, tres tabelas numa consulta usando JOIN ?

passe seu código, e a faça uma tabelinha no excel, manda o print pra sabermos o resultado que vc quer que seja mostrado no grid.
MARCELO.TREZE 10/03/2014 11:04:44
#435763
acho que ta faltando detalhes ai, você deveria postar o select que fez até então para sabermos onde está o erro.

mas o mais plausível, é o que o NILSONTRES postou, ou seja usar o inner join para fazer a consulta em duas tabelas.

MOUSER 10/03/2014 12:18:52
#435768
Eu estou usando a lógica para auxilia-lo na criação do código, mas o que o Marcelo Treze acabou de dizer pode ser mais útil do que o meu exemplo. Mas concordo com todos... Desculpa se atrapalhei...
Citação:

:
acho que ta faltando detalhes ai, você deveria postar o select que fez até então para sabermos onde está o erro.

mas o mais plausível, é o que o NILSONTRES postou, ou seja usar o inner join para fazer a consulta em duas tabelas.

JOAO.SOARES 11/03/2014 17:22:29
#435858
O codigo sql e este. obrigado
.
sql1 = [Ô]Select from avarias,pagamentos where avarias.codigo = pagamentos.npagamento[Ô]

Set emp1 = New ADODB.Recordset
emp1.Open sql1, cnn, adOpenStatic, adLockOptimistic, adCmdText
emp1.Requery
Total.Caption = emp1.RecordCount
Carrega_grid_pagamentos_todos





Private Sub Carrega_grid_pagamentos_todos()

Dim ld As Integer

gridRelat.Rows = 1
gridRelat.Rows = emp1.RecordCount + 1

ld = 1

Do While Not emp1.EOF

gridRelat.TextMatrix(ld, 1) = emp1!codigo
gridRelat.TextMatrix(ld, 1) = emp1!Npagamento
[ô]///////
If Not IsNull(emp1!nom) Then
gridRelat.TextMatrix(ld, 2) = emp1!nom
Else
gridRelat.TextMatrix(ld, 2) = [Ô][Ô]
End If


If Not IsNull(emp1!nomeempresa) Then
gridRelat.TextMatrix(ld, 2) = emp1!nomeempresa
Else
gridRelat.TextMatrix(ld, 2) = [Ô][Ô]
End If
[ô]//////
If Not IsNull(emp1!Data) Then
gridRelat.TextMatrix(ld, 3) = emp1!Data

Else
gridRelat.TextMatrix(ld, 3) = [Ô][Ô]
End If
[ô]/////
If Not IsNull(emp1!tota) Then
gridRelat.TextMatrix(ld, 4) = emp1!tota
Else
gridRelat.TextMatrix(ld, 4) = [Ô][Ô]
End If
[ô]////
If Not IsNull(emp1!TotHoras) Then
gridRelat.TextMatrix(ld, 5) = emp1!TotHoras
Else
gridRelat.TextMatrix(ld, 5) = [Ô][Ô]
End If

If Not IsNull(emp1!Liquidado) Then
If emp1!Liquidado = [Ô]Não[Ô] Then


gridRelat.Row = ld
gridRelat.Col = 6
gridRelat.Text = [Ô]Nao[Ô]
gridRelat.CellFontBold = True
gridRelat.CellBackColor = &HC0C0FF
gridRelat.CellForeColor = vbWhite

[ô] gridRelat.TextMatrix(l, 6) = [Ô]Não[Ô]
Else


gridRelat.Row = ld
gridRelat.Col = 6
gridRelat.Text = [Ô]Sim[Ô]
gridRelat.CellFontBold = True
gridRelat.CellBackColor = &HC0FFC0
gridRelat.TextMatrix(ld, 6) = [Ô]Sim[Ô]

End If

Else
gridRelat.TextMatrix(ld, 6) = [Ô][Ô]
End If
[ô]////
gridRelat.Col = 7
[ô] gridRelat.Row = r
gridRelat.CellFontName = [Ô]Wingdings[Ô]
gridRelat.CellFontSize = 14
gridRelat.Text = strChecked

[ô] sql3 = [Ô]UPDATE pagamentos set Ntemp = [ô]Sim[ô] where npagamento= [ô][Ô] & gridRelat.TextMatrix(ld, 1) & [Ô][ô][Ô]
[ô] Set emp3 = New ADODB.Recordset
[ô] emp3.Open sql3, cnn, adOpenStatic, adLockOptimistic, adCmdText
[ô] Set emp3 = Nothing


ld = ld + 1

emp1.MoveNext

Loop
End Sub
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas