
Marco Canhoto
Membros-
Total de itens
50 -
Registro em
-
Última visita
Tudo que Marco Canhoto postou
-
Olá a todos! tenho um formulário em VB6 que possui duas combobox e um DataGrid. A idéia é que no combo cbo eu escolha entre 3 opções. Dependendo da Opção a combo pesq seja preenchida com dados dessa tabela escolhida. Vejam o código: Private Sub cbo_Click() If cbo.Text = "Paciente" Then While Not rs3.EOF pesq.AddItem rs3!nome rs3.MoveNext Wend Else If cbo.Text = "Unidade" Then While Not rs2.EOF pesq.AddItem rs2!codigo & " - " & rs2!descricao & " - " & rs2!responsavel pesq.ItemData(pesq.NewIndex) = rs2!codigo rs2.MoveNext Wend Else If cbo.Text = "Procedimento" Then While Not rs1.EOF pesq.AddItem rs1!descricao rs1.MoveNext Wend End If End If End If End Sub O problema é que cada opção só preenche a combo pesq apenas uma vez! por exemplo, eu escolho a opção "Paciente" e ele preenche. Depois eu mudo para alguma outra opção e também é preenchida. Só que ao escolher alguma opção pela segunda vez, o combo pesq esvazia! alguém sabe como posso fazer isso? Obrigado! Pessoal, já consegui a solução! É só adicionar o codigo rs.Requery que ele busca os dados novamente. vejam como ficam no código: Private Sub cbo_Click() If cbo.Text = "Paciente" Then rs3.Requery While Not rs3.EOF pesq.AddItem rs3!nome rs3.MoveNext Wend Else If cbo.Text = "Unidade" Then rs2.Requery While Not rs2.EOF pesq.AddItem rs2!codigo & " - " & rs2!descricao & " - " & rs2!responsavel pesq.ItemData(pesq.NewIndex) = rs2!codigo rs2.MoveNext Wend Else If cbo.Text = "Procedimento" Then rs1.Requery While Not rs1.EOF pesq.AddItem rs1!descricao rs1.MoveNext Wend End If End If End If End Sub Desculpem aí o tópico, mas agora serve pelo menos pro pessoal conhecer, ne?
-
Boa tarde! Estou montando um relatório que vai buscar dados de um BD e abaixo deverá conter um texto fixo. Só que o texto tem muitas linhas. Como faço para adicionar esse texto fixo no DataReport? desde já obrigado.
-
Erro na função autocompletar em combobox
pergunta respondeu ao Marco Canhoto de Marco Canhoto em Visual Basic
Funcionou cara! Show de bola, valeu! -
Olá a todos! Estou criando uma aplicação que tem diversas funções como cadastro de produtos, fornecedores, registro de entrada, controle de estoque, saída desses materiais, livro fiscal, etc. Eu criei um módulo para a conexão que contém o seguinte código para a conexão: Public cn As New ADODB.Connection Public rs As New ADODB.Recordset Public rs2 As New ADODB.Recordset Public cmd As New ADODB.Command Public cmd2 As New ADODB.Command Public sql As String _____________________________________________________________________ Public Sub carrega() If Not cn.State = adStateOpen Then cn.Open "DSN=local" 'produto sql = "SELECT * FROM produto" With cmd Set .ActiveConnection = cn .CommandType = adCmdText .CommandText = sql End With With rs .LockType = adLockPessimistic .CursorType = adOpenKeyset .CursorLocation = adUseClient .Open cmd End With 'grupo sql = "select * from grupo" With cmd2 Set .ActiveConnection = cn .CommandType = adCmdText .CommandText = sql End With With rs2 .LockType = adLockPessimistic .CursorType = adOpenKeyset .CursorLocation = adUseClient .Open cmd2 End With Vejam que para cada tabela, eu criei um recordset e um command. Gostaria de saber se há como eu acessar várias tabelas sem ter que ficar criando tanto recordset e command ou se existe algum modo de conexão mais simples, porém que não dê conflitos na hora de lidar com valores nulos. Por exemplo: Public cn As New ADODB.Connection Public rs As New ADODB.Recordset Public sql As String _____________________________________________________________ cn.Open "DSN=local" sql = "select * from produtos" rs.Open sql, cn, 2, 3 O problema é que quando eu uso dessa segunda forma, ele passa direto por uam condição de valores nulos que eu criei, tentando pegar os dados da tabela, e dando erro, uma vez que não encontra nada. No fim das contas, estou usando a primeira opção, mas gostaria de saber se existe alguma forma mais simples, sem declarar tantos recodsets, commands, etc. Desde já muito obrigado.
-
Olá a todos! Estou usando uma função de autocompletar em uma combobox que retirei desse link: http://scriptbrasil.com.br/forum/index.php?showtopic=103757 funcionar, ela funciona. O problema é que quando eu digito um caracter, ele em retorna o segundo registro correspondente e não o primeiro! Exemplo: A combobox carrega tre registros de uma tabela. são eles: 001 002 003 Quando eu digito '0' no campo da combobox, a função autocompleta o registro 002, ao invés de autocompletar o registro 001! O que deve ser modificado nesse código? Desde já agradeço a atenção.
-
Não consigo me conectar a outras máquinas
pergunta respondeu ao Marco Canhoto de Marco Canhoto em MySQL
Beleza Denis? Eu devo criar esse usuário na tabela user.mysql? O que eu devo preencher nos campos, pois são vários... -
Olá a todos! Instalei o Mysql Server em duas máquinas dentr da rede aqui do trabalho. Só que não consigo me conectar da máquina 1 para acessar o bando de dados da máquina 2 e vice-versa. Na hora de me conectar com o Query Browser ou então por uma DSN usada em uma aplicação em VB6, ele dá erro de conexão dizendo que o host da maquina 1 não está autorizada a cessar o ip da máquina 2. Na hora de me conectar eu digito assim: Server Host: 123.123.1.123 >>>>>> IP da máquina 2 na rede UserName: nome de usuario local da máquina 2 PassWord: senha do usuário local da maquina 2 Default Schema: test
-
Olá a todos! Criei uma aplicação em VB6 e quando vou usar o Package & Deployment Wizard para criação do Setup da aplicação, ele cria uma pasta muito grande para a aplicação, cerca de 30MB! Como estou usando apenas o mysql connector para criar a DSN de conexão, não sei se todas aquelas dll's que são adicionadas no pacote são realmente necessárias ao programa. Alguém pode me ajudar dizendo quais eu realmente devo usar no meu caso e quais eu posso descartar, para que o setup não fique tão grande? Desde já agradeço a atenção!
-
Certo, mas como eu construo isso no mysql. Entendo que devo formatar o número, mas não sei escrever a função. Poderia me ajudar?
-
Olá a todos! tenho um campo de numero em que consta no mysql como DECIMAL(10,0). Quando eu gravo o registro 1234567 ele aceita e mantem o registro dessa forma, mas se eu quero gravar 1.234.567, ele não aceita dizendo que é um valor decimal incorreto. Só que eu preciso gravar o número na forma 1.234.567 como valor numérico mesmo. Que tipo de dados eu devo usar nessa coluna e como faço para formatar números? Desde já agradeço.
-
Olá a todos! Estou com problemas para carregar campos em textboxes a partir de um item de uma combobox Eu escolho um item de uma combo e a partir desse item, os demais textboxes são preenchidos com os dados referentes aquele registro escolhido na combo. O problema é que alguns campos tem valores nulos e quando eu clico na combobox pra escolher o item pela primeira vez, os item são preenchidos normalmente, mas se faço uma segunda vez, dá o abominável erro 94: Invalid use of Null. Já tentei de várias formas. Assim: txtdesc.Text = IIf(IsNull(rs!descricao) = True, "", (rs.Fields.Item(0))) Assim: If IsNull(rs("descricao").Value) Then txtdesc.Text = "" Else txtdesc = rs.Fields.Item(0).Value End If e de várias outras formas econtradas nesse fórum e em outros sites google afora, mas todos resultam no mesmo erro 94. Abaixo segue o código inteiro. É um public sub que é acionado no evento click da combobox: =============================================================== Public Sub carrega_mail() If Not cn.State = adStateOpen Then cn.Open "DSN=inventario" If rs.State = adStateOpen Then rs.Close rs.Open "SELECT descricao FROM mailling WHERE codigo = '" & cbocod.Text & "'", cn If Not rs.EOF Then If IsNull(rs("descricao").Value) Then txtdesc.Text = "" Else txtdesc.Text = rs.Fields.Item(0).Value End If End If If rs.State = adStateOpen Then rs.Close If cn.State = adStateOpen Then cn.Close Set rs = Nothing Set cn = Nothing Exit Sub End Sub ========================================================== Desde já agradeço a atenção!
-
Opa, valeu aí, mas acabei por usar outra solução. - Eu criei um Movieclip de nome e instancia "foto". -Dentro desse MovieClip, eu criei um movie clip vazio para carregar a foto eterna no código: createEmptyMovieClip("foto_1",1); loadMovie("c:/teste 2/misc/1.jpg",foto_1); foto_1._xscale = 20,2; foto_1._yscale = 20,5; -Já no palco principal, ao clicar nesse movie com a foto carregada, a foto em tamanho original e aberta em um anova janela. Usei o código no frame. Ei-lo: foto.onRelease = function(){ getURL("c:/teste 2/misc/1.jpg",_blank); } É isso. Valeu aí!
-
Exportar para .txt dados em um intervalo de datas
pergunta respondeu ao Marco Canhoto de Marco Canhoto em Visual Basic
Opa, consegui resolver o problema! Ficou assim: Open "C:\odonto\" & Format(data1.Value, "dd-mm-yyyy") & " a " & Format(data2, "dd-mm-yyyy") & ".txt" For Output As #1 Por exemplo se eu usar o dia 16/09/2008 no data1 e no data2, logo o programa vai gerar o diretório: C:\odonto\16-09-2008 a 16-09-2008.txt Tive problemas com a barra \ em que o programa trabalha com / . Então eu fiz a rotina replace de "\" para "/". Obrigado! -
Exportar para .txt dados em um intervalo de datas
pergunta respondeu ao Marco Canhoto de Marco Canhoto em Visual Basic
Era isso mesmo Kuroi... E mais umas coisinhas. Ficou assim: ================================================ Private Sub Command1_Click() If Not myCon.State = adStateOpen Then myCon.Open "DSN=odonto" sql = "select date_format(campo1, '%Y-%m-%d') as data1,campo2,campo3 from registro WHERE campo1 between '" & Format(data1, "yyyy-mm-dd") & "' and '" & Format(data2, "yyyy-mm-dd") & "' ORDER BY campo1" ======================================================= Com esse código, ele pode gerar em .txt, .xls, e até em .pps. é só trocar o formato na linha "open "C:\odonto..." Mas para formatos como .pps precisa ter uma configuração, que aí eu já não sei... Agora outra coisa: Na linha Open "C:\root\ArquivoDadosTexto.txt" For Output As #1, Eu não consigo criar uma variável para o nome do arquivo. Por exemplo, eu tentei criar uma variável string de texto e coloquei Open "C:\root\" & variavel & "" For Output As #1, mas ai ele cria o arquivo de nome " & variavel & " !!!! Como faço para que essa linha entenda que deve considerar o texto C:\root\ + a variavel para formar o diretório? Valeu aí! Muito obrigado! -
Olá a todos! Tenho um aaplicação em VB com banco de dados em Mysql. Tenho uma rotina que exporta dados da tabela para um arquivo .txt, porém não consigo fazer essa exportação com dados específicos, no caso entre um intervalo de datas: Uso o código abaixo, mas ele sempre exporta TODOS os dados da tabela. ------------------------------------------------------------------------------------ Private Sub Command6_Click() dim sql as string If Not myCon.State = adStateOpen Then myCon.Open "DSN=odonto" stra = data2.Value strb = data3.Value Open "C:\root\ArquivoDadosTexto.txt" For Output As #1 sql = "SELECT * FROM registro WHERE data1 BETWEEN " & Format(stra, "yyyy-mm-dd") & " AND " & Format(strb, "yyyy-mm-dd") & "" myRS.MoveFirst Do While Not myRS.EOF sql = sql & myRS.Fields(0) & "," sql = sql & myRS.Fields(1) & "," sql = sql & myRS.Fields(2) & "," sql = sql & myRS.Fields(3) & "," sql = sql & myRS.Fields(4) & "," sql = sql & myRS.Fields(5) & "," sql = sql & myRS.Fields(6) & "," sql = sql & myRS.Fields(7) & "," sql = sql & myRS.Fields(8) & "," sql = sql & myRS.Fields(9) & "," sql = sql & myRS.Fields(10) & "," Print #1, sql myRS.MoveNext Loop Close #1 MsgBox "Arquivo gerado com êxito." & Chr(13) _ & "Foram gerados " & myRS.RecordCount & " registros.", vbInformation End Sub ----------------------------------------------------------------------------------------------- O que está errado nesse código? Desde já agradeço a atenção!
-
Olá a todos! Tenho uma tabela no servidor e quero exportar certos dados para um arquivo na minha máquina. Tentei o código: SELECT a,b,a+b INTO OUTFILE "c:/root/result.text" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n" FROM tabela_teste; Mas não consegui. Deu o erro 1045, que é o de acesso negado. Acontece que tenho um programa que é usado por dois usuários em redes diferentes. Então, preciso que um deles exporte os dados para que o outro importe na tabela dele, entendem? Então preciso saber como faço isso. Desde já agradeço a atenção.
-
Eu instalei o driver myodbc e criei uma DSN na fonte de dados ODBC. Lá criei uma fonte chamada odonto, onde eu coloco o nome do server, usuário, senha, etc. Com essa DSN eu me conecto ao banco de dados local. Então só troquei os dados pelos dados do awardspace.com, mas não funcionou. No Awardspace: MySQL hostname = db5.awardspace.com Eu coloco isso no Server da DSN, junto com usuario e senha criados no awardspace, mas não funciona E a String de conexão no programa, eu uso: myCon.Open "DSN=odonto"
-
Bom, eu consegui mudar de banco de dados e me conecto por uma DSN criada nas ferramentas administrativas. Agora, como eu faço para me conctar a um banco de dados na web? Entre no site www.awardspace.com e criei uma conta gratuita que contém um banco de dados mysql. Criei os dados de usuario, senha e o banco de dados. Então eu coloco esses dados nos campos da DSN, mas dá erro de conexão. Como proceder?
-
Boa noite a todos! Tenho um combobox que é preenchido no evento click e que ao escolher um registro na lista, automaticamente preenche mais um text box com dados de outra coluna do banco access. Acontece que preciso usar essa mesma combobox pra cadastrar registros para o mesmo banco de dados que fornece os registros para preenchimento da combobox! Ou seja, tenho de cadastrar os registros para preencherem a combobox pela própria combobox! Usando apenas o comando ado.Recordset.Update, o registro é salvo no banco de dados, porém, tenho de fechar e abrir o formulário para que o novo registro apareça na lista da combobox. Existe uma forma de preencher e atualizar na lista da combobox sem precisar fechar o formulário?? Obrigado!
-
Relatório no DataReport não encontra comando
pergunta respondeu ao Marco Canhoto de Marco Canhoto em Visual Basic
Desculpe a falta da Tag Code. Dá erro aqui no trabalho. E aí? alguém pode me ajudar? Obrigado! -
Boa tarde a todos. Tenho um projeto em VB6 para um consultório odontológico em que, a partir de tabelas diferentes, seja feito um relacionamento em seja impresso os dados. Por exemplo: Eu cadastro um código referente a uma empresa e os demais dados dessa empresa, como paciente, contato, data do antendimento, valor, etc... Usei o comando Shape para o relacionamento e também uma pesquisa por data em que a partir da pesquisa mostre o nome da empresa e os dados referentes a mesma, dentro do periodo pesquisado. Para o formulario de pesquisa (formdata) estou usando dois DTPicker e um botão pra chamar o relatório. No evento Initialize do DataReport, coloqueio seguinte código: Private Sub DataReport_Initialize() 'define as variáveis usadas no projeto Dim strSQL As String Dim strAte As String Dim strInicio As String Dim oConn As New ADODB.Connection Dim oRS As New ADODB.Recordset oConn.CursorLocation = adUseClient 'estou usando a conexão que já foi criada no dataenvironment oConn.ConnectionString = DataEnvironment1.Connection1 'abre a conexão com o banco de dados Norhtwind.mdb em d:\teste oConn.Open 'pega as datas de inicio e de fim With formdata strInicio = .dataini.Value strAte = .datafin.Value End With 'define o titulo do relatório ' DataReport1.Title = "De: " & strInicio & " Até: " & strAte 'define o comando SHAPE strSQL = "SHAPE { " strSQL = strSQL & "SELECT DISTINCT C.* " strSQL = strSQL & "FROM unidades C INNER JOIN registro O ON C.codunidade = O.codunidade " strSQL = strSQL & "WHERE O.data " strSQL = strSQL & "BETWEEN #" & strInicio & "# " strSQL = strSQL & "AND #" & strAte & "# " strSQL = strSQL & "ORDER BY C.descunidade " strSQL = strSQL & "} AS Command1 " strSQL = strSQL & "APPEND ({ " strSQL = strSQL & "SELECT registro.* " strSQL = strSQL & "FROM registro " strSQL = strSQL & "WHERE data " strSQL = strSQL & "BETWEEN #" & strInicio & "# " strSQL = strSQL & "AND #" & strAte & "# " strSQL = strSQL & "} AS Command2 " strSQL = strSQL & "RELATE 'codunidade' TO 'codunidade') " strSQL = strSQL & "AS Command2 " oRS.Open strSQL, oConn, adOpenForwardOnly 'atribui o recordset gerado ao datareport Set DataReport1.DataSource = oRS End Sub------------------------------------------------------------- O problema é que quando eu chamo o relatório aparece o erro DataField 'Command1.codunidade' no found Além do Datareport, uso um data Environment com um Command1 e um Command2 como comando filho. No Command 1 estão os dados da tabela unidades e no Command2 estão os dados da tabela registro, referentes às unidades da primeira tabela. O que pode estar acontecendo? Desde já agradeço a atenção.
-
Pesquisa por caracter ou número
pergunta respondeu ao Marco Canhoto de Marco Canhoto em Visual Basic
Deu certo Kuroi! Funciona certinho! Agora, aproveitando o tópico, Eu construi um DataReport e um Data Environment para um relatório. Como eu faço para imprimir um relatório por data a aprtir de uma pesquisa? Por exemplo: Eu tenho duas textbox, uma de data inicial e a outra de data final. Na data Inicial eu coloco 01/01/2008 e na data final eu coloco 31/01/2008. como faço para que imprima apenas os registros dentro desse intervalo de datas no DataReport? Uma outra coisa que eu não estou conseguindo é criar uma formatação de data na text box como faço? Desde já obrigado pela solução da pesquisa! -
Pesquisa por caracter ou número
pergunta respondeu ao Marco Canhoto de Marco Canhoto em Visual Basic
Bom dia! Eu coloquei o código que você orientou, mas deu o seguinte erro: Run-time error '424': Object Required ----------------------------------------- Depois eu tirei o ".text." e deixei o código da seguinte maneira: ado.Recordset.Find "paciente= ' " & Text1 & " ' " com esse código ele consegue encontrar o registro na primeira pesquisa. quando eu tento pesquisar novamente, me retorna a mensagem de paciente inexistente, como se não houvesse o registro que eu busquei e todos os campo onde apareceriam os dados desse paciente, como data, paciente, unidade, serviço, valor, etc ficam em branco. -
Pesquisa por caracter ou número
pergunta respondeu ao Marco Canhoto de Marco Canhoto em Visual Basic
Então Kuroi, Eu mudei o código como você indicou, mas continua dando o mesmo erro e apontando na linha do ado.Recordset.Find. Na minha tabela, paciente se refere a coluna. Private Sub cmdpaciente_Click() Text1 = InputBox("Informe o nome do paciente", " paciente ") If Text1 = "" Then Exit Sub End If codAnterior = ado.Recordset.Bookmark ado.Recordset.Find " paciente = " & Text1 If ado.Recordset.EOF = True Then MsgBox "paciente inexistente", , "Atenção" ado.Recordset.Bookmark = codAnterior End If End Sub -
Bom dia a todos. Em um projeto no VB6, eu criei um botão para pesquisar dados de uma tabela em access. Eu criei três botões de pesquisa. O primeiro botão pesquisa os dados por data, o segundo por nome e o terceiro por unidade. Abaixo, eis o código que eu coloquei no evento Click do botão: Private Sub cmddata_Click() Text1 = InputBox("Informe a data") If Text1 = "" Then Exit Sub End If codAnterior = ado.Recordset.Bookmark ado.Recordset.Find ("data=") & Text1 If ado.Recordset.EOF = True Then MsgBox "data inexistente", , "Atenção" ado.Recordset.Bookmark = codAnterior End If End Sub --------------------------------------------------------- A questão é que eu criei o mesmo código para a pesquisa por nome, apenas mudei a linha ado.Recordset.Find ("data=") & Text1, para a linha ado.Recordset.Find ("paciente=") & Text1. Só que aparece o seguinte erro: run-time error '3001': Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito. No Debug, aponta para a linha que eu mudei. a coluna paciente da minha tabela está como texto. Será que o erro é porque trata-se de caracter? e com ofaço para pesquisar por caracter, por data ou por número? Desde já agradeço a atenção.