Ir para conteúdo
Fórum Script Brasil

Iceguy

Membros
  • Total de itens

    274
  • Registro em

  • Última visita

Tudo que Iceguy postou

  1. Iceguy

    FORMATAR DATA SEM BARRA

    Vê se isso te inspira =D Sub TestIt() 'Usei Debug.Print que imprime no console, 'pra mostrar ele, aperte CTRL+G Dim dt As String dt = "20/02/2013" Debug.Print dt 'Aqui imprime 20/02/2013 dt = Replace(dt, "/", Empty) Debug.Print dt 'Já aqui imprime 20022013 End Sub
  2. Iceguy

    FORMATA CAMPOS

    Tenta usar isso: Sub CasasDecimais(ByRef valor As String) valor = Replace(valor, ".", ",") If InStr(valor, ",") > 0 Then Dim partes() As String partes = Split(valor, ",") Select Case Len(partes(1)) Case Is < 2: partes(1) = partes(1) * 10 Case Is > 2: partes(1) = Round(CDbl("0," & partes(1)), 2) * 100 End Select valor = partes(0) & "." & partes(1) Else valor = valor & ".00" End If End Sub E como a sub recebe um valor por referência, não precisa retornar nada, ela simplesmente trata a variável passada, daí você chama assim: Call CasasDecimais(valor)
  3. Iceguy

    VBA Excel - Do While Loop

    Acho que parênteses resolve Do While (ActiveCell.Text <> tbxNomeCliente.Text And ActiveCell.Offset(0, 1).Text <> tbxSobrenome.Text And ActiveCell.Offset(0, 2).Text <> tbxNomeObra.Text And contador < 100)
  4. Iceguy

    Duvida recordset

    Continuar com ela aberta assim? Option Compare Database Option Explicit Dim rs As Recordset Public Sub PrintAndGoForward() If rs.BOF Then rs.MoveNext End If If Not rs.EOF Then Debug.Print rs.Fields("Nome") rs.MoveNext Else Debug.Print "Fim da Recordset." End If End Sub Public Sub PrintAndGoBackward() If rs.EOF Then rs.MovePrevious End If If Not rs.BOF Then Debug.Print rs.Fields("Nome") rs.MovePrevious Else Debug.Print "Início da Recordset." End If End Sub Private Function EmptyRecordset() As Boolean EmptyRecordset = False If rs.EOF And rs.BOF Then Debug.Print "Recordset vazia." EmptyRecordset = True End If End Function Public Sub UnloadRecordset() rs.Close Set rs = Nothing Debug.Print "Recordset descarregado." End Sub Public Sub LoadRecordset() Set rs = CurrentDb().OpenRecordset("SELECT Tabela1.Nome FROM Tabela1") If EmptyRecordset Then Call UnloadRecordset Else rs.MoveFirst Debug.Print "Recordset inicializado." End If End Sub Ou reutilizar ela pra outra consulta? Se for é só dar um rs.Close e depois dar um OpenRecordset dnovo
  5. Por que todo esse trabalho com o Access? Por que não intalar o PostgreSQL, que alem de ser open source, corre lado a lado com a Oracle?
  6. Tenta isso: If Request.QueryString("order") = "sort" Then If Request.Cookies("sort")="DESC" Then Response.Cookies("sort") = "ASC" Else Response.Cookies("sort") = "DESC" End If End If
  7. Que tal assim: SELECT Produto.[Data Venda], Sum(Produto.Quantidade * Produto.Preço) as Total, Sum(Produto.Quantidade * Produto.Preço * Produto.Dinheiro) as Dinheiro FROM Produto WHERE Produto.[Data Venda] BETWEEN '2012-12-30' AND '2012-12-31' GROUP BY Produto.[Data Venda]
  8. Eu já faço tudo em VBA, evitando o assistente do Office Aí você cria um parâmetro com o caminho do banco e toda vez ele conecta lá
  9. O certo é uma tabela de entrada e saída, pode ser Estoque por exemplo, com um campo entrada do tipo Sim/Não, aí nele se for sim é entrada e não é saída Por exemplo Produto / Qtde / NF / Entrada P125A / 25 / 5927 / Sim <- Aqui eu comprei 25 produtos do fornecedor com a NF 5927 P125A / 2 / 137 / Não <- Aqui eu vendi 2 produtos com a NF 137 E pra tirar o balanço do estoque você busca assim SELECT Produto, Sum( iif(Entrada = TRUE, Qtde, Qtde * (-1))) As Saldo FROM Estoque GROUP By Produto; Aí pra lançar no estoque você dá um insert assim INSERT INTO Estoque(Produto, Qtde, NF, Entrada) VALUES(@Produto, @Qtde, @NF, @Entrada) colocando @Entrada = TRUE pra entradas de produtos e @Entrada = FALSE pra saída de produtos Coloquei @nomeDoCampo que na hora de inserir você troca pelo valor, ou usando consulta parametrizada ou "no braço" mesmo
  10. arrasta o campo SaiPai_Codigo e solta em cima do campo Parc_CodNotaFiscal Aí aparece uma linha em cima, clica 2x nela e aparecem opções, daí ali você edita
  11. cpf não deveria ser uma chave? Só existir 1 registro por cpf no seu cadastro? Se não, posso cadastrar cpf 000.000.000-00 para o cliente josé da silva, e posso criar outro com o cpf 000.000.000-00 para o cliente joão de oliveira. Isso gera inconsistência de dados Oo E quanto ao formulário, você faz com o asistente do office, e ao digitar o cpf ele traz tudo. Ou usa a SQL SELECT C.nome, C.cpf, C.rg, C.foto, C.etc FROM cadastro AS C WHERE C.cpf = Formulários!nomeDoForm.nomeDoCampo.text e carrega o formulário
  12. O próprio nome já diz: Porcento > por cento > dividido por um cento então você precisa dividir o seu '10' por cento, daí fica 0,1 depois você soma nota final com 10% da nota final, ou seja, nota final + nota final * 0,1 OU nota final + nota final * 10/100 Para acrescentar 10% ao valor você usa o código assim: $nota = $notaf + round($notaf * $porcentagem / 100, 2) Usei o round() que é para arredondar o valor. Ele funciona assim: round(valor, precisão) ex: round(3.179, 2) //resultado será 3.18 round(3.426) //Por padrão a precisão é 0, então fica 3 round(126139, -3) //resultado será 126000 Espero ter ajudado
  13. Opa! Um mês depois, já acabaram as eleições ahauhauaha, mas quem sabe seja útil para a próxima. Primeiro, não há necessidade de criar as tabelas e2000, e2004, e2008 e e2012, basta criad uma tabela, eleicao por exemplo, e nela um campo com o ano. Na tabela de dados você cria um campo PK (Chave primária) com um código identificando o candidato. Depois na tabela eleicao você vai inserindo registros referente aos resultados das eleições, lembrando de usar uma FK (Chave estrangeira) vinculando o candidato ao dado da eleição. Depois, na consulta você faz assim: Se quiser que venha algo como NOME, PARTIDO, NUMERO, ANO, VOTOS JOSÉ DA SILVA, PTESTE, 99999, 2000, 150 JOSÉ DA SILVA, PTESTE, 99999, 2004, 168 ETC... Use uma consulta assim: SELECT D.nome, E.partido, E.numero, E.ano, E.votos FROM dados AS D LEFT JOIN eleicao AS E ON(D.cod = E.cod); Se quiser que venha algo como: NOME, PARTIDO, NUMERO, 2000, 2004, 2008, 2012 JOSÉ DA SILVA, PTESTE, 99999, 150, 168, 201, 259 JOÃO DA SILVA, PTESTE2, 98111, 102, 130, 98, 302 ETC... Use uma consulta assim: SELECT D.nome, E.partido, E.numero, SUM(IIF(E.ano = 2000, E.votos, 0)) AS 2000, SUM(IIF(E.ano = 2004, E.votos, 0)) AS 2004, SUM(IIF(E.ano = 2008, E.votos, 0)) AS 2008, SUM(IIF(E.ano = 2012, E.votos, 0)) AS 2012 FROM dados AS D LEFT JOIN eleicao AS E ON(D.cod = E.cod) GROUP BY D.nome, E.partido, e.numero;
  14. Podia ter continuado o tópico anterior, nã havia necessidade de abrir outro, afinal de contas o assunto é o mesmo, não é? Tenta algo como SUM(IIF([RESPOSTA] IN ('S','TS') AND DataREFERENCIA BETWEEN DATEADD('m',-2,DataREFERENCIA) AND DataREFERENCIA,1,0)) *Não testei
  15. Como assim? Você precisa de quantos meses nessa soma? três? Pode tentar isso aqui SELECT SUM(IIF(chave = 'sim',1,0)) AS Soma FROM tabela WHERE data BETWEEN DATEADD('m', -2, FORMAT([Qual o ano e mês? no formato aaaa/mm], 'yyyy/mm')) AND FORMAT([Qual o ano e mês? no formato aaaa/mm], 'yyyy/mm') ;
  16. Iceguy

    Períodos sobrepostos

    Eu quero colocar na tabela a regra para não deixar haver sobreposição de períodos. A lógica funciona com valores fixos, o problema está somente em diferenciar o dado já gravado com o dado que está sendo inserido, e outro problema é que só posso usar ACCESS para isso. No CHECK ali, eu queria que o "inicio" fosse o dado sendo inserido, e o "meta.inicio" fosse o dado da tabela (já gravado). Já tentei trocar "FROM meta" por uma subselect com outro nome, mas CHECK não permite subselect. TRIGGER não funciona no MSAccess, a não ser que você mude para ADP, porém com isso ele roda no SQL Server :/ Estou tentando com STORED PROCEDURE. Ah, e é WHERE meta.codigoIndicador = codigoIndicador AND inicio BETWEEN meta.inicio AND meta.fim OR fim BETWEEN meta.inicio AND meta.fim
  17. Iceguy

    Períodos sobrepostos

    Olá, fiz um MDB em Access, mudei pra ANSI-92 e comecei a criá-lo. Nas validações encontrei um problema, no meu banco estou colocando uma tabela com metas. Cada indicador tem a sua e ela vale por um período. Como faço um CHECK que verifique se a data inserida no início e no final do período não esteja contido por outro período? teria que ser algo +- assim: ALTER TABLE meta ADD CONSTRAINT chk_periodoSobreposto CHECK ( 'OPA!' NOT IN ( SELECT 'OPA!' AS result FROM meta WHERE meta.codigoIndicador = codigoIndicador /*Aqui da problema porque ele compara com ele mesmo*/ AND inicio BETWEEN meta.inicio AND meta.fim /*Aqui da problema porque ele compara com ele mesmo*/ AND fim BETWEEN meta.inicio AND meta.fim /*Aqui da problema porque ele compara com ele mesmo*/ ) ) Se eu colocar um valor fixo alí onde ta dando problema ele funciona. Alguma ideia de como resolver isso sem validar na aplicação?
  18. Iceguy

    Períodos sobrepostos

    Olá, fiz um MDB em Access, mudei pra ANSI-92 e comecei a criá-lo. Nas validações encontrei um problema, no meu banco estou colocando uma tabela com metas. Cada indicador tem a sua e ela vale por um período. Como faço um CHECK que verifique se a data inserida no início e no final do período não esteja contido por outro período? teria que ser algo +- assim: ALTER TABLE meta ADD CONSTRAINT chk_periodoSobreposto CHECK ( 'OPA!' NOT IN ( SELECT 'OPA!' AS result FROM meta WHERE meta.codigoIndicador = codigoIndicador /*Aqui da problema porque ele compara com ele mesmo*/ AND inicio BETWEEN meta.inicio AND meta.fim /*Aqui da problema porque ele compara com ele mesmo*/ AND fim BETWEEN meta.inicio AND meta.fim /*Aqui da problema porque ele compara com ele mesmo*/ ) ) Se eu colocar um valor fixo alí onde ta dando problema ele funciona. Alguma ideia de como resolver isso sem validar na aplicação?
  19. Você ta confundindo access com excel. Você tem uma tabela só com dados, e o campo mês, depois pra buscar só o mês de dezembro, faz um select from tabela where mes = 'Dezembro'
  20. Iceguy

    like e between juntos?

    tira o '% do começo e o %' do fim, se é número não precisa de aspas
  21. Iceguy

    Banco de dados

    Pesquise sobre chaves primárias/compostas, chaves estrangeiras e coisa do tipo É tipo assim, em um banco de dados uma chave é um valor único da tabela, por exemplo: Em uma tabela de funcionários, o campo matrícula é uma chave primária, então não podem existir 2 funcionários com a mesma matrícula. No seu caso é um cadastro de clientes né? Único campo ali que vi que não pode ser repetido é e-mail (talvez número, mas não sei a finalidade dele). então na sua tabela, seleciona o campo e-mail e coloca como chave primária. E na consulta você coloca "SELECT 1 FROM clientes_chefe WHERE clientes_chefe.email = '" & email "'". Daí se o e-mail for encontrado ele retorna 1, se não vem RS vazia.
  22. Iceguy

    Banco de dados

    No banco de dados sua tabela tem chave(s) e é por elas que você precisa buscar SELECT algumCampo FROM tabela WHERE chave1 = valorChave1 AND chave2 = valorChave2 AND chaveN = valorChaveN aí testa com 'Supondo que sua recordset é rs if rs.BOF And rs.EOF Then sqlstr = "INSERT INTO..." else 'Faz a pergunta 'se resposta = sim sqlstr = "UPDATE..." end if
  23. Iceguy

    Insert... não sei fazer

    tem 3 campos (cod, nome, idade) e 2 valores ('cesar', 24) Ah, e pra texto use aspas simples (') ou 2x aspas duplas (""), daí ficaria ""cesar"" ou 'cesar'
  24. Iceguy

    Imprimir registros

    Na gambiarra, pode colocar assim: WHERE codigo IN ([Digite os códigos separados por vírgulas]) Aí tudo que tiver nos valores ele traz
  25. static??? Lógico que se o cara vazar sem utilizar os métodos de logoff fica um fantasma lá dentro né, mas você resolve isso com verficação a cada x tempo
×
×
  • Criar Novo...