Ir para conteúdo
Fórum Script Brasil

Macêdo

Membros
  • Total de itens

    303
  • Registro em

  • Última visita

Tudo que Macêdo postou

  1. Pessoal, preciso fazer um insert into numa tabela do BD Access com dados de uma plan Excel que possui 98 colunas, as quais são as mesmas do BD access (98 campos com os mesmos nomes dos cabeçalhos das colunas excel) a planilha é padrão. Tem como passar este insert sem ter que listar campo a campo ? pois sempre faço da seguinte forma: Private Sub inserir() With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = "insert into dependentes " & _ "(cod, matricula, cpf, nome, rg, nascimento, cod_socio) values (" & _ vCod_dependente & ",'" & _ Text_cod & "', '" & _ Text_cpf & "','" & _ Text_nome & "','" & _ Text_rg & "','" & _ Text_nascimento & "'," & _ vCod_socio & ");" .Execute End With End Sub Imagina fazer isto com 98 campos ? quanto a quantidade de linhas não teria problema, pois colocaria apenas um FOR NEXT para ir inserindo linha a linha da planilha, o problema é mesmo a quantidade de Colunas(Excel) = Quantidade de Campos (BD)
  2. Como ta preenchendo o datagrid ? qual o codigo? a melhor forma de fazer isto é trazendo o somatório direto na SQL: Select sum(valor) as total from tabela textbox = rs!total
  3. Valeu Kuroi, show de bola este arquivo...
  4. Você pode por FOR NEXT indica uma variavel com o valor = 1 e até a quantidade que quiser inserir no BD então até que a variavel alcance o valor o codigo de inserir os dados no BD se repetirá, exemplo: 'inseri duas vezes o registro Dim x As Integer For x = 1 To 2 codigo para inserir Next x 'inseri dez vezes o registro Dim x As Integer For x = 1 To 10 codigo para inserir Next x
  5. Pessoal como faço para criar tabelas e campos num BD Access ? consegui muito pouco com o codigo: sSQl = "CREATE TABLE tabela (cod integer, nome text(150));" cnn.Execute sSQl cnn.Close Apenas criei uma tabela e alguns campos, mas gostaria de uma rotina para verificar se um certo nome de tabela já existe, se não existir, cria a tabela com o nome que virá de uma variavel e tambem os campos Agradeço desde já
  6. Como está gerando seu relatorio, usando um dataenvironment ou jogando os dados de um recordset direto no datareport ?
  7. Macêdo

    Visual Basic Excel

    Coloque seu codigo no evento MouseMove ao invés de colocar no evento Click
  8. Caro Jhowcs Utilize nestes casos os SubProcedimentos, pois poderá chamá-los em qualquer evento, ou seja, não coloque o codigo a ser executado pelo Click de um Botão no Clik do Botão, Crie um Procedimento e o chame no Click do Botão, Exemplo: Não faça assim Private Sub Command1_Click() MsgBox "Aqui tem um codigo para inserir dados num banco de dados" End Sub Faça Assim Private Sub Inserir() MsgBox "Aqui tem um codigo para inserir dados num banco de dados" End Sub Private Sub Command1_Click() Inserir End Sub Vamos a sua QUESTÃO Você criando um procedimento da forma acima, poderá chamá-lo no click da Toolbar ou quando teclar F1 ou F2 ou qualquer outra tecla: Exemplo Dois procedimentos Private Sub test1() MsgBox "Veja o primeiro procedimento sendo executado" End Sub Private Sub test2() MsgBox "Veja o segundo procedimento sendo executado" End Sub Veja agora o código para efetuar os codigos acima na Toolbar: Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Index Case 1 test1 Case 2 test2 End Select End Sub E Agora para executar os mesmos codigos teclando F1 e F2 (Obs: Coloque a propriedade Keypreview do FORM = TRUE) Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 112 Then '112 = F1 test1 ElseIf KeyCode = 113 Then '113 = F2 test2 End If End Sub
  9. Macêdo

    Dúvida de VBA Excel

    Beto O código que você fez abre a pasta para ser atualizada ? isto não precisa necessariamente acontecer, e pelo visto é isto que você quer, mas poste seu codigo para darmos uma olhada, assim passaremos a dica melhor ou daremos a sugestão melhor para alterar seu codigo
  10. Macêdo

    CALCULO COM HORA

    Um exemplo: Private Sub Form_Load() Dim t As Date Dim t1 As Date Dim t2 As Date t = "23:50:17" t1 = "17:57:15" t2 = t - t1 Text1.Text = t Text2.Text = t1 Text3 = t2 End Sub Beleza?
  11. Kuroi, obrigado vou testar seu código depois, pois estou começando no VB.NET agora e dá forma que comecei a escrever o código está mais claro para mim, este seu código eu teria que mudar o codigo por completo...mas com certeza irei estudá-lo mais tarde. Tenho que estudar bastante ainda para tirar duvidas do que é um DATASET, um DATATABLE, um DATAADAPTER, um DATAREADER...só o COMMAND e o CONNECTION que acho que posso entender como os mesmo que usava na ADO, sinto falta do RECORDSET hehehehe Denis, seguindo sua dica acrescentei a linha DataGridView1.Columns.Item(6).DefaultCellStyle.Format = "dd/mm/yyyy" Mas a data esta aparecendo o DIA e o ANO certo, porem o Mês aparece 00, assim: 01/00/1981, outra 05/00/1977 Quando altero o codigo, trocando o mês de local, para este: DataGridView1.Columns.Item(6).DefaultCellStyle.Format = "mm/dd/yyyy" A data aparece o DIA e o ANO certo, porem o Mês continua a aparecer 00, assim: 00/01/1981, outra 00/05/1977 Tem uma saida pra isto ? Agradeço desde já ...
  12. Dim DBConnect As New ADODB.Connection Dim RecSet As New ADODB.Recordset Dim Cmd As New ADODB.Command Private Sub Command1_Click() DBConnect.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=teste; User=root;Password=teste;Option=3;" With Cmd .ActiveConnection = DBConnect .CommandType = adCmdText .CommandText = "select NOME_CLI, CPF_CNPJ_CLI, CIDADE_CLI, UF_CLI, PESSOA_CLI, EMAIL_CLI from cliente where CODIGO_CLI = " & txtCodigo.Text & " " Set RecSet = .Execute End With With RecSet textnome = !nome_cli txtCPFCNPJ = !CPF_CNPJ_CLI txtCidade = !CIDADE_CLI txtUF = !UF_CLI txtPessoa = !PESSOA_CLI txtEmail = !EMAIL_CLI End With End Sub
  13. Eu costumo fazer assim: With RecSet textnome = !nome_cli txtCPFCNPJ = !CPF_CNPJ_CLI txtCidade = !CIDADE_CLI txtUF = !UF_CLI txtPessoa = !PESSOA_CLI txtEmail = !EMAIL_CLI End With
  14. Bom pessoal, até que achei outros tópicos com esta mesma duvida, porém a resolução no meu projeto não deu certo... Vejam como estou preenchendo o DataGridView com os dados de minha Tabela, porém o campo (Nascimento) , que é data, quero formatá-lo para "dd/mm/yyyy" mas não estou conseguindo: Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Text_nome.TextChanged If Text_nome.Text <> "" Then 'joga os dados da tabela no DataGridView Dim ds As New DataSet() Dim da As New OleDb.OleDbDataAdapter("select cod, nome, cpf, RG, telefone, celular, nascimento, endereco from clientes where nome like '" & Text_nome.Text & "%'", cnn) Dim dt As New DataTable da.Fill(dt) 'carrega o datagridview com os dados do datatable DataGridView1.DataSource = dt 'modo para selecionar linha inteira DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect 'bloqueia edição DataGridView1.ReadOnly = True 'Nome das colunas DataGridView1.Columns.Item(0).HeaderText = "Código" DataGridView1.Columns.Item(1).HeaderText = "Nome" DataGridView1.Columns.Item(2).HeaderText = "CPF" DataGridView1.Columns.Item(3).HeaderText = "RG" DataGridView1.Columns.Item(4).HeaderText = "Telefone" DataGridView1.Columns.Item(5).HeaderText = "Celular" DataGridView1.Columns.Item(6).HeaderText = "Nascimento" DataGridView1.Columns.Item(7).HeaderText = "Endereço" 'colunas com expansão para o tamanho do texto DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells End If End Sub
  15. Primeiro uma pergunta, neste Txtcodigo já possui um numero ? pois você está colocando o codigo no evento Form_Load, ou seja, será que quando ocorre o Load do Form o TxtCodigo não está EM BRANCO ? o que pode estar gerando o erro devido a busca de dados iguais ao campo codigo = BRANCO ? entendeu ? Outra Pergunta hehehe: Em seu select você não colocou o campo código antes do from só após o Where, isto também gera erro, certo ? Caso não seja isto ... Quer fazer um teste ?...vamos lá 'No General Declarations Dim DBConnect As New ADODB.Connection Dim RecSet As New Recordset Dim Cmd as New ADODB.Command Dim StrSql As String Dim i As Integer Private Sub Form_Load() DBConnect.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=teste; User=teste;Password=teste;Option=3;" With cmd .ActiveConnection = DBConnect .CommandType = adCmdText .CommandText = "select CODIGO_CLI, NOME_CLI, CPF_CNPJ_CLI, CIDADE_CLI, UF_CLI, PESSOA_CLI, EMAIL_CLI from cliente where CODIGO_CLI =" & txtCodigo.Text & "" Set RecSet = .Execute End With End Sub
  16. Macêdo

    StatusBar VB 6

    você pode usar o Form_load para quando o Formulario for carregado lançar o nome do usuário no Painel da Statusbar, assim: Private Sub Form_Load() StatusBar1.Panels(1).Text = "Usuário Logado" End Sub
  17. Rapaz, a solução para esta questão e muitas outras iguais eu sou grato ao Kuroi até hoje, pois depois que ele me passou este código utilizo sempre, veja: Primeiro você faz o select completo e depois faz o filtro apenas com as informações caso elas existam: 'declare o recordset no general Dim cmd As New ADODB.Command Dim rs as New ADODB.Recordset Private Sub Form_Load() 'selecione a tabela toda With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = "select * from tabela" Set rs = .Execute End With End Sub 'depois faça o filtro com as condições Private Sub filtros() Dim strFiltro As String strFiltro = "" If Text1 <> Empty Then strFiltro = strFiltro & IIf(strFiltro <> "", " And ", "") & "campo1 Like '" & Text1 & "'" End If If Text2 <> Empty Then strFiltro = strFiltro & IIf(strFiltro <> "", " And ", "") & "campo2 Like '" & Text2 & "'" End If If Text3 <> Empty Then strFiltro = strFiltro & IIf(strFiltro <> "", " And ", "") & "campo3 Like '" & Text3 & "'" End If If Text4 <> Empty Then strFiltro = strFiltro & IIf(strFiltro <> "", " And ", "") & "campo4 Like '" & Text4 & "'" End If If Text5 <> Empty Then strFiltro = strFiltro & IIf(strFiltro <> "", " And ", "") & "campo5 Like '" & Text5 & "'" End If 'efetua o filtro em quantos forem os parâmetros passados para o Recordset rs.Filter = strFiltro End Sub Obrigado novamente KUROI!
  18. este erro está na instrução SQL, normalmente este erro aparece quando falta ou sobra uma Aspa Dupla ou Simples, coisas deste tipo. Verifique novamente sua instrução SQL com calma, olhando os detalhes. Me desculpe se não for o caso mas, depois que você colocou o Select e o nome dos campos não está mostrando neste codigo o final "FROM TABELA" informando a tabela que você está fazendo o select. tem mais alguma coisa no codigo que você não postou?
  19. Vamos com este código incrementar numa coluna do datagrid uma ListBox, que dará opções de alteração no Banco de Dados, para isto vamos precisar fazer referencia à Biblioteca Microsoft ActiveX Data Objects 2.8 Library, pois iremos utilizar ADO para interagir com o BD, para isto va ao menu Project\References e na caixa de dialogo escolha "Microsoft ActiveX Data Objects 2.8 Library" Para começar teremos que criar um BD com nome "BD" e uma tabela de nome "TABELA" com os seguintes campos: COD NOME PAGO PAGAMENTO Após criado o banco insira alguns registros nele, ex: COD = 1 NOME = MACEDO PAGO = SIM PAGAMENTO = CHEQUE COD = 2 NOME = KUROI PAGO = SIM PAGAMENTO = CARTÃO Agora no Form insira um Controle DataGrid e uma ListBox Deixe a propriedade VISIBLE da List = FALSE Agora pode copiar todo o código abaixo e executar sua aplicação, mas após ver o que acontece não deixe de estudar o código, pois o fiz todo comentado para ser estudado: No General Declarations: 'declarando objetos necessarios Dim cnn As New ADODB.Connection 'conexão Dim cmd As New ADODB.Command 'command Dim rs As New ADODB.Recordset 'recordset Const indice_da_coluna = 3 'coluna onde será mostrada 'a listbox com itens para alterar o BD No restante do FORM: Private Sub conectar() 'String de conexão cnn.ConnectionString = "provider = microsoft.jet.oledb.4.0;" & _ "data Source = " & App.Path & "\BD.mdb;" cnn.CursorLocation = adUseClient cnn.Open End Sub 'carrega o rs com dados da tabela Private Sub carrega_rs() With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = "select * from tabela" Set rs = .Execute End With End Sub 'preenche o datagrid com os dados do RS Private Sub preenche_datagrid() With rs Set DataGrid1.DataSource = rs DataGrid1.MarqueeStyle = dbgHighlightRowRaiseCell 'codigo abaixo lança a lisbox na coluna DataGrid1.Columns(indice_da_coluna).Button = True End With End Sub Private Sub lista() 'carrega a listbox com os itens With List1 .AddItem "CHEQUE" .AddItem "DINHEIRO" .AddItem "CARNÊ" .AddItem "BOLETO" .AddItem "CARTÃO" End With End Sub Private Sub Form_Load() conectar 'conecta com o banco, abre a conexão carrega_rs 'carrega o recordset preenche_datagrid 'popula o datagrid lista 'carrega o listbox com os itens End Sub 'mostra a lista na coluna selecionada Private Sub DataGrid1_ButtonClick(ByVal ColIndex As Integer) Dim coluna As Column If indice_da_coluna = indice_da_coluna Then Set coluna = DataGrid1.Columns(indice_da_coluna) With List1 .Left = DataGrid1.Left + coluna.Left .Top = DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + DataGrid1.RowHeight .Width = coluna.Width + 15 .ListIndex = 0 .Visible = True .ZOrder 0 .SetFocus End With End If End Sub Private Sub List1_dblClick() 'altera o registro da tabela para o valor selecionado 'na listbox With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = " update TABELA set " & _ " PAGAMENTO = '" & List1.Text & "'" & _ "where cod = " & DataGrid1.Columns.Item(0) & ";" .Execute End With List1.Visible = False carrega_rs preenche_datagrid End Sub 'limpa o cmd e rs ao fechar o form Private Sub Form_Unload(Cancel As Integer) Set cmd = Nothing Set rs = Nothing End Sub O que acontece: ao clicar nas linhas da coluna PAGAMENTO abre-se a List com os itens, e dando duplo click na list a celula do Datagrid assume o novo valor pois o BD foi alterado no registro e campo correspondente
  20. Macêdo

    Banco de dados

    Enviei uma apostila, fica ligado, pois seu e-mail pode fazer como o meu que muitas vezes recebo algo do pessoal dos foruns e os e-mais acabam indo para a pasta LIXO ELETRONICO e eu acabo sem ver.
  21. Macêdo

    Banco de dados

    Rapa pega apostilas na net mesmo, no apostilando tem ótimas apostilas, muitas vezes encontramos livros mesmo em PDF. Todos os meus trabalhos em Visual Basic 6, são ligados via propriedades a um banco de dados do access, pois não sei ligá-los via códigos. Você quis dizer que usa controles de acesso certo? como DATA, ADODC, DataEnvironment é isso? Qual o Banco de dados que vocês me aconselham a aprender a usar? Para iniciar nada melhor que o Access, depois pode pular para o FireBird ou MySQL, mas começa com o Access mesmo. Como vocês fazem as ligações dos bancos de dados de vocês? Sql? Sempre, SQL para tudo com ADO Quais livros vocês me indicam para eu trabalhar com banco de dados no VB6? Tenho ótimas apostilas para se aprender a fazer tudo corretamente com código, sem uso de controles vinculados como DATA ou ADODC, posso te passar. Ainda se usa o VB6 ou estou começando a aprender errado? Com certeza, olha só a quantidade de foruns na net! Para começar da uma olhada em tutorias e dicas, pois tentei passar justamente o inicio da coisa, desde a ligação com banco até INCLUSÕES, ALTERAÇÔES, CONSULTAS e uso de alguns controles. Conexão: http://scriptbrasil.com.br/forum/index.php?showtopic=103750 Trabalhar com o BD http://scriptbrasil.com.br/forum/index.php?showtopic=115960 Consultas: http://scriptbrasil.com.br/forum/index.php?showtopic=115992 Dá uma olhada...
  22. Macêdo

    Data Report

    Assim: DataReport1.Sections("Section4").Controls.Item("Label_periodo").Caption = "No período de " & Text_data_inicial & " a " & Text_data_final Neste caso o NAME do Label no DataReport é Label_periodo, altere As text's do Form são: Text_data_inicial e Text_data_final, altere
  23. Private Sub Form_Load() Dim preco1 As Single Dim preco2 As Single Dim preco3 As Single Dim preco4 As Single Dim preco5 As Single Dim media As Single Dim resposta As String Dim show As Single Do While resposta = s preco1 = InputBox("digite o preço 1") preco2 = InputBox("digite o preço 2") preco3 = InputBox("digite o preço 3") preco4 = InputBox("digite o preço 4") preco5 = InputBox("digite o preço 5") media = Val(preco1) + Val(preco2) + Val(preco3) + Val(preco4) + Val(preco5) / 5 resposta = MsgBox("deseja continuar?", vbYesNo + vbQuestion, "Continuar") If resposta = vbYes Then Loop else exit sub end if End Sub Pode estar no lugar errado, mas para saber se clicou em sim ou não é desta forma colega...
  24. você pode usar o DataReport sem usar o controle DataEnvironment, é bem melhor, dá uma procurada lá nas dicas, coloquei uma que mostra como fazer.
  25. "estou usando isso no lost focus sera a melhor opcao?" Outra coisa que também depende do modo do seu programa se tipo for para aparecerem porcentagens e calculos conforme o cliente queira então o cliente digitaria em text's ou escolheria algo em combos e num click dum botão os calculos seriam executados através de Select's no BD ou ainda poderiam aparecer logo com o Form_Load buscando dados no BD, calculando e lançando em controles como Datagrid's ou textbox para ficarem visiveis.
×
×
  • Criar Novo...