Ir para conteúdo
Fórum Script Brasil

Musashi_RS

Membros
  • Total de itens

    107
  • Registro em

  • Última visita

Tudo que Musashi_RS postou

  1. Beleza. To pegando o jeito agora. Vlw pessoal! =D
  2. OK. Quanto às instruções para Update e Delete, eu vi que para Update é só para alterar, pelo que vi. Mas como fica para adicionar um novo registro, tipo, se usa o AddNew? Como fica o critério para o Update? O.o E mais uma cois: eu estou iniciando o recordset no evento Load do form de consulta. Eu não preciso iniciá-lo mais, certo???? E também não preciso utilizar o método Close depois de cada consulta, certo?
  3. Ahhh bom, agora sim as coisas fazem sentido. Bah quebrei cabeça... Uma pergunta: qual a diferença entre as instruções: set rs = cnn.Execute(SQL) e cnn.Execute SQL Quanto às instruções para Update e Delete, eu vi que para Update é só para alterar, pelo que vi. Mas como fica para adicionar um novo registro, tipo, se usa o AddNew? Como fica o critério para o Update? O.o E mais uma cois: eu estou iniciando o recordset no evento Load do form de consulta. Eu não preciso iniciá-lo mais, certo???? E também não preciso utilizar o método Close depois de cada consulta, certo? vlw
  4. Olá, estou enfrentandoproblemas para salvar um registro. Antes eu utilizava o método Opens do recordset, mas agora estou fazendo o seguinte: set rs = cnn.Execute(SQL) Por exemplo, quando eu faço essa consulta, o recordset armazena os dados requisitados na query sql, certo? Por exemplo, se eu fizer: Inicio uma vez o recordset: Set rs = New ADODB.Recordset (Se eu não fechá-lo, eu não preciso mais iniciá-lo, certo?) Depois, quando for pesquisar um cliente, por exemplo: SQL = "SELECT * FROM TabelaClientes" set rs = cnn.Execute(SQL) SQL = "" Agora o recordset estaria aberto, com todos os dados armaxenados nelee, certo? Então, no caso de uma pesquisa como acima, o recordset acharia apenas um registro, no caso o cliente que foi pesquisado. Eu poderia alterar ou deletá-lo com um simples comando (rs.update ou rs.delet) certo? Eu preciso usar o método Close do recordset depois desse tipo de consulta? Se sim, eu preciso iniciá-lo novamente? Ou estou errado?
  5. Olá, no meu BD, eu permiti nos campos que o valor fosse Null, e funciona beleza quando eu chamo no recordset para exibir em textboxs e outros. Mas o MsFlexGrid não deixa colocar na célula um valor null, da um erro assim: "Run-time error 94: Invalid use of Null." PS. Eu não estou preenchendo o MsFlexGrid pela propriedade DataSourse, mas sim pela "textmatrix". Alguém poderia me ajudar a resolver isso? :blink:
  6. Olá, estou tentando fazer um SELECT no VB por período de datas, mas o recordset chama todos os registros sempre. Alguém poderia me ajudar? 'Abre o recordset de produtos C_SQL = "SELECT * FROM TOS WHERE DataEntrada >= #" & CDate(DTPicker1.Value) & "# and DataEntrada <= #" & CDate(DTPicker2.Value) & "# ORDER BY DataEntrada" MsgBox C_SQL Set TBSemi = BANCO.Execute(C_SQL) C_SQL = "" Vlw :P
  7. Por que você substitui a vírgula por ponto?
  8. Olá, em um banco de dados Access, para salvar um valor monetário através de um form do VB, qual a melhor forma? Esse campo está definido como Campo monetário no Access, já no formulário de cadastro ele é apenas um número real. O problema é que quando eu salvo o valor pelo form ele é gravado como inteiro. Alguém sabe a melhor maneira de salvar, se é usando a função Format no TextBox, ou alterando o tipo de campo no próprio banco de dados para numérico? Vlw
  9. Olá, criei um relatório através do Data Enviroment em conjunto com o Data Report. O problema que isso não é via código, pois vi em uma apostila e o meu banco possui senha. Quando coloquei a senha nas propriedades da conexão, lá no Data Enviroment, ela não é aceita. No entanto, na minha conection string ela é aceita sem problemas. Public Sub AbrirBanco() 'Abre a conexão com o banco de dados Set BANCO = New ADODB.Connection BANCO.CursorLocation = adUseClient BANCO.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\IPR\DB\DBS.mdb;Persist Security Info=False;Jet OLEDB:Database Password=******" BANCO.Open End Sub Alguém sabe o que eu posso fazer? Vlw
  10. Vou pesquisar sobre esse comando SELECT COUNT então. Vlw
  11. Olá, possuo um banco com várias tabelas (Clientes, produtos, pedidos, etc) e, no programa que estou fazendo gostari de informar logo no inicio do programa, uma quadro geral do banco, informando quantos clientes cadastrados, quantos produtos em estoque, quantos pedidos pendentes, etc. Estou fazendo pelo método Open do recordset, mas acho que é desperdício de memória e processamento, embora ainda não tenha notado lentidão. Estou fazendo assim: 'Abre a conexão com o banco de dados AbrirBanco Set TBSemi = New ADODB.Recordset '------------------------------- 'Abre o recordset (Semi) Set TBSemi = New ADODB.Recordset TBSemi.Open "SELECT * FROM TSemi UNION ALL SELECT * FROM TSemiAluno ORDER BY Tipo", BANCO, adOpenStatic, adLockOptimistic 'Informa no painel LblSemi.Caption = TBSemi.RecordCount TBSemi.Close '------------------------------- 'Abre o recordset (Pendencias) Set TBSemi = New ADODB.Recordset TBSemi.Open "SELECT * FROM TOS WHERE Situacao = 'Pendente'", BANCO, adOpenStatic, adLockOptimistic 'Informa no painel LblPendencias.Caption = TBSemi.RecordCount TBSemi.Close '------------------------------- 'Abre o recordset (Produtos) Set TBSemi = New ADODB.Recordset TBSemi.Open "SELECT * FROM TProdutos", BANCO, adOpenStatic, adLockOptimistic 'Informa no painel LblProdutos.Caption = TBSemi.RecordCount TBSemi.Close '------------------------------- 'Abre o recordset (Clientes) Set TBSemi = New ADODB.Recordset TBSemi.Open "SELECT * FROM TClientes", BANCO, adOpenStatic, adLockOptimistic 'Informa no painel LblClientes.Caption = TBSemi.RecordCount TBSemi.Close '------------------------------- 'Fecha o recordset Set TBSemi = Nothing 'Fecha o banco BANCO.Close Set BANCO = Nothing Esse método está certo? Pode melhorar em desempenho? Vlw :lol:
  12. Isso mesmo, não setei usuário. Exatamente, foi lá que coloquei a senha pro banco. Olha, a princípio, essa senha so protegeu o meu banco mesmo, os outros .mdbs abriram normalmente. falou :rolleyes:
  13. Aprece a minha msgbox. If LblEditMode.Caption = "Adicionando semicondutor..." Then 'Adiciona um novo registro RS1.AddNew End If 'Atribui os valores a tabela RS1!TIPO = Trim(TxtTipo.Text) RS1!Característica = Trim(TxtCarac.Text) RS1!Descrição = Trim(TxtDesc.Text) RS1!Terminais = Trim(TxtTerm.Text) RS1!Encapsulamento = Trim(TxtEnv.Text) RS1!Equivalente = Trim(TxtSubst.Text) RS1!Categoria = UCase(CboCat.Text) 'Grava o registro RS1.Update '---------------------------------------------- ErroDuplo: If Err.Number = -2147467259 Then MsgBox "O semicondutor " & TxtTipo.Text & " já está cadastrado!", vbExclamation, "Inclusão de Semicondutores" RS1.CancelUpdate RS1.MoveLast RS1.MoveFirst Exit Sub End If
  14. Olá, estou enfrentando um problema na hora de salvar um registro. No processo de gravação, logo após o comndo rs.Update, coloquei um tratamento de erros para verificar uma possível duplicação de dados: ErroDuplo: If Err.Number = -2147467259 Then MsgBox "O semicondutor " & TxtTipo.Text & " já está cadastrado!", vbExclamation, "Inclusão de Semicondutores" TBSemi.CancelUpdate TBSemi.MoveNext TBSemi.MovePrevious Exit Sub End If O que está acontecendo é o seguinte: após cadastrar um registro, se eu cadastrar outro eu não consigo, acusa o erro acima, de duplicidade. Só fechando o form e abrindo outra vez. Alguém sabe o que estou fazendo de errado? :huh:
  15. DEU CERTO! Finalmente... Utilizei a connection string para o banco de dados com senha apenas, na seção OLE DB. No entanto, reparei que existe outra connection informando também o usuário. pergunto, é necessário? Se eu não informar o usuário, quais os possíveis problemas que podem ocorrer? Outra coisa, que esquema do workgroup que você quis dizer? Vlw pela ajuda
  16. Desculpe a ignorancia, mas estou tendo que utilizar o Set rs = New ADODB.Recordset em todas as queries, inclusive sem usar o Close. Não é estranho? O.o
  17. Que esquem de workgroup é esse? Bom, mudei de estratégia. Criei o banco de dados pelo Access 2003 e converti para o formato 2000. No entanto eu ainda não consegui colocar a senha sem que haja erro. a rotina de conexão é essa: Public Sub AbrirBanco() 'Abre a conexão com o banco de dados Set BANCO = New ADODB.Connection BANCO.CursorLocation = adUseClient BANCO.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\IPR\DB\DB.mdb;User Id=Admin;Password=123;Persist Security Info=False" BANCO.Open End Sub Vlw
  18. Hmmm, entendi. Eu estava usando o set rs = Nothing em conjunto com o rs.close.. O último não "destroi" o recordset então? vlw
  19. Posso aproveitar esse tópico ainda para outra dúvida ou é melhor criar outro? Quando eu gravo ou deleto um registro via ADO, para que eu possa atializar um combo de nomes, por exemplo, é preciso abrir o recordset outra vez, ou eu posso simplesmente percorrer o recordset? 'Grava o registro rs.Update AbreRecordset 'Percorre o recordset rs.MoveLast rs.MoveFirst PreencheCombo PS. Não quiz colocar o código para preencher um combo. Outra dúvida: O que exatamente a instrução Set rs = New ADODB.Recordset faz? Tipo, sei que ele inicializa o objeto recordset, mas quero saber se preciso fazê-lo a cada pesquisa. E outra, depois de uma pesquisa, eu não estou fechando o recordset (Set rs = Nothing). Só fecho quando saio do form de consulta. Estou fazendo certo? Vlw
  20. Show de bola! :lol: Então o certo, para qualquer grid ou campo a ser preenchido, é sempre abrir o recordset com o objeto da conexão ativa? :lol: Bah, eu nunca iria desconfiar, pois no livro eu que estava estudando, o recordset era aberto com uma string, repetindo a ConnectionString passada na abertura do banco, da mesma forma que eu te passei no projeto. beleza então. Muito obrigado. ;)
  21. Macêdo, Só tem um problema, quando eu abria o recordset via código, eu conseguia exibir os seus campos nos TextBox do form (Text1.text = Tabela!Campo). Só que agora que não estou abrindo o recordset via código, eu não consigo exibir os dados onde o cursor parou. O grid preenche conforme a consulta SQL, mas não sei como exibir os dados nas caixas de texto. Kuroi, Cara, eu não entendo por que não preenche o grid. Olha o código: Set TBSemi = New ADODB.Recordset TBSemi.Open SQL, CNN, adOpenStatic, adLockOptimistic Set DataGrid1.DataSource = TBSemi ExibirDados Nesse caso, o recordset não está vazio, pois consigo exibir os dados de onde o cursor parou, nas caixas de texto. No entanto, a grade nem se mexe. A conexão com o banco já está aberta no Form_Load, o objeto connection está declarado como público no módulo, e na rotina de pesquisa eu abro o recordset (TBSemi), como visto no código acima. :blink:
  22. beleza Macêdo, ahco que isso vai resolver meu caso, pois esse volume de registros não irão envolver inclusão ou exclusão. É só pra consulta mesmo. Eu estva evitando ao máximo usar esse tipo componente para acesso a adados, mas acho que neste caso não haverá problema. Mas se houver um jeito via código, eu gostaria de saber. Vlw
×
×
  • Criar Novo...