
Musashi_RS
Membros-
Total de itens
107 -
Registro em
-
Última visita
Tudo que Musashi_RS postou
-
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
-
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
-
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
-
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
-
Respondi no outro tópico. Vlw.
-
É 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 = rs Se 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
-
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:
-
Beleza então, agora concordamos. Outra coisa que você falou eu não entendi. Você disse que o MS Flex Grid não funciona com ADO e par isso existe o MS Hierarquical Grid. Beleza, só que ontem eu fui testar e o MS Flex Grid funcionou normalmente com ADO. Já baixei eté outros projetos na net com acesso via ADO utilizando o M Flex Grid. Bom, tanto faz... :P Você sabe me dizer se há uma maneira rápida de "chamar" um recordset em um MS Flex Grid via código? Tipo, pra uns 30 mil registros. :huh: vlw
-
Beleza, já dei um olhada neles... só que nõ entendi o que você disse. Você falou que o MS Hierarquical Flex Grid é mais interativo queo DataGrid, só que o Flex tem as células trancadas, já o DataGrid não. Por que daria mais trabaho escrever no data grid? E como você escreve na mão no flex? Desculpe, mas eu xei bem o contrário... ^_^
-
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:
-
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ó. =P Resumindo, 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
-
É aí que está, a minha string (não a que eu te passei por engano) est´igual a sua. O.o vlw
-
Olá, Estava me perguntando, qual componente no estilo de grade (DBGrid, MSFlexGrid, etc) é o melhor e qual a finalidade de cada um. Bom, eu conheço só os dois, e observei que o DB Grid é melhor pra edição, pois eu posso clicar, selecionar o texto, o cursor fica piscando, etc. Já o MS Flex Grid, eu vi que não tem uma função de edição nativa, embora possa ser editado por meio do evento KeyPress, meio que na "gambiarra". Alguém sabe me dizer se é isso mesmo? Qual deles vocês usam? As finalidades de cada um é isso que eu disse mesmo? Existem outros melhores? Vlw
-
Desculpe, me houve um engano. Ta, mas entrei nesse site e dei uma olhada nas strings... Elas vão funcionar para qual versão do Access? Então minha string ficria assim? Set BD = New ADODB.Connection BD.CursorLocation = adUseClient BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False; Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\BDPaula.mdb;Exclusive=1;Uid=admin;Pwd=123;" 'BD.Open Está correto o modo que eu useia conesão? vlw
-
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.connection Public 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)?
-
No Módulo: Global BD As ADODB.Connection No formulário de cadastro de clientes: 'seção general Dim WithEvents TB As ADODB.Recordset Private Sub Form_Load() Set BD = New ADODB.Connection BD.CursorLocation = adUseClient BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.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 & "\BDPaula.mdb;Persist Security Info=False", adOpenStatic, adLockOptimistic ExibirDados End Sub Public Sub ExibirDados() TxtNome.Text = "" TxtEndereco.Text = "" TxtBairro.Text = "" TxtCidade.Text = "" TxtCEP.Text = "" TxtEstado.Text = "" TxtFone.Text = "" On Error Resume Next TxtNome.Text = TB!Nome TxtEndereco.Text = TB!Endereco TxtBairro.Text = TB!Bairro TxtCidade.Text = TB!Cidade TxtCEP.Text = TB!CEP TxtEstado.Text = TB!Estado TxtFone.Text = TB!Fone On Error GoTo 0 LblTotal.Caption = TB.AbsolutePosition & "/" & TB.RecordCount End Sub Formulário cadastro de vendas 'seção general Dim WithEvents TB As ADODB.Recordset Private Sub Form_Load() 'ABRINDO A CONEXÃO COM A TABELA TVENDAS Set BD = New ADODB.Connection BD.CursorLocation = adUseClient BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False" 'BD.Open Set TB = New ADOR.Recordset TB.Open "SELECT Codigo, NomeCliente, DataVenda, Produto, Valor FROM TVendas ORDER BY Codigo", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False", adOpenStatic, adLockOptimistic 'ABRINDO A CONEXÃO COM A TABELA TCLIENTES Set BD = New ADODB.Connection BD.CursorLocation = adUseClient BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False" 'BD.Open Set TB = New ADOR.Recordset TB.Open "SELECT Nome FROM TClientes ORDER BY Nome", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False", adOpenStatic, adLockOptimistic 'MOSTRANDO OS NOMES NO COMBO Do Until TB.EOF CboNome.AddItem TB.Fields("Nome") TB.MoveNext Loop End Sub Private Sub BtnSalvar_Click() On Error GoTo Salvar Set BD = New ADODB.Connection BD.CursorLocation = adUseClient BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False" 'BD.Open Set TB = New ADOR.Recordset TB.Open "SELECT Codigo, NomeCliente, DataVenda, Produto, Valor FROM TVendas ORDER BY Codigo", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False", adOpenStatic, adLockOptimistic 'Confirmação para salvar geristro If MsgBox("Desejá salvar as informações?", vbYesNo + vbQuestion, "Salvar venda!") = vbYes Then With TB .AddNew !Codigo = TxtCodigo.Text !NomeCliente = CboNome.Text !DataVenda = TxtData.Text !Produto = TxtProduto.Text !Valor = MskValor.Text .Update End With Else Exit Sub End If Exit Sub Salvar: If Err.Number = -2147217887 Then MsgBox "Registro duplicado!", vbInformation, "Novo!" TxtNome.SetFocus Exit Sub Else MsgBox "Erro ao adicionar novo registro!", vbInformation, "Novo!" 'TxtNome.SetFocus Exit Sub End If End Sub Formulário consulta de Vendas 'seção general Dim WithEvents TB As ADODB.Recordset Private Sub Form_Load() 'ABRINDO A CONEXÃO COM A TABELA TVENDAS Set BD = New ADODB.Connection BD.CursorLocation = adUseClient BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False" 'BD.Open Set TB = New ADOR.Recordset TB.Open "SELECT Nome FROM TClientes ORDER BY Nome", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BDPaula.mdb;Persist Security Info=False", adOpenStatic, adLockOptimistic 'MOSTRANDO OS NOMES NO COMBO TB.MoveFirst Do Until TB.EOF CboNomePesquisa.AddItem TB.Fields("Nome") TB.MoveNext Loop End Sub
-
Olá, coloquei uma senha em meu banco de dados pelo Access 2000. Porém quando vou acess´-lo via ADO, mesmo colocando o passqord e usuário, ele dá a seguinte menságem: Runt-time error -2147217843 Não é possível iniciar o aplicativo. O arquivo de informações do grupo de trabalho está faltando ou foi aberto em modo exclusivo por um outro usuário. Alguém pode me ajudar a colocar uma senha no BD e acessá-lo via ADO? ;) Vlw
-
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:
-
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
-
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.Open E 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, adLockOptimistic A 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
-
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
-
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
-
Pois é, só que o problema que eu enfrento sempre, é que eu desenvolvo todo o pograma no win XP e depois tenho que recompila-lo no windows 98, pois alguns controles (como o flash) mudam. Quando vou executar um programa no 98, feito no XP, que contenha mais componentes do que o padrão, sempre aparece o erro: "Unexpected error." Porém rodar um programa compilado no 98, tanto no próprio 98 quanto no Xp rodaram beleza. Vai saber... :mellow:
-
Olá, tenho outra dúvida relacionada á distribuição das aplicações. Existe alguma maneira de fazer um programa compatível com win 98 e xp? Em qual sistema operacional é mais recomendado compilar a aplicação? Como vocês lidam com esse dilema? :rolleyes:
-
Segurança Do Banco De Dados (resolvido)
pergunta respondeu ao Musashi_RS de Musashi_RS em Visual Basic
Ok, vou fazer tentar criar com o Access 2000 e usar ADO. Obrigado.