Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DifusioN

O que eu estou fazendo aqui? É DAO, ADO ou oque?

Recommended Posts

Fala povo, seguinte...

 

Eu comecei a trampar recentemente em uma empresa que praticamente só produz com VB6, e eu não sabia nada de VB, apenas de C e um pouco de Java.

 

COmo o negócio é produção, fui logo olhando uns programa que eles tinham guardado e tal para ver como é e peguei o jeito da coisa....

 

Depois de um tempo eu fui pesquisar em materiais e dai fiquei meio confuso, afinal, o que eu estou fazendo aqui? É a maneira certa de guardar as informação e fazer as pesquisas em BD?

Olhem:

Private Sub OK_Click()
nome = DBCombo1.Text
   compara = "NOME =   '" & nome & "'"
   Datac.Recordset.FindFirst (compara)
 If Datac.Recordset.NoMatch = True Then

    Datac.Recordset.AddNew
    Datac.Recordset("NOME") = DBCombo1.Text
    Datac.Recordset("CPF") = Text4.Text
    Datac.Recordset("RG") = Text5.Text
    Datac.Recordset("END") = Text2.Text
    Datac.Recordset("N") = Text3.Text
    Datac.Recordset("BAIRRO") = Text8.Text
    Datac.Recordset("UF") = Combo1.Text
    Datac.Recordset("CEP") = Text9.Text
    Datac.Recordset("REFER") = Text10.Text
    Datac.Recordset("EMAIL") = Text11.Text
    Datac.Recordset("TEL1") = Text6.Text
    Datac.Recordset("CEL") = Text7.Text
    Datac.Recordset("TEL2") = Text12.Text
    Datac.Recordset.Update
    Datac.Refresh
  Else
    Datac.Recordset.Edit
    Datac.Recordset("NOME") = DBCombo1.Text
    Datac.Recordset("CPF") = Text4.Text
    Datac.Recordset("RG") = Text5.Text
    Datac.Recordset("END") = Text2.Text
    Datac.Recordset("N") = Text3.Text
    Datac.Recordset("BAIRRO") = Text8.Text
    Datac.Recordset("UF") = Combo1.Text
    Datac.Recordset("CEP") = Text9.Text
    Datac.Recordset("REFER") = Text10.Text
    Datac.Recordset("EMAIL") = Text11.Text
    Datac.Recordset("TEL1") = Text6.Text
    Datac.Recordset("CEL") = Text7.Text
    Datac.Recordset("TEL2") = Text12.Text
    Datac.Recordset.Update
    Datac.Refresh
    
End If
End Sub

Esse código é ao clicar no CommandButton, ele pesquisa o que está e um campo do Form, logo ele não encontrando..cria, do contrário, edita....

 

 

Está certo fazer assim? Eu vi nos livros e apostilas maneiras bem diferentes, usando aqueles treco de referenciar o banco de dados com aquelas Strings e tal.....( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _)

 

Eu esotu utilizando os "DATA" da vida para carregar os dados(o que caracteriza DAO certo?)

 

Alguém poderia me dar uma Luz?

Outra pergunta c for possível responder.....como utlizar os Relacionamentos dos BDs (de preferência Access) no momento das buscas? Eu faço aqui é criar em cada tabela algum campo que sei que tem em outra tabela e dai eu pego de uma e pesquiso na outra, ta certo?

 

 

Abraçoss e aguardo respostas =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá DifusioN.

 

Que bucha que você pegou heim, rs...

 

O que você viu sobre referenciar via strings é fazer conexão via código. Da forma que está em seu código, provalmente há em seu form um objeto que te permite a conexão (eu não gosto dele), pode ser um data ou um adodc. Se for data, é DAO, se for o outro é ADO. Vendo o código não me lembro.

 

Os relacionamentos você pode consultar em seu programa utilizando joins. Não há a necessidade de criar chaves estrangeiras para fazer esses relacionamentos, ok? Isso é usado se os dados são passados direto pelo access para evitar erros. Mas você pode controlar esses erros pelo programa.

 

E quanto ao seu código lá em cima, está correto seu pensamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pessoalmente não gosto de atrelar aos componentes as tabelas e/ou consultas porque fica muito pesado se o BD for grande e não é "profissional" fazer isto.

 

Após abrir a conexão com o BD, abre-se as tabelas com string sql, através dos recordsets, depois fecha direitinho e bola prá frente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá DifusioN.

 

Que bucha que você pegou heim, rs...

 

