Musashi_RS Postado Setembro 19, 2007 Denunciar Share Postado Setembro 19, 2007 (editado) Olá, estou com uma dúvida para acesso a dados com ADO.Eu declarei em um Módulo a variável:Global BD As ADODB.ConnectionDepois, em um formulário, na GERAL eu declarei:Dim WithEvents TB As ADODB.RecordsetE no evento Form_Load desse form, eu coloquei:Private Sub Form_Load() Set BD = New ADODB.Connection BD.CursorLocation = adUseClient BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Banco.mdb;Persist Security Info=False" BD.Open Set TB = New ADOR.Recordset TB.Open "SELECT Nome, Endereco, Bairro, Cidade, CEP, Estado, Fone FROM TClientes ORDER BY Nome", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Banco.mdb;Persist Security Info=False", adOpenStatic, adLockOptimistic ExibirDadosEnd SubNo entanto, na apostila que estou estudando, em algun dos outros forms não tem a instrução "BD.Open".Pergunto: quando devo usá-la? E para que ela serve realmente?Obrigado. :D Editado Setembro 19, 2007 por Musashi_RS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 19, 2007 Denunciar Share Postado Setembro 19, 2007 o Open serve pra abrir, estabelecer a conexao com o banco de dados. de uma olhada, como a variavel é global, ele vale pro projeto todo. se você seta uma propriedade nela em formulario qualquer, quando você abrir otro formulario, a mudanca q você fez ainda vai estar valendo.ou seja, se você abrir a conexao uma vez não é necessario abrir de novo a não ser q você feche. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 19, 2007 Autor Denunciar Share Postado Setembro 19, 2007 Ok, então eu poderia fazer um formulário "PAI", desse MDI form, e logo na abertura do programa seria estbelecida essa conexão, ficando aberta até eu sair da aplicação?O que você recomenda?Vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 19, 2007 Denunciar Share Postado Setembro 19, 2007 sim, o q costuma-se fazer é abrir a conexao sempre no primero formulario do programa e dexa-la sempre aberta durante a execucao. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 21, 2007 Autor Denunciar Share Postado Setembro 21, 2007 Então essas instruções eu declaro apenas uma vez? Set BD = New ADODB.Connection BD.CursorLocation = adUseClient BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Banco.mdb;Persist Security Info=False" BD.OpenE essas nos outros forms? Set TB = New ADOR.Recordset TB.Open "SELECT Nome, Endereco, Bairro, Cidade, CEP, Estado, Fone FROM TClientes ORDER BY Nome", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Banco.mdb;Persist Security Info=False", adOpenStatic, adLockOptimisticA pergunta pode ser idiota, mas o formulário inicial, que abriu o BD, precisa ficar aberto? Ou quado esse form é fechado o BD continua aberto?Vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 21, 2007 Denunciar Share Postado Setembro 21, 2007 se a variavel é publica (ou global), o form não precisa ficar aberto não. alias, se ela tivesse sido delcarada so nesse form, ele estando fechado ou aberto, você não conseguiria acessar a conexao em nenhum outro form.quanto ao recordset, se ele esta declarado no proprio formulario você precisa abri-lo toda vez sim (se declarar como publica no module, não). mas acho q era pra ser ADODB em vez de ADOR, não??agora pra abrir normalmente se passa a conexao já aberta, tipo assim:TB.Open "SELECT Nome, Endereco, Bairro, Cidade, CEP, Estado, Fone FROM TClientes ORDER BY Nome", BD, adOpenStatic, adLockOptimistic alias, o q costuma-se fazer tb é, pra executar as querys, em vez de ficar fechando e abrindo o recordset toda hora, usar o metodo execute da conexao. tiop assim: Set TB = BD.Execute("Select * From Tabela") Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 24, 2007 Autor Denunciar Share Postado Setembro 24, 2007 Cara, agora eu não sei te dizer se o certo é ADOBD ou ADOR, pois esse é um exemplo de um livro. Além disso, o VB permite as duas opções e eu não sei a diferença das duas.Só pra lembrar, query é uma pesquisa, certo?Eu poderia utilizar o método execute sem abrir o recordset?vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 25, 2007 Autor Denunciar Share Postado Setembro 25, 2007 Eu denovo. Cara eu estava olhando como estabelecer uma conexão com ADO, recordset também e tal, e me confundi mais ainda. Nessa apostila o autor utiliza o COMMAND ao invés de CONNECTION.Seria pedir muito que você me mandasse ou postasse aqui a forma correta (e necessária) para: - estabelecer uma conexão com o banco de dados apenas um vêz; - "chamar" o recordset corretamente sempre que for necessário;...É tanta declaração que eu m confundo, por exemplo: no módulo se declara uma variável global pra a conexão com o banco de dados (Global ou public BD as ADODB.connection)....mas no form também é declarada ou atribuida uma variável para a mesma coisa: (Set BD = New ADOBD.connection).Não entendo o porquê... :huh: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 25, 2007 Denunciar Share Postado Setembro 25, 2007 Cara, agora eu não sei te dizer se o certo é ADOBD ou ADOR, pois esse é um exemplo de um livro. Além disso, o VB permite as duas opções e eu não sei a diferença das duas.Só pra lembrar, query é uma pesquisa, certo?Eu poderia utilizar o método execute sem abrir o recordset?a esse ADOR é da biblioteca Microsoft ActiveX Data Objects RecordSet. nunca usei essa biblioteca, mas se funcionar ai pode usar sem problemas.query é qualquer comando SQL, tipo Select, Insert, Update, etc.pode usar o execute sem abrir sim, mas você deve iniciar o objeto antes. tipo assim:Set rs = New ADODB.RecordSet Eu denovo. Cara eu estava olhando como estabelecer uma conexão com ADO, recordset também e tal, e me confundi mais ainda. Nessa apostila o autor utiliza o COMMAND ao invés de CONNECTION. Seria pedir muito que você me mandasse ou postasse aqui a forma correta (e necessária) para: - estabelecer uma conexão com o banco de dados apenas um vêz; - "chamar" o recordset corretamente sempre que for necessário; ...É tanta declaração que eu m confundo, por exemplo: no módulo se declara uma variável global pra a conexão com o banco de dados (Global ou public BD as ADODB.connection). ...mas no form também é declarada ou atribuida uma variável para a mesma coisa: (Set BD = New ADOBD.connection). Não entendo o porquê... :huh: o objeto Command serve pra executar um comando no RecordSet. mas ele não é necessario, você pode usar sem. ele facilita quando você vai usar Procedures com parametros, etc. nos comandos mais simples normalmente não utilizamos. - pra estabelecer a conexao só uma vez, é só declarar o objeto como Public ou Global no Module e usar o codigo do seu outro post, onde você passa a Connection String e usa o metodo Open. - cara, normalmente, só uso o Execute cada vez q for executar qualquer coisa. e em querys q não retornam nada (como Insert e Update) nem precisa pro RecordSet, pode fazer simplesmente: BD.Execute "Insert Into Tabela(Campos) Values(Valores)"não chamo o metodo Open do RecordSet nenhuma vez no programa.- no module, a conexao esta declarada. mas note q ela não é uma variavel e sim um objeto, e os objetos precisam ser inicializados. pra isso serve o Set BD = New ADOBD.connection. apesar q você pode fazer direto no module: Global ou public BD as New ADODB.connection Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 26, 2007 Autor Denunciar Share Postado Setembro 26, 2007 Ok, então como você disse que eu sempre preciso iniciar um objeto, eu posso declarar no módulo o objeto (Public BD as ADOBD.connection) e logo abaixo eu já posso inicializá-lo (Public BD = New ADOBD.connection), ficando assim:Public DB As ADOBD.connectionPublic BD = New ADOBD.connectionÉ isso?E quanto ao objeto Command, eu preciso colocar algum parâmetro além de iniciar o objeto recordset (Set RS = New ADOBD.recordset)? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 26, 2007 Denunciar Share Postado Setembro 26, 2007 Ok, então como você disse que eu sempre preciso iniciar um objeto, eu posso declarar no módulo o objeto (Public BD as ADOBD.connection) e logo abaixo eu já posso inicializá-lo (Public BD = New ADOBD.connection), ficando assim:Public DB As ADOBD.connectionPublic BD = New ADOBD.connectionÉ isso?não é nd disso... quero dizer, é isso mas tem uns erros. primeiro q o certo é ADODB e não ADOBD. segundo q você declarou o objeto com nome de DB e depois tentou inicializar com o nome de BD. tercero q o Public é usado só na hora de declarar e não pra inicializar. se você quer criar e inicializar de uma vez, seria assim:Public DB As New ADODB.Connection E quanto ao objeto Command, eu preciso colocar algum parâmetro além de iniciar o objeto recordset (Set RS = New ADOBD.recordset)? essa eu não entendi direito. parametro onde?? pra usar o objeto Command, você tem q passar a query pra propriedade CommandText, a conexao pra propriedade ActiveConnection, ai você simplesmente executa assim: Set RS = Com.Executebom ve se era essa mesmo a sua duvida, qualquer coisa posta ae Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 26, 2007 Autor Denunciar Share Postado Setembro 26, 2007 OK, as coisas estão se esclarecendo. :lol: Agora eu entendi porque as vezes eu via o "Public DB As New ADODB.Connection" e não sabia se o objeto estava sendo criado ou inicializado. Eu não sabia que dava pra fazer em um comando só. =PResumindo, colocando um "Public DB As New ADODB.Connection" no módulo já é o suficiente?Depois num formulário eu só declaro a conexão e a query? Ou tem algo mais prático?Quanto ao command, eu entendi agora.vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 27, 2007 Denunciar Share Postado Setembro 27, 2007 pondo só Public DB As New ADODB.Connection no module resolve sim, mas você tb tem q abrir a conexao depois, ne (passar a connectionstring e acessar o metodo Open).foi isso q você quis dizer aqui??Depois num formulário eu só declaro a conexão e a query? Ou tem algo mais prático?como assim declarar a query?? você fala do recordset??pode ser tb, mas nd impede de você criar um recordset tb publico. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 27, 2007 Autor Denunciar Share Postado Setembro 27, 2007 pondo só Public DB As New ADODB.Connection no module resolve sim, mas você tb tem q abrir a conexao depois, ne (passar a connectionstring e acessar o metodo Open).foi isso q você quis dizer aqui??Depois num formulário eu só declaro a conexão e a query? Ou tem algo mais prático?como assim declarar a query?? você fala do recordset??pode ser tb, mas nd impede de você criar um recordset tb publico.Exatamente, eu estou um pouco perdido para me referir aos objetos e tal, mas a gente se entende.Eu estva ciente que eu preciso abrir a conexão depois, lá no form. E quanto a minha pergunta sobre query, eu me referia sim ao recordset. :P Bom, tu disse que eu também posso declarar a "abertura do recordset" (não sei como chamar) no módulo? Você quer dizer, como criar uma rotina pública (Public sub) com a abertura da conexão e tambéma abertura do recordset? Isso é melhor?Outra dificuldade minha é na hora da pesquisa: digamos que eu declare tudo público (abertura da conexão e recordset) dentro de uma Publix sub no módulo chamada Abrir. Depois, eu chamo a rotina Abrir no evento Form_Load do formulário, estabelecendo a conexão e abrindo o recordset. Até aí tudo bem?Então, se eu quiser realizar uma pesquisa via SQL, eu preciso chamar a rotina abrir outra vêz no evento BotãoPesquisa_Click, por exemplo? Como se faz? :huh: Vlw :lol: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 27, 2007 Denunciar Share Postado Setembro 27, 2007 Bom, tu disse que eu também posso declarar a "abertura do recordset" (não sei como chamar) no módulo? Você quer dizer, como criar uma rotina pública (Public sub) com a abertura da conexão e tambéma abertura do recordset? Isso é melhor?quis dizer q você pode declarar e inicializar o RecordSet no proprio Module tipo assim:Dim rs As New ADODB.RecordSet mas você tb pode fazer essa sua funcao sem problemas. Outra dificuldade minha é na hora da pesquisa: digamos que eu declare tudo público (abertura da conexão e recordset) dentro de uma Publix sub no módulo chamada Abrir. Depois, eu chamo a rotina Abrir no evento Form_Load do formulário, estabelecendo a conexão e abrindo o recordset. Até aí tudo bem? Então, se eu quiser realizar uma pesquisa via SQL, eu preciso chamar a rotina abrir outra vêz no evento BotãoPesquisa_Click, por exemplo? Como se faz? :huh: você só chamaria ela uma vez (no Form_Load, pode ser). e ela seria só pra abrir a conexao e não o recordset (pode ser tb o recordset mas não tem necessidade). uma vez aberta a conexao, a não ser q você use o metodo Close alguma hora no seu programa, ela vai ficar aberta ate quando o programa for fechado (nesse caso tb é de costume fechar a conexao e todos os objetos abertos no Unload do form principal - ou seja, quando é encerrada a execucao do programa - pra liberar a memoria). como eu disse, o RecordSet ou você usa o comando Open cada vez q for executar um SQL e depois fecha, ou não precisa abrir nunca, somente executar com o execute da conexao (ou do command). tipo assim: Set rs = cn.Execute(sql) ou Set rs = cm.Executeonde cn é um objeto Connection e cm um Command. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 28, 2007 Autor Denunciar Share Postado Setembro 28, 2007 Show, fui testar ontem e, agora que estou vendo o post, vi que fiz bem isso mesmo. Agora entendi essa parte de conexão com o banco e do recordset. :lol: Porém, como eu disse, ontem fui testar o que discutimos aqui, e vi que para chamar um recordset no MS Flex Grid via código, isto é, sem usar o componente ADO DATA Control, o processo é super lento! (em torno de 1 minuto) Deve haver uma maneira de chamar na mesma velocidade que o componente chama, senão não tem condições... :o Eu fiz o que você disse acima, declarei e inicialize o o objeto connection e apenas declarei o objeto recordset no modulo, pois não precisava inicializá-lo logo no inicio. Isso tudo utilizando aquela rotina "Abrir".Fui fazer o teste para preencher um MS Flex Grid com todos os registross da tabela (20 mil) e foi uma lerdesa só. Eu pergunto porque quando eu utilizo o componente ADO Data Control, ele chama e preenche super rápido.Você sabe o que pode ser?Vlw :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 28, 2007 Denunciar Share Postado Setembro 28, 2007 Fui fazer o teste para preencher um MS Flex Grid com todos os registross da tabela (20 mil) e foi uma lerdesa só. Eu pergunto porque quando eu utilizo o componente ADO Data Control, ele chama e preenche super rápido.Você sabe o que pode ser?hum, acredito q foi o q eu acabei de postar no otro tópico. como esta o codigo onde ele preenche o Flex Grid?? você esta alterando pela propriedade TextMatrix linha por linha, coluna por coluna, certo?? se for isso, é normal q ele demore já q ele vai estar executando varias linhas de codigo durante o processo todo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Setembro 28, 2007 Autor Denunciar Share Postado Setembro 28, 2007 (editado) É exatamente, depois de chamar o recordset, é iniciado um loop que vai até o ultimo registro gerado no recordset. Eu já imaginava que era por isso que demora tanto. O código está assim:Private Sub BtnPesq1_Click() Dim SQL As String Set TABELA = Nothing SQL = InputBox("Informe uma Query:", "Pesquisa SQL") If SQL = "" Then Exit Sub TABELA.Open SQL, CNN, adOpenStatic, adLockOptimistic 'FormataGrade Grade.Row = 1 Do Until TABELA.EOF With Grade .Cols = 7 .Row = .Row + 1 .Row = .Rows - 1 .TextMatrix(.Row, 1) = TABELA.Fields("Tipo") .TextMatrix(.Row, 2) = TABELA.Fields("Caracteristica") .TextMatrix(.Row, 3) = TABELA.Fields("Descricao") .TextMatrix(.Row, 4) = TABELA.Fields("Terminal") .TextMatrix(.Row, 5) = TABELA.Fields("Envolucro") .TextMatrix(.Row, 6) = TABELA.Fields("Equivalente") TABELA.MoveNext End With LblTotal = TABELA.AbsolutePosition LblTotal.Refresh Loop If Grade.Rows - 1 > 0 Then Grade.Row = 1 End If End Sub Porém, no outro Tópico você postou um comando que eu acho que vai resolver o meu problema. Set MSHFlexGrid1.DataSource = rsSe eu colocar esse comando, eu não precisarei preencher a grade via Textmatrix, linha por linha em um loop? diz que sim, diz que sim.Se puder me mostrar como fica o código eu agradeço.Vlw Editado Setembro 28, 2007 por Musashi_RS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Setembro 29, 2007 Denunciar Share Postado Setembro 29, 2007 Porém, no outro Tópico você postou um comando que eu acho que vai resolver o meu problema.Set MSHFlexGrid1.DataSource = rsSe eu colocar esse comando, eu não precisarei preencher a grade via Textmatrix, linha por linha em um loop? diz que sim, diz que sim.Se puder me mostrar como fica o código eu agradeço.se você quer tanto eu digo q sim. com esse comando ele preenche o grid todo de uma vez. mas so funciona com um dataset DAO. pra um dataset (ou recordset) ADO, você tem q usar o Hierarchical Flex Grid. o codigo é exatamente como eu passei, onde MSHFlexGrid1 é o nome do seu grid e rs o nome do seu recordset. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Outubro 1, 2007 Autor Denunciar Share Postado Outubro 1, 2007 Cara, eu testei com o MS Hierarchical Flex Grid, como você disse, e preencheu penas um linha. Mesmo que eu formate a grade antes, como por exemplo colocar o número de línhas = ao recordcount do recordset, ele retorna em apenas uma linha. E também não entendo por que o recordcount é ihual a -1 sempre. :huh: falou Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Outubro 3, 2007 Denunciar Share Postado Outubro 3, 2007 cara, pra o seu grid ficar só com uma linha a unica coisa q me vem na cabeca é q o seu select só retorna um registro mesmo.e quanto ao RecordCount, isso é problema de permissao, já foi comentado aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=107398antes de abrir sua conexao, adicione a linha:cn.CursorLocation = adUseClient Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Outubro 3, 2007 Autor Denunciar Share Postado Outubro 3, 2007 Deu certo! Kuroi :lol: O problema era de interface mesmo... ¬¬ Eu havia declarado uma variável CNN como string para guardar a conexão apenas uma vez, para depois usar somente a variável CNN. Porém eu não me liguei que não havia declarado a variável como publica. :P Vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Outubro 3, 2007 Autor Denunciar Share Postado Outubro 3, 2007 (editado) Poxa, não sei o que está acontecendo, de repente o MSH Flex Grid não está mais preenchendo por completo. Tipo, eu chamo a consulta, o RecordCount do recordset confirma o número total, ou seja, está correto, mas na grade ele só preenche até a linha 2048.Por que será? :blink:segue o código inteiro:Option Explicit Public BANCO As ADODB.Connection Public TABELA As ADODB.Recordset Private Sub Form_Load() Set BANCO = New ADODB.Connection BANCO.CursorLocation = adUseClient BANCO.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\IPR\DB\DB.mdb;Persist Security Info=False" BANCO.Open Set TABELA = New ADODB.Recordset TABELA.Open "SELECT * FROM Tsemi WHERE Tipo LIKE '%B%' ORDER BY Tipo", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\IPR\DB\DB.mdb;Persist Security Info=False", adOpenStatic, adLockOptimistic Set Grade.DataSource = TABELA End Sub Private Sub Grade_Click() MsgBox Grade.Rows & " ---- " & Grade.Row End Sub Editado Outubro 3, 2007 por Musashi_RS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Outubro 3, 2007 Denunciar Share Postado Outubro 3, 2007 é, esse é um pau do hierarchical flex grid. de uma olhada aqui: http://support.microsoft.com/kb/194653/pt-br Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Outubro 4, 2007 Autor Denunciar Share Postado Outubro 4, 2007 Ok, usei a propriedade Clip do MS Hierarquical Flex Grid e funcionou. Porém, quando me bateu o desespero eu fui tentar usar o Data Grid (você disse que funciona com ADO) da mesma forma que o MSH Flex Grid, mas não deu certo.Tipo, usei Set DataGrid1.Datasourse = rs, mas não apareceu nada na grade. Sabe me dizer se é possível preencher o Data Grid da mesma forma que o Hierarquical? Ele tem o mesmo bug?Vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Macêdo Postado Outubro 4, 2007 Denunciar Share Postado Outubro 4, 2007 MusashiPara preencher o Datagrid faço da seguinte forma, ponho no Form_Load:With Adodc1 .ConnectionString = cnn_Conexão .CommandType = adCmdText .RecordSource = "select * from tabela" .RefreshEnd WithDesta forma o controle fica ligado à minha conexão, o que não irá dar erro de localização de BD como quando se configura o Controle ADODC pelas propriedades, além de utilizar SQL para configurar os dados que quero que retorne no DataGrid, e acho o DataGrid um controle que possui muitas qualidades de configuração que ainda não encontrei em nenhum outro GRID.OBS: não trabalho com o ADODC propriamente dito! ou seja, só utilizo da forma acima para preencher o DataGrid e mais nada, todas as consultas, inclusões, exclusões e todas outras rotinas são via Código. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Musashi_RS
Olá, estou com uma dúvida para acesso a dados com ADO.
Eu declarei em um Módulo a variável:
Global BD As ADODB.Connection
Depois, em um formulário, na GERAL eu declarei:
Dim WithEvents TB As ADODB.Recordset
E no evento Form_Load desse form, eu coloquei:
Private Sub Form_Load()
Set BD = New ADODB.Connection
BD.CursorLocation = adUseClient
BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Banco.mdb;Persist Security Info=False"
BD.Open
Set TB = New ADOR.Recordset
TB.Open "SELECT Nome, Endereco, Bairro, Cidade, CEP, Estado, Fone FROM TClientes ORDER BY Nome", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Banco.mdb;Persist Security Info=False", adOpenStatic, adLockOptimistic
ExibirDados
End Sub
No entanto, na apostila que estou estudando, em algun dos outros forms não tem a instrução "BD.Open".
Pergunto: quando devo usá-la? E para que ela serve realmente?
Obrigado. :D
Editado por Musashi_RSLink para o comentário
Compartilhar em outros sites
39 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.