CONEXAO ENTRE VB6 COM VARIAS TABELAS DENTRO DE 1BD

IRONMANSJC 25/08/2011 23:31:51
#382517
Olá Galera,

Esse é meu 1° tópico aqui e queria que vocês me ajudassem.... é o seguinte:

Estou desenvolvendo em Visual Basic 6, um programa pra uma Imobiliaria, e não consigo alterar o RecordSource do meu DATA para uma outra tabela no meu BD, veja a imagem do meu Form:

http://img812.imageshack.us/img812/8263/topicov.jpg

Só quero que durante a execução do Programa, quando a pessoa selecione [Ô]Industrial[Ô] no combo box, o RecordSource do Banco mude para [Ô]tabela_industrial[Ô] (para salvar os dados na tabela_industrial do BD).

Olhem o código do Botão Salvar (dá erro na parte do [Ô]Recordset.AddNew):

CÓDIGO:
Private Sub btSalvar_Click()
If txtNome.Text = [Ô][Ô] Or txtEndereco.Text = [Ô][Ô] Or cbTipo.Text = [Ô]Tipo de Imovel[Ô] Then
MsgBox [Ô]Verifique se algum dado está faltando.[Ô], vbExclamation, [Ô]Atenção![Ô]
Else
If cbTipo.Text = [Ô]RESIDENCIAL[Ô] Then
bdCliente.RecordSource = [Ô]tabela_residencial[Ô]
bdCliente.Recordset.AddNew
bdCliente.Recordset.nome = txtNome.Text
bdCliente.Recordset.endereco = txtEndereco.Text
bdCliente.Recordset.Update
MsgBox [Ô]Cliente [Ô] & txtNome.Text & [Ô] cadastrado nos interesses em imoveis do tipo [Ô] & cbTipo.Text, vbInformation, [Ô]Cliente cadastrado com Sucesso![Ô]
Else
If cbTipo.Text = [Ô]COMERCIAL[Ô] Then
bdCliente.RecordSource = [Ô]tabela_comercial[Ô]
bdCliente.Recordset.AddNew
bdCliente.Recordset.nome = txtNome.Text
bdCliente.Recordset.endereco = txtEndereco.Text
bdCliente.Recordset.Update
MsgBox [Ô]Cliente [Ô] & txtNome.Text & [Ô] cadastrado nos interesses em imoveis do tipo [Ô] & cbTipo.Text, vbInformation, [Ô]Cliente cadastrado com Sucesso![Ô]
Else
If cbTipo.Text = [Ô]RURAL[Ô] Then
bdCliente.RecordSource = [Ô]tabela_rural[Ô]
bdCliente.Recordset.AddNew
bdCliente.Recordset.nome = txtNome.Text
bdCliente.Recordset.endereco = txtEndereco.Text
bdCliente.Recordset.Update
MsgBox [Ô]Cliente [Ô] & txtNome.Text & [Ô] cadastrado nos interesses em imoveis do tipo [Ô] & cbTipo.Text, vbInformation, [Ô]Cliente cadastrado com Sucesso![Ô]
Else
If cbTipo.Text = [Ô]INDUSTRIAL[Ô] Then
bdCliente.RecordSource = [Ô]tabela_industrial[Ô]
bdCliente.Recordset.AddNew
bdCliente.Recordset.nome = txtNome.Text
bdCliente.Recordset.endereco = txtEndereco.Text
bdCliente.Recordset.Update
MsgBox [Ô]Cliente [Ô] & txtNome.Text & [Ô] cadastrado nos interesses em imoveis do tipo [Ô] & cbTipo.Text, vbInformation, [Ô]Cliente cadastrado com Sucesso![Ô]
End If
End If
End If
End If
End If
End Sub


Valeu GALERA E OBRIGADO PELA ATENÇÃO.
FEDERHEN 26/08/2011 09:31:02
#382534
Estas 4 tabelas não poderiam ser agrupadas em uma tabela unica contendo apenas mais um campo TIPO para indicar 1-RESIDENCIAL,2-COMERCIAL,3-RURAL,4-INDUSTRIAL ???
VELDRAME 26/08/2011 10:30:58
#382540
Concordo com FEDERHEN.
Mas respondendo sua pergunta.