O que você viu sobre referenciar via strings é fazer conexão via código. Da forma que está em seu código, provalmente há em seu form um objeto que te permite a conexão (eu não gosto dele), pode ser um data ou um adodc. Se for data, é DAO, se for o outro é ADO. Vendo o código não me lembro.

 

Os relacionamentos você pode consultar em seu programa utilizando joins. Não há a necessidade de criar chaves estrangeiras para fazer esses relacionamentos, ok? Isso é usado se os dados são passados direto pelo access para evitar erros. Mas você pode controlar esses erros pelo programa.

 

E quanto ao seu código lá em cima, está correto seu pensamento.

 

Então, como funciona esse treco de usar códigos para a conexão? Poderia me passar apenas a ideia?

Sim, estou usando o Data para DAO, mas o problema é ter que usar o Access 97!!! xD..Mtu chato ficar convertendo e tal..

Tem como fazer dessa forma ai também com o ADODC?(dessa forma que faço com o DATA?)

 

Não entendi essa questão dos Joins, Join seria alguma ferramente? COnfiguração? Poderia me ajudar com isso?

Obrigado, valew!

 

 

Eu pessoalmente não gosto de atrelar aos componentes as tabelas e/ou consultas porque fica muito pesado se o BD for grande e não é "profissional" fazer isto.

 

Após abrir a conexão com o BD, abre-se as tabelas com string sql, através dos recordsets, depois fecha direitinho e bola prá frente.

 

Certo, poderia me dar exemplo de algum código resumido e tal? Só para entender como funciona e depois comparar com os códigos por ai mais complexos para poder aprender?

 

Também estou querendo usar os SQL da vida para fazer as pesquisar, mas terei que me adaptar....

 

Abraços e valew pela resposta!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No fórum tem muitos exemplos de conexões feitas via código.

 

Vou postar alguns exemplos aqui:

http://forum.imasters.com.br/index.php?/topic/360113-preencher-datagrid-com-botao-vb6

http://forum.imasters.com.br/index.php?/topic/361046-sqlsever200-com-vb

http://forum.imasters.com.br/index.php?/topic/353573-resolvido%26nbsp%3Bregistro-anterior-e-proximo

 

Quanto a join, é uma "propriedade" da linguagem SQL, não de VB. Veja se isso te ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, valew por passar os links!!(desculpe a demora na respota..mas a semana está terrível.....provas na facul e mtu trampO! xD)

 

Agora, me falem uma coisa, é mais rápido fazer consultas com SQL ou da forma que eu faço(comparando resultados)?

 

Outra coisa, quando eu uso o SELECT * FROM "tal" (exemplo...)

 

Elee irá listar todos os resultados da tabela "tal" certo?

 

Tem como usar esse código por exemplo em um MSFlexGtrid ou então em um DBCombo?

 

Abraços e aguardo respostas =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, valew por passar os links!!(desculpe a demora na respota..mas a semana está terrível.....provas na facul e mtu trampO! xD)

 

Esquenta não, isso é assim mesmo...

 

Agora, me falem uma coisa, é mais rápido fazer consultas com SQL ou da forma que eu faço(comparando resultados)?

 

Não entendi. Como assim comparando resultados? Acho que independente do que quis dizer, tudo é SQL...

 

Outra coisa, quando eu uso o SELECT * FROM "tal" (exemplo...)

 

Elee irá listar todos os resultados da tabela "tal" certo?

 

Tem como usar esse código por exemplo em um MSFlexGtrid ou então em um DBCombo?

 

Tem sim, vou postar um pequeno exemplo de código para preencher um flex, aí você tenta adaptar pro seu:


private cn as adodb.connection
private rs as adodb.recordset

private sub PreencheGrid
dim i as integer

set cn = new adodb.connection
cn.open "string de conexão"

cn.cursoslocation = adUseCliente

set rs = new adodb.recordset
rs.open "select * from exemplo", cn, adopenDinamic, adOpenKeySet

if not rs.eof then

'deixa seu flex com a mesma quantidade de colunas de sua tabela sendo a primeira linha fixa:
msflex.colls = rs.fields.count
msflex.fixedrow = 1

'preeche os nomas das colunas com os nomes dos campos:
for i = 0 to rs.fiels.count - 1
   msflex.textmatrix(0,i) = rs.fields(i).name
next

'preenche o flex com os dados da tabela:
do until rs.eof
   for i = 0 to rs.fiels.count - 1
      msflex.textmatrix(rs.absoluteposition,i) = rs.fields(i).value
   next
   rs.movenext
loop

end if

end sub

Olha, eu acho que não dará erro não, mas caso dê poste aí o que houve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.