CONSULTA A VARIAS TABELAS EM SQL

GAMISTIK 29/11/2006 19:35:24
#187052
Então, eu faço isso, através de uma função em um módulo...

Public Function ConectaBanco() As Boolean
ConectaBanco = False
Set cConn = New ADODB.Connection
cStrConn = "Provider=Microsoft.Jet.OLEDB.4.0; "
cStrConn = cStrConn & "Data Source=" & App.Path & "\BD\BD.mdb;"
cStrConn = cStrConn & "Persist Security Info=False;"
cStrConn = cStrConn & "Jet OLEDB:database Password="
cConn.Open cStrConn
Set cStrConn = Nothing
ConectaBanco = True
End Function


por isso, no exemplo eu coloquei lá [If ConectaBanco = True Then...]
ESLEYSANCHES 29/11/2006 19:37:38
#187053
Pode-se tentar também assim:

SELECT Codigo, Nome, nm_compra, data_compra FROM TB_FORNECEDORES, TB_COMPRA

De uma olhadinha no exemplo amigo !!

Abraços !!
GAMISTIK 29/11/2006 19:47:14
#187055
Rapaz, tu é fera hein! Agora deu certo, esse último código que você me passou funcionou direitinho! Agora, suponhamos que eu queira por exemplo, exibir a compra nº 0001, eu teria que usar a cláusula WHERE, certo? Tipo: (...WHERE nm_compra = '" & txtCodCompra.text & "'...). Até ai tudo bem, pq tanto o numero da compra, qto a data, o nome do fornecedor e seu codigo estão na tb_compras... Mas e o CPF do fornecedor que está na tb_Fornecedores? Com essa condição, como eu faria para exibí-lo no relatório??? Cara desculpa te atrapalhar, mas é que eu to precisando conseguir fazer isso!!!
ESLEYSANCHES 29/11/2006 19:51:01
#187056
Deixa eu ver se entendi, você quer exibir os campos Codigo, Nome, nm_compra, data_compra, CPF cujo o valor da tabela TB_COMPRA seja 1 certo ?

Tente assim:

SELECT Codigo, Nome, CPF, nm_compra, data_compra FROM TB_FORNECEDORES, TB_COMPRA WHERE nm_compra='1'

Assim que você precisa amigo ?

Abraços !!
GAMISTIK 29/11/2006 20:13:34
#187057
E mais ou menos isso... Tipo

Queria no DataReport mais ou menos isso:

após digitar o numero da compra a ser impressa na text1.text e clicar na commandButton1....

exibir isso:
--------------------------------------------------------------------------
CODIGO DA COMPRA: 00001 ---------> campo nm_Compra, está na tb_Compra.
DATA DA COMPRA: 29/11/2006 -----> campo data_Compra, está na tb_Compra.
NOME FORNECEDOR: NONONONONO -----> campo Nome, está na tb_Fornecedores.
CPF: 00000000000 ----> campo CPF, está na tb_Fornecedores.
--------------------------------------------------------------------------
PRODUTOS: QTD: VAL. UNIT. VAL TOTAL
Produto1 10 1,00 10,00 --> produto1 e produto2 vêm de
Produto2 10 2,00 20,00 --> tb_CompraProdutos, campo produto.

as quantidades também vêm do
tb_CompraProdutos, campo quantidade.

o valor unitario também vem
tb_CompraProdutos, campo valor_produto

o valor total também vem da
tb_CompraProdutos, campo valor_total
--------------------------------------------------------------------------
Total: -- ---- 30,00
--------------------------------------------------------------------------
Ufa... !!! srsr

USUARIO.EXCLUIDOS 29/11/2006 20:58:25
#187063
Resposta escolhida
Colega, vc tem que relacionar as tabelas, e nesse caso vai ter que abrir duas consultas, uma pra montar o cabeçalho do relatório e outra os detalhes, tente adaptar o código:

Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.ActiveConnection = cConn

sql = "SELECT A.nm_compra, A.fornecdor, B.CNPJ, B.UFIEST, B.IEST " & _
"FROM TB_COMPRA A, TB_FORNECEDORES B " & _
"WHERE A.cod_fornecedor = B.Codigo AND A.nm_compra = " & NrCompra
rst.Open sql

If rst.EOF = True Then
MsgBox "Nenhum registro encontrado!", vbExclamation
Exit Sub
End If
With DataReport1
'***Criando o cabeçalho***'
'Section4 é a que vem como padrão do Report Header,
'lblFornecedor, lblCNPJ, ..., são os nomes dos captions de labels (RptLabel)
'que vc deve adicionar no relatório e alterar seus NOMES (Name)
.Sections("Section4").Controls("lblCompra").Caption = rst("nm_compra")
.Sections("Section4").Controls("lblFornecedor").Caption = rst("nm_fornecedor") & " - " & rst("fornecedor")
.Sections("Section4").Controls("lblCNPJ").Caption = rst("CNPJ")
.Sections("Section4").Controls("lblIE").Caption = rst("UFIST") & " - " & rst("IEST")
'***Lista dos produtos***'
'No relatório vc add textboxes (RptTextBox) na sessão detalhes (Details)
'no DataSource destes vc põe o nome dos campos
sql = "SELECT * FROM TB_COMPRAPRODUTOS " & _
"WHERE nm_compra = " & NrCompra
rst.Open sql
Set .DataSource = rst
.Show
End With


Qualquer dúvida poste...flw
GAMISTIK 29/11/2006 21:06:06
#187066
O MATIOLI, blz cara? Então, eu consegui fazer o que eu queria, só que eu usei aquele groupheader do datareport, e agora fica dando um erro assim : "Report Sections do not match data source"... Porque será cara???
ESLEYSANCHES 29/11/2006 23:19:06
#187087
Amigo, não sei como está utilizando, mais os dados você está colocando na seção Datils né ?

Abraços!!
GAMISTIK 30/11/2006 10:24:27
#187125
Então ESLEYSANCHES, eu quero quebra, por isso usei o group header


Fica assim:
==================================================================
Dentro da GROUPHEADER
==================================================================
COMPRA Nº [tb_Compras.nm_compra]
DATA: [tb_Compras.data_compra]
FORNECEDOR: [tb_Fornecedores.Nome]
CPF: [tb_Fornecedores.CPF]
==================================================================
Dentro de DETAILS
===========================================================
+-COD +-PRODUTO +-QTD +-VAL UNIT +-VAL TOTAL
| 01 | Produto1 | 100 | 1,00 | 100,00
| 02 | Produto2 | 200 | 1,00 | 200,00
| ======|===============|=======|===========|=============
| TOTAL | | | | 300,00
| ======|===============|=======|===========|=============
| | | | |
| | | | +->tb_CompraProdutos.valor_total
| | | |
| | | |-->tb_CompraProdutos.valor_unitario
| | |
| | +-->tb_CompraProdutos.quantidade
| |
| +-->tb_CompraProdutos.produto
|
+--> tb_CompraProdutos.cod_produto

ENTAO AMIGO, é ISSO AE QUE EU QUERO FAZER, SERà QUE é POSSÃÅ’VEL???
Página 2 de 2 [19 registro(s)]
Tópico encerrado , respostas não são mais permitidas