Data.RecordSource = [Ô] blá,blá,blá... [Ô]

Porque vc não usa um Adodc é bem melhor de se trabalhar (na minha opnião)
IRONMANSJC 26/08/2011 13:07:48
#382561
Primeramente, obrigado pelas respostas!

FEDERHEN, eu até pensei nisso. Mas depois, tem um outro Form, em que estarão só os clientes cadastrados em um determinado tipo de Imovel. E não sei como filtrar isso. (obs: No outro form, estou usando um MSFLEX Grid para mostrar os dados da tabela)

Se tiver um jeito de filtrar, vcs poderiam postar para mim? (Uso o BD Access, sem MYSQL!)

e VELDRAME, poderia especificar sobre ADODC? Desde já agradeço galera!

Abraço.
FEDERHEN 26/08/2011 14:04:46
#382567
Bom, eu trabalho com comandos SQL e ficaria algo mais ou menos assim:

With msFlexGrid1
.Rows = 1
.FormatString = [Ô]CODIGO|NOME[Ô]
.ColWidth(0) = 500
.ColWidth(1) = 1200

rs.Open [Ô]Select * Tabela Where Tipo=[ô]1[ô] Order by Nome[Ô], con, adOpenKeyset, adLockOptimistic
Do Until rs.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = rs!Codigo
.TextMatrix(.Rows - 1, 1) = rs!Nome
rs.MoveNext
Loop
rs.Close
End With
IRONMANSJC 26/08/2011 17:13:13
#382590
Hum..e não tem como eu aproveitar aquele BD em Access?

Ahh, não tem como fazer o seguinte:

No 2° Form, existe uma ComboBox com as opções (RESIDENCIAL,COMERCIAL,RURAL e INDUSTRIAL), e eu queria que ao selecionar um Item (Exemplo RURAL), filtrasse no MSFLEX GRID, só os registros em que o Campo TIPO fossem RURAL.

Tem como fazer isso? (Pode ser em MYSQL mesmo, só que precisaria me dar um pequeno tutorial, pois não manjo nada de SQL)

Abraço!
FEDERHEN 29/08/2011 08:37:42
#382696
Sim, voce pode fazer isso.
Não sei como é o seu form, se voce atualiza no evento change do combo ou tem um botão para atualizar o flexgrid, mas masta colocar o código acima que vai funcionar.

With msFlexGrid1
.Rows = 1
.FormatString = [Ô]CODIGO|NOME[Ô]
.ColWidth(0) = 500
.ColWidth(1) = 1200

rs.Open [Ô]Select * Tabela Where Tipo=[ô]1[ô] Order by Nome[Ô], con, adOpenKeyset, adLockOptimistic
Do Until rs.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = rs!Codigo
.TextMatrix(.Rows - 1, 1) = rs!Nome
rs.MoveNext
Loop
rs.Close
End With


Note que sembre ele fará o preenchimento do flexgrid a partir de um comando select em cima da tabela.
IRONMANSJC 29/08/2011 11:57:54
#382712
Tem alguma coisa de SQL no código q me passou?
Estou mandando em anexo a imagem do Form que terá que filtrar o campos [Ô]Tipo[Ô]
OBS: Nome do ComboBox = cbTipo
Nome do MSFLEX GRID = tabela
Não estou usando nenhum Data neste form, tenho q usar?

Então ficaria assim:

Private Sub cbTipo_Change()
With tabela
.Rows = 1
.FormatString = [Ô]CODIGO|NOME[Ô]
.ColWidth(0) = 500
.ColWidth(1) = 1200

tabela.Open [Ô]Select * Tabela Where Tipo=[ô]1[ô] Order by Nome[Ô], con, adOpenKeyset, adLockOptimistic
Do Until rs.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = rs!Codigo
.TextMatrix(.Rows - 1, 1) = rs!Nome
tabela.MoveNext
Loop
tabela.Close
End With
End Sub


Obrigado, estou tentando aqui
Tópico encerrado , respostas não são mais permitidas